60806040523480156200001157600080fd5b506040518060400160405280600881526020017f4c6f6e67555249320000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f4c6f6e675552490000000000000000000000000000000000000000000000000081525081600090805190602001906200009692919062000da6565b508060019080519060200190620000af92919062000da6565b505050620000d2620000c66200014760201b60201c565b6200014f60201b60201c565b62000109734201774cf7bfcf4a35e00be98d2f36a76d0415636035604051806020016040528060008152506200021560201b60201c565b62000141734201774cf7bfcf4a35e00be98d2f36a76d041563610213604051806020016040528060008152506200021560201b60201c565b620014fb565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002256200014760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200024b620002cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200029b90620010ea565b60405180910390fd5b620002b68383620002f760201b60201c565b620002c882826200031d60201b60201c565b505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003198282604051806020016040528060008152506200039e60201b60201c565b5050565b6200032e826200040c60201b60201c565b62000370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200036790620010a6565b60405180910390fd5b80600a600084815260200190815260200160002090805190602001906200039992919062000da6565b505050565b620003b083836200047860201b60201c565b620003c560008484846200067260201b60201c565b62000407576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003fe9062001040565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620004eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004e290620010c8565b60405180910390fd5b620004fc816200040c60201b60201c565b156200053f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005369062001062565b60405180910390fd5b62000553600083836200082c60201b60201c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005a5919062001139565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200066e600083836200084960201b60201c565b5050565b6000620006a08473ffffffffffffffffffffffffffffffffffffffff166200084e60201b62000dca1760201c565b156200081f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620006d26200014760201b60201c565b8786866040518563ffffffff1660e01b8152600401620006f6949392919062000fec565b602060405180830381600087803b1580156200071157600080fd5b505af19250505080156200074557506040513d601f19601f8201168201806040525081019062000742919062000e6d565b60015b620007ce573d806000811462000778576040519150601f19603f3d011682016040523d82523d6000602084013e6200077d565b606091505b50600081511415620007c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007bd9062001040565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505062000824565b600190505b949350505050565b620008448383836200087160201b62000ded1760201c565b505050565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b62000889838383620009b860201b62000f011760201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620008d657620008d081620009bd60201b60201c565b6200091e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146200091d576200091c838262000a0660201b60201c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200096b57620009658162000b8360201b60201c565b620009b3565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620009b257620009b1828262000c5f60201b60201c565b5b5b505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600162000a208462000ceb60201b620009101760201c565b62000a2c919062001196565b905060006007600084815260200190815260200160002054905081811462000b12576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905062000b99919062001196565b905060006009600084815260200190815260200160002054905060006008838154811062000bcc5762000bcb62001334565b5b90600052602060002001549050806008838154811062000bf15762000bf062001334565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548062000c435762000c4262001305565b5b6001900381819060005260206000200160009055905550505050565b600062000c778362000ceb60201b620009101760201c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d569062001084565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b82805462000db49062001271565b90600052602060002090601f01602090048101928262000dd8576000855562000e24565b82601f1062000df357805160ff191683800117855562000e24565b8280016001018555821562000e24579182015b8281111562000e2357825182559160200191906001019062000e06565b5b50905062000e33919062000e37565b5090565b5b8082111562000e5257600081600090555060010162000e38565b5090565b60008151905062000e6781620014e1565b92915050565b60006020828403121562000e865762000e8562001363565b5b600062000e968482850162000e56565b91505092915050565b62000eaa81620011d1565b82525050565b600062000ebd826200110c565b62000ec9818562001117565b935062000edb8185602086016200123b565b62000ee68162001368565b840191505092915050565b600062000f0060328362001128565b915062000f0d8262001379565b604082019050919050565b600062000f27601c8362001128565b915062000f3482620013c8565b602082019050919050565b600062000f4e602a8362001128565b915062000f5b82620013f1565b604082019050919050565b600062000f75602e8362001128565b915062000f828262001440565b604082019050919050565b600062000f9c60208362001128565b915062000fa9826200148f565b602082019050919050565b600062000fc360208362001128565b915062000fd082620014b8565b602082019050919050565b62000fe68162001231565b82525050565b600060808201905062001003600083018762000e9f565b62001012602083018662000e9f565b62001021604083018562000fdb565b818103606083015262001035818462000eb0565b905095945050505050565b600060208201905081810360008301526200105b8162000ef1565b9050919050565b600060208201905081810360008301526200107d8162000f18565b9050919050565b600060208201905081810360008301526200109f8162000f3f565b9050919050565b60006020820190508181036000830152620010c18162000f66565b9050919050565b60006020820190508181036000830152620010e38162000f8d565b9050919050565b60006020820190508181036000830152620011058162000fb4565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000620011468262001231565b9150620011538362001231565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200118b576200118a620012a7565b5b828201905092915050565b6000620011a38262001231565b9150620011b08362001231565b925082821015620011c657620011c5620012a7565b5b828203905092915050565b6000620011de8262001211565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200125b5780820151818401526020810190506200123e565b838111156200126b576000848401525b50505050565b600060028204905060018216806200128a57607f821691505b60208210811415620012a157620012a0620012d6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620014ec81620011e5565b8114620014f857600080fd5b50565b6136fc806200150b6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b8578063a22cb4651161007c578063a22cb4651461034e578063b88d4fde1461036a578063c87b56dd14610386578063cd279c7c146103b6578063e985e9c5146103d2578063f2fde38b1461040257610137565b80636352211e146102a857806370a08231146102d8578063715018a6146103085780638da5cb5b1461031257806395d89b411461033057610137565b806323b872dd116100ff57806323b872dd146101f45780632f745c591461021057806342842e0e1461024057806342966c681461025c5780634f6ccce71461027857610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b61015660048036038101906101519190612520565b61041e565b6040516101639190612946565b60405180910390f35b610174610430565b6040516101819190612961565b60405180910390f35b6101a4600480360381019061019f919061257a565b6104c2565b6040516101b191906128df565b60405180910390f35b6101d460048036038101906101cf9190612471565b610547565b005b6101de61065f565b6040516101eb9190612be3565b60405180910390f35b61020e6004803603810190610209919061235b565b61066c565b005b61022a60048036038101906102259190612471565b6106cc565b6040516102379190612be3565b60405180910390f35b61025a6004803603810190610255919061235b565b610771565b005b6102766004803603810190610271919061257a565b610791565b005b610292600480360381019061028d919061257a565b6107ed565b60405161029f9190612be3565b60405180910390f35b6102c260048036038101906102bd919061257a565b61085e565b6040516102cf91906128df565b60405180910390f35b6102f260048036038101906102ed91906122ee565b610910565b6040516102ff9190612be3565b60405180910390f35b6103106109c8565b005b61031a610a50565b60405161032791906128df565b60405180910390f35b610338610a7a565b6040516103459190612961565b60405180910390f35b61036860048036038101906103639190612431565b610b0c565b005b610384600480360381019061037f91906123ae565b610b22565b005b6103a0600480360381019061039b919061257a565b610b84565b6040516103ad9190612961565b60405180910390f35b6103d060048036038101906103cb91906124b1565b610ba9565b005b6103ec60048036038101906103e7919061231b565b610c3e565b6040516103f99190612946565b60405180910390f35b61041c600480360381019061041791906122ee565b610cd2565b005b600061042982610f06565b9050919050565b60606000805461043f90612dfd565b80601f016020809104026020016040519081016040528092919081815260200182805461046b90612dfd565b80156104b85780601f1061048d576101008083540402835291602001916104b8565b820191906000526020600020905b81548152906001019060200180831161049b57829003601f168201915b5050505050905090565b60006104cd82610f80565b61050c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050390612b23565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105528261085e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ba90612b63565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105e2610fec565b73ffffffffffffffffffffffffffffffffffffffff16148061061157506106108161060b610fec565b610c3e565b5b610650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064790612a83565b60405180910390fd5b61065a8383610ff4565b505050565b6000600880549050905090565b61067d610677610fec565b826110ad565b6106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390612b83565b60405180910390fd5b6106c783838361118b565b505050565b60006106d783610910565b8210610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90612983565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61078c83838360405180602001604052806000815250610b22565b505050565b6107a261079c610fec565b826110ad565b6107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d890612bc3565b60405180910390fd5b6107ea816113f2565b50565b60006107f761065f565b8210610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90612ba3565b60405180910390fd5b6008828154811061084c5761084b612eed565b5b90600052602060002001549050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90612ac3565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610981576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097890612aa3565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109d0610fec565b73ffffffffffffffffffffffffffffffffffffffff166109ee610a50565b73ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b90612b43565b60405180910390fd5b610a4e60006113fe565b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610a8990612dfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab590612dfd565b8015610b025780601f10610ad757610100808354040283529160200191610b02565b820191906000526020600020905b815481529060010190602001808311610ae557829003601f168201915b5050505050905090565b610b1e610b17610fec565b83836114c4565b5050565b610b33610b2d610fec565b836110ad565b610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6990612b83565b60405180910390fd5b610b7e84848484611631565b50505050565b6060604051806101e001604052806101b581526020016135126101b591399050919050565b610bb1610fec565b73ffffffffffffffffffffffffffffffffffffffff16610bcf610a50565b73ffffffffffffffffffffffffffffffffffffffff1614610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c90612b43565b60405180910390fd5b610c2f838361168d565b610c3982826116ab565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610cda610fec565b73ffffffffffffffffffffffffffffffffffffffff16610cf8610a50565b73ffffffffffffffffffffffffffffffffffffffff1614610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590612b43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db5906129c3565b60405180910390fd5b610dc7816113fe565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b610df8838383610f01565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e3b57610e368161171f565b610e7a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610e7957610e788382611768565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ebd57610eb8816118d5565b610efc565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610efb57610efa82826119a6565b5b5b505050565b505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f795750610f7882611a25565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166110678361085e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006110b882610f80565b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90612a63565b60405180910390fd5b60006111028361085e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061117157508373ffffffffffffffffffffffffffffffffffffffff16611159846104c2565b73ffffffffffffffffffffffffffffffffffffffff16145b8061118257506111818185610c3e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166111ab8261085e565b73ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f8906129e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890612a23565b60405180910390fd5b61127c838383611b07565b611287600082610ff4565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112d79190612d13565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132e9190612cbd565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46113ed838383611b17565b505050565b6113fb81611b1c565b50565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90612a43565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116249190612946565b60405180910390a3505050565b61163c84848461118b565b61164884848484611b6f565b611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e906129a3565b60405180910390fd5b50505050565b6116a7828260405180602001604052806000815250611d06565b5050565b6116b482610f80565b6116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90612ae3565b60405180910390fd5b80600a6000848152602001908152602001600020908051906020019061171a9291906120c2565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161177584610910565b61177f9190612d13565b9050600060076000848152602001908152602001600020549050818114611864576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506118e99190612d13565b905060006009600084815260200190815260200160002054905060006008838154811061191957611918612eed565b5b90600052602060002001549050806008838154811061193b5761193a612eed565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061198a57611989612ebe565b5b6001900381819060005260206000200160009055905550505050565b60006119b183610910565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611af057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611b005750611aff82611d61565b5b9050919050565b611b12838383610ded565b505050565b505050565b611b2581611dcb565b6000600a60008381526020019081526020016000208054611b4590612dfd565b905014611b6c57600a60008281526020019081526020016000206000611b6b9190612148565b5b50565b6000611b908473ffffffffffffffffffffffffffffffffffffffff16610dca565b15611cf9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611bb9610fec565b8786866040518563ffffffff1660e01b8152600401611bdb94939291906128fa565b602060405180830381600087803b158015611bf557600080fd5b505af1925050508015611c2657506040513d601f19601f82011682018060405250810190611c23919061254d565b60015b611ca9573d8060008114611c56576040519150601f19603f3d011682016040523d82523d6000602084013e611c5b565b606091505b50600081511415611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906129a3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611cfe565b600190505b949350505050565b611d108383611ee8565b611d1d6000848484611b6f565b611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d53906129a3565b60405180910390fd5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000611dd68261085e565b9050611de481600084611b07565b611def600083610ff4565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e3f9190612d13565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ee481600084611b17565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90612b03565b60405180910390fd5b611f6181610f80565b15611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890612a03565b60405180910390fd5b611fad60008383611b07565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ffd9190612cbd565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120be60008383611b17565b5050565b8280546120ce90612dfd565b90600052602060002090601f0160209004810192826120f05760008555612137565b82601f1061210957805160ff1916838001178555612137565b82800160010185558215612137579182015b8281111561213657825182559160200191906001019061211b565b5b5090506121449190612188565b5090565b50805461215490612dfd565b6000825580601f106121665750612185565b601f0160209004906000526020600020908101906121849190612188565b5b50565b5b808211156121a1576000816000905550600101612189565b5090565b60006121b86121b384612c23565b612bfe565b9050828152602081018484840111156121d4576121d3612f50565b5b6121df848285612dbb565b509392505050565b60006121fa6121f584612c54565b612bfe565b90508281526020810184848401111561221657612215612f50565b5b612221848285612dbb565b509392505050565b600081359050612238816134b5565b92915050565b60008135905061224d816134cc565b92915050565b600081359050612262816134e3565b92915050565b600081519050612277816134e3565b92915050565b600082601f83011261229257612291612f4b565b5b81356122a28482602086016121a5565b91505092915050565b600082601f8301126122c0576122bf612f4b565b5b81356122d08482602086016121e7565b91505092915050565b6000813590506122e8816134fa565b92915050565b60006020828403121561230457612303612f5a565b5b600061231284828501612229565b91505092915050565b6000806040838503121561233257612331612f5a565b5b600061234085828601612229565b925050602061235185828601612229565b9150509250929050565b60008060006060848603121561237457612373612f5a565b5b600061238286828701612229565b935050602061239386828701612229565b92505060406123a4868287016122d9565b9150509250925092565b600080600080608085870312156123c8576123c7612f5a565b5b60006123d687828801612229565b94505060206123e787828801612229565b93505060406123f8878288016122d9565b925050606085013567ffffffffffffffff81111561241957612418612f55565b5b6124258782880161227d565b91505092959194509250565b6000806040838503121561244857612447612f5a565b5b600061245685828601612229565b92505060206124678582860161223e565b9150509250929050565b6000806040838503121561248857612487612f5a565b5b600061249685828601612229565b92505060206124a7858286016122d9565b9150509250929050565b6000806000606084860312156124ca576124c9612f5a565b5b60006124d886828701612229565b93505060206124e9868287016122d9565b925050604084013567ffffffffffffffff81111561250a57612509612f55565b5b612516868287016122ab565b9150509250925092565b60006020828403121561253657612535612f5a565b5b600061254484828501612253565b91505092915050565b60006020828403121561256357612562612f5a565b5b600061257184828501612268565b91505092915050565b6000602082840312156125905761258f612f5a565b5b600061259e848285016122d9565b91505092915050565b6125b081612d47565b82525050565b6125bf81612d59565b82525050565b60006125d082612c85565b6125da8185612c9b565b93506125ea818560208601612dca565b6125f381612f5f565b840191505092915050565b600061260982612c90565b6126138185612cac565b9350612623818560208601612dca565b61262c81612f5f565b840191505092915050565b6000612644602b83612cac565b915061264f82612f70565b604082019050919050565b6000612667603283612cac565b915061267282612fbf565b604082019050919050565b600061268a602683612cac565b91506126958261300e565b604082019050919050565b60006126ad602583612cac565b91506126b88261305d565b604082019050919050565b60006126d0601c83612cac565b91506126db826130ac565b602082019050919050565b60006126f3602483612cac565b91506126fe826130d5565b604082019050919050565b6000612716601983612cac565b915061272182613124565b602082019050919050565b6000612739602c83612cac565b91506127448261314d565b604082019050919050565b600061275c603883612cac565b91506127678261319c565b604082019050919050565b600061277f602a83612cac565b915061278a826131eb565b604082019050919050565b60006127a2602983612cac565b91506127ad8261323a565b604082019050919050565b60006127c5602e83612cac565b91506127d082613289565b604082019050919050565b60006127e8602083612cac565b91506127f3826132d8565b602082019050919050565b600061280b602c83612cac565b915061281682613301565b604082019050919050565b600061282e602083612cac565b915061283982613350565b602082019050919050565b6000612851602183612cac565b915061285c82613379565b604082019050919050565b6000612874603183612cac565b915061287f826133c8565b604082019050919050565b6000612897602c83612cac565b91506128a282613417565b604082019050919050565b60006128ba603083612cac565b91506128c582613466565b604082019050919050565b6128d981612db1565b82525050565b60006020820190506128f460008301846125a7565b92915050565b600060808201905061290f60008301876125a7565b61291c60208301866125a7565b61292960408301856128d0565b818103606083015261293b81846125c5565b905095945050505050565b600060208201905061295b60008301846125b6565b92915050565b6000602082019050818103600083015261297b81846125fe565b905092915050565b6000602082019050818103600083015261299c81612637565b9050919050565b600060208201905081810360008301526129bc8161265a565b9050919050565b600060208201905081810360008301526129dc8161267d565b9050919050565b600060208201905081810360008301526129fc816126a0565b9050919050565b60006020820190508181036000830152612a1c816126c3565b9050919050565b60006020820190508181036000830152612a3c816126e6565b9050919050565b60006020820190508181036000830152612a5c81612709565b9050919050565b60006020820190508181036000830152612a7c8161272c565b9050919050565b60006020820190508181036000830152612a9c8161274f565b9050919050565b60006020820190508181036000830152612abc81612772565b9050919050565b60006020820190508181036000830152612adc81612795565b9050919050565b60006020820190508181036000830152612afc816127b8565b9050919050565b60006020820190508181036000830152612b1c816127db565b9050919050565b60006020820190508181036000830152612b3c816127fe565b9050919050565b60006020820190508181036000830152612b5c81612821565b9050919050565b60006020820190508181036000830152612b7c81612844565b9050919050565b60006020820190508181036000830152612b9c81612867565b9050919050565b60006020820190508181036000830152612bbc8161288a565b9050919050565b60006020820190508181036000830152612bdc816128ad565b9050919050565b6000602082019050612bf860008301846128d0565b92915050565b6000612c08612c19565b9050612c148282612e2f565b919050565b6000604051905090565b600067ffffffffffffffff821115612c3e57612c3d612f1c565b5b612c4782612f5f565b9050602081019050919050565b600067ffffffffffffffff821115612c6f57612c6e612f1c565b5b612c7882612f5f565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612cc882612db1565b9150612cd383612db1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d0857612d07612e60565b5b828201905092915050565b6000612d1e82612db1565b9150612d2983612db1565b925082821015612d3c57612d3b612e60565b5b828203905092915050565b6000612d5282612d91565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612de8578082015181840152602081019050612dcd565b83811115612df7576000848401525b50505050565b60006002820490506001821680612e1557607f821691505b60208210811415612e2957612e28612e8f565b5b50919050565b612e3882612f5f565b810181811067ffffffffffffffff82111715612e5757612e56612f1c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b6134be81612d47565b81146134c957600080fd5b50565b6134d581612d59565b81146134e057600080fd5b50565b6134ec81612d65565b81146134f757600080fd5b50565b61350381612db1565b811461350e57600080fd5b5056fe50726f6475637449643a20302c20466c696768744e756d6265723a204151313239392c204275796572416464726573733a203078333765613463653534396463643534633936663637373337626462333165313431383435643761312c205072656d69756d3a20352c205061796f66663a203138302c20507572636861736554696d657374616d703a20313634343738393238332c2044657061727475726554696d657374616d703a313634343932343930302c204c616e64696e6754696d657374616d703a20302c20506f6c6963795374617475733a20312e2050726f6475637449643a20302c20466c696768744e756d6265723a204151313239392c204275796572416464726573733a203078333765613463653534396463643534633936663637373337626462333165313431383435643761312c205072656d69756d3a20352c205061796f66663a203138302c20507572636861736554696d657374616d703a20313634343738393238332c2044657061727475726554696d657374616d703a313634343932343930302c204c616e64696e6754696d657374616d703a20302c20506f6c6963795374617475733a20312ea26469706673582212201ad85dfba114cfa5c69583ab9feebc983827683c744db6a29da4b32e0d0ef89a64736f6c63430008070033