60806040526001600f556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250601090816200004f91906200071c565b5073ded5c1b36df43e64385277667ad6c6a7a3ffe295601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000b257600080fd5b506040518060400160405280601081526020017f5269706d617320566f69647361756365000000000000000000000000000000008152506040518060400160405280600681526020017f5249504d4153000000000000000000000000000000000000000000000000000081525081600090816200013091906200071c565b5080600190816200014291906200071c565b50505062000165620001596200022760201b60201c565b6200022f60201b60201c565b6040518060800160405280605981526020016200465860599139600d90816200018f91906200071c565b506000600b819055506045600c819055506103e8600e60006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555062000221601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a90046bffffffffffffffffffffffff16620002f560201b60201c565b6200091e565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003056200049860201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200035d906200088a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003cf90620008fc565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200052457607f821691505b6020821081036200053a5762000539620004dc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000565565b620005b0868362000565565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005fd620005f7620005f184620005c8565b620005d2565b620005c8565b9050919050565b6000819050919050565b6200061983620005dc565b62000631620006288262000604565b84845462000572565b825550505050565b600090565b6200064862000639565b620006558184846200060e565b505050565b5b818110156200067d57620006716000826200063e565b6001810190506200065b565b5050565b601f821115620006cc57620006968162000540565b620006a18462000555565b81016020851015620006b1578190505b620006c9620006c08562000555565b8301826200065a565b50505b505050565b600082821c905092915050565b6000620006f160001984600802620006d1565b1980831691505092915050565b60006200070c8383620006de565b9150826002028217905092915050565b6200072782620004a2565b67ffffffffffffffff811115620007435762000742620004ad565b5b6200074f82546200050b565b6200075c82828562000681565b600060209050601f8311600181146200079457600084156200077f578287015190505b6200078b8582620006fe565b865550620007fb565b601f198416620007a48662000540565b60005b82811015620007ce57848901518255600182019150602085019450602081019050620007a7565b86831015620007ee5784890151620007ea601f891682620006de565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000872602a8362000803565b91506200087f8262000814565b604082019050919050565b60006020820190508181036000830152620008a58162000863565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000620008e460198362000803565b9150620008f182620008ac565b602082019050919050565b600060208201905081810360008301526200091781620008d5565b9050919050565b613d2a806200092e6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de578063b88d4fde11610097578063cef6d36811610071578063cef6d36814610435578063e985e9c514610466578063f2fde38b14610496578063fac333ac146104b257610173565b8063b88d4fde146103cd578063bb58b204146103e9578063c87b56dd1461040557610173565b80636352211e1461030b57806370a082311461033b578063715018a61461036b5780638da5cb5b1461037557806395d89b4114610393578063a22cb465146103b157610173565b806323b872dd1161013057806323b872dd1461024c5780632a55205a146102685780632d5537b01461029957806342842e0e146102b757806345aeefde146102d357806355f804b3146102ef57610173565b806301ffc9a71461017857806306fdde03146101a8578063081812fc146101c6578063095ea7b3146101f6578063159eb89c1461021257806318160ddd1461022e575b600080fd5b610192600480360381019061018d919061243b565b6104e2565b60405161019f9190612483565b60405180910390f35b6101b06104f4565b6040516101bd919061252e565b60405180910390f35b6101e060048036038101906101db9190612586565b610586565b6040516101ed91906125f4565b60405180910390f35b610210600480360381019061020b919061263b565b61060b565b005b61022c600480360381019061022791906126bf565b610722565b005b610236610818565b60405161024391906126fb565b60405180910390f35b61026660048036038101906102619190612716565b610829565b005b610282600480360381019061027d9190612769565b610889565b6040516102909291906127a9565b60405180910390f35b6102a1610a73565b6040516102ae919061252e565b60405180910390f35b6102d160048036038101906102cc9190612716565b610b01565b005b6102ed60048036038101906102e891906127d2565b610b21565b005b61030960048036038101906103049190612934565b610c27565b005b61032560048036038101906103209190612586565b610cb6565b60405161033291906125f4565b60405180910390f35b610355600480360381019061035091906127d2565b610d67565b60405161036291906126fb565b60405180910390f35b610373610e1e565b005b61037d610ea6565b60405161038a91906125f4565b60405180910390f35b61039b610ed0565b6040516103a8919061252e565b60405180910390f35b6103cb60048036038101906103c691906129a9565b610f62565b005b6103e760048036038101906103e29190612a8a565b610f78565b005b61040360048036038101906103fe9190612bd5565b610fda565b005b61041f600480360381019061041a9190612586565b61109c565b60405161042c919061252e565b60405180910390f35b61044f600480360381019061044a9190612586565b611146565b60405161045d9291906127a9565b60405180910390f35b610480600480360381019061047b9190612c1e565b61119b565b60405161048d9190612483565b60405180910390f35b6104b060048036038101906104ab91906127d2565b61122f565b005b6104cc60048036038101906104c79190612586565b611326565b6040516104d99190612c7b565b60405180910390f35b60006104ed82611354565b9050919050565b60606000805461050390612cc5565b80601f016020809104026020016040519081016040528092919081815260200182805461052f90612cc5565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b6000610591826113ce565b6105d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c790612d68565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061061682610cb6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067d90612dfa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106a561143a565b73ffffffffffffffffffffffffffffffffffffffff1614806106d457506106d3816106ce61143a565b61119b565b5b610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a90612e8c565b60405180910390fd5b61071d8383611442565b505050565b61072a61143a565b73ffffffffffffffffffffffffffffffffffffffff16610748610ea6565b73ffffffffffffffffffffffffffffffffffffffff161461079e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079590612ef8565b60405180910390fd5b80600e60006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550610815601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a90046bffffffffffffffffffffffff166114fb565b50565b6000610824600a611690565b905090565b61083a61083461143a565b8261169e565b610879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087090612f8a565b60405180910390fd5b61088483838361177c565b505050565b6000806000600960008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610a1e5760086040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610a286119e2565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610a549190612fd9565b610a5e919061304a565b90508160000151819350935050509250929050565b60108054610a8090612cc5565b80601f0160208091040260200160405190810160405280929190818152602001828054610aac90612cc5565b8015610af95780601f10610ace57610100808354040283529160200191610af9565b820191906000526020600020905b815481529060010190602001808311610adc57829003601f168201915b505050505081565b610b1c83838360405180602001604052806000815250610f78565b505050565b610b2961143a565b73ffffffffffffffffffffffffffffffffffffffff16610b47610ea6565b73ffffffffffffffffffffffffffffffffffffffff1614610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9490612ef8565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c24601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a90046bffffffffffffffffffffffff166114fb565b50565b610c2f61143a565b73ffffffffffffffffffffffffffffffffffffffff16610c4d610ea6565b73ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90612ef8565b60405180910390fd5b80600d9081610cb29190613227565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d559061336b565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce906133fd565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e2661143a565b73ffffffffffffffffffffffffffffffffffffffff16610e44610ea6565b73ffffffffffffffffffffffffffffffffffffffff1614610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190612ef8565b60405180910390fd5b610ea460006119ec565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610edf90612cc5565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0b90612cc5565b8015610f585780601f10610f2d57610100808354040283529160200191610f58565b820191906000526020600020905b815481529060010190602001808311610f3b57829003601f168201915b5050505050905090565b610f74610f6d61143a565b8383611ab2565b5050565b610f89610f8361143a565b8361169e565b610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90612f8a565b60405180910390fd5b610fd484848484611c1e565b50505050565b610fe261143a565b73ffffffffffffffffffffffffffffffffffffffff16611000610ea6565b73ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612ef8565b60405180910390fd5b60005b8151811015611098576110858282815181106110785761107761341d565b5b6020026020010151611c7a565b80806110909061344c565b915050611059565b5050565b60606110a7826113ce565b6110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd906134e0565b60405180910390fd5b60006110f0611cee565b90506000815111611110576040518060200160405280600081525061113e565b8061111a84611d80565b601060405160200161112e939291906135bf565b6040516020818303038152906040525b915050919050565b600080611151610ea6565b612710600e60009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16856111889190612fd9565b611192919061304a565b91509150915091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61123761143a565b73ffffffffffffffffffffffffffffffffffffffff16611255610ea6565b73ffffffffffffffffffffffffffffffffffffffff16146112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a290612ef8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190613662565b60405180910390fd5b611323816119ec565b50565b6011816064811061133657600080fd5b60109182820401919006600202915054906101000a900461ffff1681565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c757506113c682611ee0565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166114b583610cb6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6115036119e2565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611561576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611558906136f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790613760565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b600081600001549050919050565b60006116a9826113ce565b6116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df906137f2565b60405180910390fd5b60006116f383610cb6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061176257508373ffffffffffffffffffffffffffffffffffffffff1661174a84610586565b73ffffffffffffffffffffffffffffffffffffffff16145b806117735750611772818561119b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661179c82610cb6565b73ffffffffffffffffffffffffffffffffffffffff16146117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613884565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890613916565b60405180910390fd5b61186c838383611fc2565b611877600082611442565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118c79190613936565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461191e919061396a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46119dd838383611fc7565b505050565b6000612710905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b17906139ea565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c119190612483565b60405180910390a3505050565b611c2984848461177c565b611c3584848484611fcc565b611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90613a7c565b60405180910390fd5b50505050565b611c84600a612153565b600c54611c91600a611690565b1115611cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc990613ae8565b60405180910390fd5b6000611cde600a611690565b9050611cea8282612169565b5050565b6060600d8054611cfd90612cc5565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2990612cc5565b8015611d765780601f10611d4b57610100808354040283529160200191611d76565b820191906000526020600020905b815481529060010190602001808311611d5957829003601f168201915b5050505050905090565b606060008203611dc7576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611edb565b600082905060005b60008214611df9578080611de29061344c565b915050600a82611df2919061304a565b9150611dcf565b60008167ffffffffffffffff811115611e1557611e14612809565b5b6040519080825280601f01601f191660200182016040528015611e475781602001600182028036833780820191505090505b5090505b60008514611ed457600182611e609190613936565b9150600a85611e6f9190613b08565b6030611e7b919061396a565b60f81b818381518110611e9157611e9061341d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611ecd919061304a565b9450611e4b565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611fab57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611fbb5750611fba82612342565b5b9050919050565b505050565b505050565b6000611fed8473ffffffffffffffffffffffffffffffffffffffff166123ac565b15612146578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261201661143a565b8786866040518563ffffffff1660e01b81526004016120389493929190613b8e565b6020604051808303816000875af192505050801561207457506040513d601f19601f820116820180604052508101906120719190613bef565b60015b6120f6573d80600081146120a4576040519150601f19603f3d011682016040523d82523d6000602084013e6120a9565b606091505b5060008151036120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590613a7c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061214b565b600190505b949350505050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cf90613c68565b60405180910390fd5b6121e1816113ce565b15612221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221890613cd4565b60405180910390fd5b61222d60008383611fc2565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461227d919061396a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461233e60008383611fc7565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612418816123e3565b811461242357600080fd5b50565b6000813590506124358161240f565b92915050565b600060208284031215612451576124506123d9565b5b600061245f84828501612426565b91505092915050565b60008115159050919050565b61247d81612468565b82525050565b60006020820190506124986000830184612474565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124d85780820151818401526020810190506124bd565b60008484015250505050565b6000601f19601f8301169050919050565b60006125008261249e565b61250a81856124a9565b935061251a8185602086016124ba565b612523816124e4565b840191505092915050565b6000602082019050818103600083015261254881846124f5565b905092915050565b6000819050919050565b61256381612550565b811461256e57600080fd5b50565b6000813590506125808161255a565b92915050565b60006020828403121561259c5761259b6123d9565b5b60006125aa84828501612571565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125de826125b3565b9050919050565b6125ee816125d3565b82525050565b600060208201905061260960008301846125e5565b92915050565b612618816125d3565b811461262357600080fd5b50565b6000813590506126358161260f565b92915050565b60008060408385031215612652576126516123d9565b5b600061266085828601612626565b925050602061267185828601612571565b9150509250929050565b60006bffffffffffffffffffffffff82169050919050565b61269c8161267b565b81146126a757600080fd5b50565b6000813590506126b981612693565b92915050565b6000602082840312156126d5576126d46123d9565b5b60006126e3848285016126aa565b91505092915050565b6126f581612550565b82525050565b600060208201905061271060008301846126ec565b92915050565b60008060006060848603121561272f5761272e6123d9565b5b600061273d86828701612626565b935050602061274e86828701612626565b925050604061275f86828701612571565b9150509250925092565b600080604083850312156127805761277f6123d9565b5b600061278e85828601612571565b925050602061279f85828601612571565b9150509250929050565b60006040820190506127be60008301856125e5565b6127cb60208301846126ec565b9392505050565b6000602082840312156127e8576127e76123d9565b5b60006127f684828501612626565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612841826124e4565b810181811067ffffffffffffffff821117156128605761285f612809565b5b80604052505050565b60006128736123cf565b905061287f8282612838565b919050565b600067ffffffffffffffff82111561289f5761289e612809565b5b6128a8826124e4565b9050602081019050919050565b82818337600083830152505050565b60006128d76128d284612884565b612869565b9050828152602081018484840111156128f3576128f2612804565b5b6128fe8482856128b5565b509392505050565b600082601f83011261291b5761291a6127ff565b5b813561292b8482602086016128c4565b91505092915050565b60006020828403121561294a576129496123d9565b5b600082013567ffffffffffffffff811115612968576129676123de565b5b61297484828501612906565b91505092915050565b61298681612468565b811461299157600080fd5b50565b6000813590506129a38161297d565b92915050565b600080604083850312156129c0576129bf6123d9565b5b60006129ce85828601612626565b92505060206129df85828601612994565b9150509250929050565b600067ffffffffffffffff821115612a0457612a03612809565b5b612a0d826124e4565b9050602081019050919050565b6000612a2d612a28846129e9565b612869565b905082815260208101848484011115612a4957612a48612804565b5b612a548482856128b5565b509392505050565b600082601f830112612a7157612a706127ff565b5b8135612a81848260208601612a1a565b91505092915050565b60008060008060808587031215612aa457612aa36123d9565b5b6000612ab287828801612626565b9450506020612ac387828801612626565b9350506040612ad487828801612571565b925050606085013567ffffffffffffffff811115612af557612af46123de565b5b612b0187828801612a5c565b91505092959194509250565b600067ffffffffffffffff821115612b2857612b27612809565b5b602082029050602081019050919050565b600080fd5b6000612b51612b4c84612b0d565b612869565b90508083825260208201905060208402830185811115612b7457612b73612b39565b5b835b81811015612b9d5780612b898882612626565b845260208401935050602081019050612b76565b5050509392505050565b600082601f830112612bbc57612bbb6127ff565b5b8135612bcc848260208601612b3e565b91505092915050565b600060208284031215612beb57612bea6123d9565b5b600082013567ffffffffffffffff811115612c0957612c086123de565b5b612c1584828501612ba7565b91505092915050565b60008060408385031215612c3557612c346123d9565b5b6000612c4385828601612626565b9250506020612c5485828601612626565b9150509250929050565b600061ffff82169050919050565b612c7581612c5e565b82525050565b6000602082019050612c906000830184612c6c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cdd57607f821691505b602082108103612cf057612cef612c96565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000612d52602c836124a9565b9150612d5d82612cf6565b604082019050919050565b60006020820190508181036000830152612d8181612d45565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612de46021836124a9565b9150612def82612d88565b604082019050919050565b60006020820190508181036000830152612e1381612dd7565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000612e766038836124a9565b9150612e8182612e1a565b604082019050919050565b60006020820190508181036000830152612ea581612e69565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ee26020836124a9565b9150612eed82612eac565b602082019050919050565b60006020820190508181036000830152612f1181612ed5565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000612f746031836124a9565b9150612f7f82612f18565b604082019050919050565b60006020820190508181036000830152612fa381612f67565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fe482612550565b9150612fef83612550565b9250828202612ffd81612550565b9150828204841483151761301457613013612faa565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061305582612550565b915061306083612550565b9250826130705761306f61301b565b5b828204905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826130a0565b6130e786836130a0565b95508019841693508086168417925050509392505050565b6000819050919050565b600061312461311f61311a84612550565b6130ff565b612550565b9050919050565b6000819050919050565b61313e83613109565b61315261314a8261312b565b8484546130ad565b825550505050565b600090565b61316761315a565b613172818484613135565b505050565b5b818110156131965761318b60008261315f565b600181019050613178565b5050565b601f8211156131db576131ac8161307b565b6131b584613090565b810160208510156131c4578190505b6131d86131d085613090565b830182613177565b50505b505050565b600082821c905092915050565b60006131fe600019846008026131e0565b1980831691505092915050565b600061321783836131ed565b9150826002028217905092915050565b6132308261249e565b67ffffffffffffffff81111561324957613248612809565b5b6132538254612cc5565b61325e82828561319a565b600060209050601f831160018114613291576000841561327f578287015190505b613289858261320b565b8655506132f1565b601f19841661329f8661307b565b60005b828110156132c7578489015182556001820191506020850194506020810190506132a2565b868310156132e457848901516132e0601f8916826131ed565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006133556029836124a9565b9150613360826132f9565b604082019050919050565b6000602082019050818103600083015261338481613348565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006133e7602a836124a9565b91506133f28261338b565b604082019050919050565b60006020820190508181036000830152613416816133da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061345782612550565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361348957613488612faa565b5b600182019050919050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b60006134ca6014836124a9565b91506134d582613494565b602082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b600081905092915050565b60006135168261249e565b6135208185613500565b93506135308185602086016124ba565b80840191505092915050565b6000815461354981612cc5565b6135538186613500565b9450600182166000811461356e5760018114613583576135b6565b60ff19831686528115158202860193506135b6565b61358c8561307b565b60005b838110156135ae5781548189015260018201915060208101905061358f565b838801955050505b50505092915050565b60006135cb828661350b565b91506135d7828561350b565b91506135e3828461353c565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061364c6026836124a9565b9150613657826135f0565b604082019050919050565b6000602082019050818103600083015261367b8161363f565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b60006136de602a836124a9565b91506136e982613682565b604082019050919050565b6000602082019050818103600083015261370d816136d1565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600061374a6019836124a9565b915061375582613714565b602082019050919050565b600060208201905081810360008301526137798161373d565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006137dc602c836124a9565b91506137e782613780565b604082019050919050565b6000602082019050818103600083015261380b816137cf565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061386e6025836124a9565b915061387982613812565b604082019050919050565b6000602082019050818103600083015261389d81613861565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139006024836124a9565b915061390b826138a4565b604082019050919050565b6000602082019050818103600083015261392f816138f3565b9050919050565b600061394182612550565b915061394c83612550565b925082820390508181111561396457613963612faa565b5b92915050565b600061397582612550565b915061398083612550565b925082820190508082111561399857613997612faa565b5b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006139d46019836124a9565b91506139df8261399e565b602082019050919050565b60006020820190508181036000830152613a03816139c7565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613a666032836124a9565b9150613a7182613a0a565b604082019050919050565b60006020820190508181036000830152613a9581613a59565b9050919050565b7f50726f6a6563742069732066696e6973686564206d696e74696e672e00000000600082015250565b6000613ad2601c836124a9565b9150613add82613a9c565b602082019050919050565b60006020820190508181036000830152613b0181613ac5565b9050919050565b6000613b1382612550565b9150613b1e83612550565b925082613b2e57613b2d61301b565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000613b6082613b39565b613b6a8185613b44565b9350613b7a8185602086016124ba565b613b83816124e4565b840191505092915050565b6000608082019050613ba360008301876125e5565b613bb060208301866125e5565b613bbd60408301856126ec565b8181036060830152613bcf8184613b55565b905095945050505050565b600081519050613be98161240f565b92915050565b600060208284031215613c0557613c046123d9565b5b6000613c1384828501613bda565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613c526020836124a9565b9150613c5d82613c1c565b602082019050919050565b60006020820190508181036000830152613c8181613c45565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613cbe601c836124a9565b9150613cc982613c88565b602082019050919050565b60006020820190508181036000830152613ced81613cb1565b905091905056fea2646970667358221220b813f3d8125cfc7d92f95970c81107c0c828909fa3d2488adbd34a21ab7beb0764736f6c6343000811003368747470733a2f2f6261667962656961353761736e6f693635323277627132683378367a65716b326437733572377a727676696936676e6a7369786a796467627434752e697066732e6e667473746f726167652e6c696e6b2f