{"abi":[{"type":"function","name":"calculateCreateProxyWithNonceAddress","inputs":[{"name":"_singleton","type":"address","internalType":"address"},{"name":"initializer","type":"bytes","internalType":"bytes"},{"name":"saltNonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"proxy","type":"address","internalType":"contract GnosisSafeProxy"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProxy","inputs":[{"name":"singleton","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"proxy","type":"address","internalType":"contract GnosisSafeProxy"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProxyWithCallback","inputs":[{"name":"_singleton","type":"address","internalType":"address"},{"name":"initializer","type":"bytes","internalType":"bytes"},{"name":"saltNonce","type":"uint256","internalType":"uint256"},{"name":"callback","type":"address","internalType":"contract IProxyCreationCallback"}],"outputs":[{"name":"proxy","type":"address","internalType":"contract GnosisSafeProxy"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProxyWithNonce","inputs":[{"name":"_singleton","type":"address","internalType":"address"},{"name":"initializer","type":"bytes","internalType":"bytes"},{"name":"saltNonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"proxy","type":"address","internalType":"contract GnosisSafeProxy"}],"stateMutability":"nonpayable"},{"type":"function","name":"proxyCreationCode","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"proxyRuntimeCode","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"event","name":"ProxyCreation","inputs":[{"name":"proxy","type":"address","indexed":false,"internalType":"contract GnosisSafeProxy"},{"name":"singleton","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610ba2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806361b69abd1161005057806361b69abd146100dc578063addacc0f146100ef578063d18af54d146100f757600080fd5b80631688f0b9146100775780632500510e146100b457806353e5d935146100c7575b600080fd5b61008a61008536600461070e565b61010a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61008a6100c2366004610767565b610192565b6100cf610272565b6040516100ab919061086c565b61008a6100ea366004610886565b6102ba565b6100cf61037d565b61008a6101053660046108d6565b61038f565b60006101178484846104ab565b83519091501561013b5760008060008551602087016000865af10361013b57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252861660208201527f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235910160405180910390a19392505050565b60006101d68585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506104ab915050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166020820152909150603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526102699160040161086c565b60405180910390fd5b606060405180602001610284906105f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b6000826040516102c9906105f6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015610302573d6000803e3d6000fd5b508251909150156103275760008060008451602086016000865af10361032757600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201527f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235910160405180910390a192915050565b60606040518060200161028490610603565b60008083836040516020016103d392919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506103f986868361010a565b915073ffffffffffffffffffffffffffffffffffffffff8316156104a2576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b5189061046f9085908a908a908a90600401610942565b600060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b505050505b50949350505050565b6000808380519060200120836040516020016104d1929190918252602082015260400190565b6040516020818303038152906040528051906020012090506000604051806020016104fb906105f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610553919073ffffffffffffffffffffffffffffffffffffffff89169060200161098c565b6040516020818303038152906040529050818151826020016000f5925073ffffffffffffffffffffffffffffffffffffffff83166105ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610269565b50509392505050565b61016f806109af83390190565b607880610b1e83390190565b73ffffffffffffffffffffffffffffffffffffffff8116811461063157600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261067457600080fd5b813567ffffffffffffffff8082111561068f5761068f610634565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156106d5576106d5610634565b816040528381528660208588010111156106ee57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561072357600080fd5b833561072e8161060f565b9250602084013567ffffffffffffffff81111561074a57600080fd5b61075686828701610663565b925050604084013590509250925092565b6000806000806060858703121561077d57600080fd5b84356107888161060f565b9350602085013567ffffffffffffffff808211156107a557600080fd5b818701915087601f8301126107b957600080fd5b8135818111156107c857600080fd5b8860208285010111156107da57600080fd5b95986020929092019750949560400135945092505050565b60005b8381101561080d5781810151838201526020016107f5565b8381111561081c576000848401525b50505050565b6000815180845261083a8160208601602086016107f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061087f6020830184610822565b9392505050565b6000806040838503121561089957600080fd5b82356108a48161060f565b9150602083013567ffffffffffffffff8111156108c057600080fd5b6108cc85828601610663565b9150509250929050565b600080600080608085870312156108ec57600080fd5b84356108f78161060f565b9350602085013567ffffffffffffffff81111561091357600080fd5b61091f87828801610663565b9350506040850135915060608501356109378161060f565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152506080604083015261097b6080830185610822565b905082606083015295945050505050565b6000835161099e8184602088016107f2565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161016f38038061016f83398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b6078806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea164736f6c634300080f000a6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea164736f6c634300080f000aa164736f6c634300080f000a","sourceMap":"324:5502:100:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100725760003560e01c806361b69abd1161005057806361b69abd146100dc578063addacc0f146100ef578063d18af54d146100f757600080fd5b80631688f0b9146100775780632500510e146100b457806353e5d935146100c7575b600080fd5b61008a61008536600461070e565b61010a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61008a6100c2366004610767565b610192565b6100cf610272565b6040516100ab919061086c565b61008a6100ea366004610886565b6102ba565b6100cf61037d565b61008a6101053660046108d6565b61038f565b60006101178484846104ab565b83519091501561013b5760008060008551602087016000865af10361013b57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252861660208201527f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235910160405180910390a19392505050565b60006101d68585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506104ab915050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166020820152909150603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526102699160040161086c565b60405180910390fd5b606060405180602001610284906105f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b6000826040516102c9906105f6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015610302573d6000803e3d6000fd5b508251909150156103275760008060008451602086016000865af10361032757600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201527f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235910160405180910390a192915050565b60606040518060200161028490610603565b60008083836040516020016103d392919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506103f986868361010a565b915073ffffffffffffffffffffffffffffffffffffffff8316156104a2576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b5189061046f9085908a908a908a90600401610942565b600060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b505050505b50949350505050565b6000808380519060200120836040516020016104d1929190918252602082015260400190565b6040516020818303038152906040528051906020012090506000604051806020016104fb906105f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610553919073ffffffffffffffffffffffffffffffffffffffff89169060200161098c565b6040516020818303038152906040529050818151826020016000f5925073ffffffffffffffffffffffffffffffffffffffff83166105ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610269565b50509392505050565b61016f806109af83390190565b607880610b1e83390190565b73ffffffffffffffffffffffffffffffffffffffff8116811461063157600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261067457600080fd5b813567ffffffffffffffff8082111561068f5761068f610634565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156106d5576106d5610634565b816040528381528660208588010111156106ee57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561072357600080fd5b833561072e8161060f565b9250602084013567ffffffffffffffff81111561074a57600080fd5b61075686828701610663565b925050604084013590509250925092565b6000806000806060858703121561077d57600080fd5b84356107888161060f565b9350602085013567ffffffffffffffff808211156107a557600080fd5b818701915087601f8301126107b957600080fd5b8135818111156107c857600080fd5b8860208285010111156107da57600080fd5b95986020929092019750949560400135945092505050565b60005b8381101561080d5781810151838201526020016107f5565b8381111561081c576000848401525b50505050565b6000815180845261083a8160208601602086016107f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061087f6020830184610822565b9392505050565b6000806040838503121561089957600080fd5b82356108a48161060f565b9150602083013567ffffffffffffffff8111156108c057600080fd5b6108cc85828601610663565b9150509250929050565b600080600080608085870312156108ec57600080fd5b84356108f78161060f565b9350602085013567ffffffffffffffff81111561091357600080fd5b61091f87828801610663565b9350506040850135915060608501356109378161060f565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152506080604083015261097b6080830185610822565b905082606083015295945050505050565b6000835161099e8184602088016107f2565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161016f38038061016f83398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b6078806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea164736f6c634300080f000a6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea164736f6c634300080f000aa164736f6c634300080f000a","sourceMap":"324:5502:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:576;;;;;;:::i;:::-;;:::i;:::-;;;1881:42:416;1869:55;;;1851:74;;1839:2;1824:18;3268:576:100;;;;;;;;5510:314;;;;;;:::i;:::-;;:::i;1548:122::-;;;:::i;:::-;;;;;;;:::i;675:462::-;;;;;;:::i;:::-;;:::i;1277:120::-;;;:::i;4382:511::-;;;;;;:::i;:::-;;:::i;3268:576::-;3409:21;3450:56;3471:10;3483:11;3496:9;3450:20;:56::i;:::-;3520:18;;3442:64;;-1:-1:-1;3520:22:100;3516:275;;3722:1;3718;3715;3701:11;3695:18;3688:4;3675:11;3671:22;3668:1;3661:5;3654;3649:71;3646:78;3643:134;;3757:1;3754;3747:12;3643:134;3805:32;;;4920:42:416;4989:15;;;4971:34;;5041:15;;5036:2;5021:18;;5014:43;3805:32:100;;4883:18:416;3805:32:100;;;;;;;3268:576;;;;;:::o;5510:314::-;5671:21;5712:56;5733:10;5745:11;;5712:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5758:9:100;;-1:-1:-1;5712:20:100;;-1:-1:-1;;5712:56:100:i;:::-;5792:23;;5263:66:416;5250:2;5246:15;;;5242:88;5792:23:100;;;5230:101:416;5704:64:100;;-1:-1:-1;5347:12:416;;5792:23:100;;;;;;;;;;;;;;5778:39;;;;;;;;:::i;:::-;;;;;;;;1548:122;1598:12;1629:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1548:122;-1:-1:-1;1548:122:100:o;675:462::-;750:21;811:9;791:30;;;;;:::i;:::-;1881:42:416;1869:55;;;1851:74;;1839:2;1824:18;791:30:100;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;835:11:100;;783:38;;-1:-1:-1;835:15:100;831:254;;1016:1;1012;1009;1002:4;996:11;989:4;983;979:15;976:1;969:5;962;957:57;954:64;951:120;;1051:1;1048;1041:12;951:120;1099:31;;;4920:42:416;4989:15;;;4971:34;;5041:15;;5036:2;5021:18;;5014:43;1099:31:100;;4883:18:416;1099:31:100;;;;;;;675:462;;;;:::o;1277:120::-;1326:12;1357:33;;;;;;;;:::i;4382:511::-;4567:21;4600:29;4667:9;4678:8;4650:37;;;;;;;;6014:19:416;;;6071:2;6067:15;6084:66;6063:88;6058:2;6049:12;;6042:110;6177:2;6168:12;;5825:361;4650:37:100;;;;;;;;;;;;;4640:48;;;;;;4632:57;;4600:89;;4707:68;4728:10;4740:11;4753:21;4707:20;:68::i;:::-;4699:76;-1:-1:-1;4789:31:100;;;;4785:101;;4822:64;;;;;:21;;;;;;:64;;4844:5;;4851:10;;4863:11;;4876:9;;4822:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4785:101;4590:303;4382:511;;;;;;:::o;2118:769::-;2261:21;2436:12;2488:11;2478:22;;;;;;2502:9;2461:51;;;;;;;;6897:19:416;;;6941:2;6932:12;;6925:28;6978:2;6969:12;;6740:247;2461:51:100;;;;;;;;;;;;;2451:62;;;;;;2436:77;;2523:27;2570:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2553:82;;2570:34;2606:28;;;;2570:34;2553:82;;:::i;:::-;;;;;;;;;;;;;2523:112;;2796:4;2779:14;2773:21;2756:14;2750:4;2746:25;2741:3;2733:68;2724:77;-1:-1:-1;2828:28:100;;;2820:60;;;;;;;7569:2:416;2820:60:100;;;7551:21:416;7608:2;7588:18;;;7581:30;7647:21;7627:18;;;7620:49;7686:18;;2820:60:100;7367:343:416;2820:60:100;2284:603;;2118:769;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:154:416:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:184::-;225:77;222:1;215:88;322:4;319:1;312:15;346:4;343:1;336:15;362:777;404:5;457:3;450:4;442:6;438:17;434:27;424:55;;475:1;472;465:12;424:55;511:6;498:20;537:18;574:2;570;567:10;564:36;;;580:18;;:::i;:::-;714:2;708:9;776:4;768:13;;619:66;764:22;;;788:2;760:31;756:40;744:53;;;812:18;;;832:22;;;809:46;806:72;;;858:18;;:::i;:::-;898:10;894:2;887:22;933:2;925:6;918:18;979:3;972:4;967:2;959:6;955:15;951:26;948:35;945:55;;;996:1;993;986:12;945:55;1060:2;1053:4;1045:6;1041:17;1034:4;1026:6;1022:17;1009:54;1107:1;1100:4;1095:2;1087:6;1083:15;1079:26;1072:37;1127:6;1118:15;;;;;;362:777;;;;:::o;1144:523::-;1230:6;1238;1246;1299:2;1287:9;1278:7;1274:23;1270:32;1267:52;;;1315:1;1312;1305:12;1267:52;1354:9;1341:23;1373:31;1398:5;1373:31;:::i;:::-;1423:5;-1:-1:-1;1479:2:416;1464:18;;1451:32;1506:18;1495:30;;1492:50;;;1538:1;1535;1528:12;1492:50;1561:49;1602:7;1593:6;1582:9;1578:22;1561:49;:::i;:::-;1551:59;;;1657:2;1646:9;1642:18;1629:32;1619:42;;1144:523;;;;;:::o;1936:794::-;2024:6;2032;2040;2048;2101:2;2089:9;2080:7;2076:23;2072:32;2069:52;;;2117:1;2114;2107:12;2069:52;2156:9;2143:23;2175:31;2200:5;2175:31;:::i;:::-;2225:5;-1:-1:-1;2281:2:416;2266:18;;2253:32;2304:18;2334:14;;;2331:34;;;2361:1;2358;2351:12;2331:34;2399:6;2388:9;2384:22;2374:32;;2444:7;2437:4;2433:2;2429:13;2425:27;2415:55;;2466:1;2463;2456:12;2415:55;2506:2;2493:16;2532:2;2524:6;2521:14;2518:34;;;2548:1;2545;2538:12;2518:34;2593:7;2588:2;2579:6;2575:2;2571:15;2567:24;2564:37;2561:57;;;2614:1;2611;2604:12;2561:57;1936:794;;2645:2;2637:11;;;;;-1:-1:-1;2667:6:416;;2720:2;2705:18;2692:32;;-1:-1:-1;1936:794:416;-1:-1:-1;;;1936:794:416:o;2735:258::-;2807:1;2817:113;2831:6;2828:1;2825:13;2817:113;;;2907:11;;;2901:18;2888:11;;;2881:39;2853:2;2846:10;2817:113;;;2948:6;2945:1;2942:13;2939:48;;;2983:1;2974:6;2969:3;2965:16;2958:27;2939:48;;2735:258;;;:::o;2998:316::-;3039:3;3077:5;3071:12;3104:6;3099:3;3092:19;3120:63;3176:6;3169:4;3164:3;3160:14;3153:4;3146:5;3142:16;3120:63;:::i;:::-;3228:2;3216:15;3233:66;3212:88;3203:98;;;;3303:4;3199:109;;2998:316;-1:-1:-1;;2998:316:416:o;3319:217::-;3466:2;3455:9;3448:21;3429:4;3486:44;3526:2;3515:9;3511:18;3503:6;3486:44;:::i;:::-;3478:52;3319:217;-1:-1:-1;;;3319:217:416:o;3541:455::-;3618:6;3626;3679:2;3667:9;3658:7;3654:23;3650:32;3647:52;;;3695:1;3692;3685:12;3647:52;3734:9;3721:23;3753:31;3778:5;3753:31;:::i;:::-;3803:5;-1:-1:-1;3859:2:416;3844:18;;3831:32;3886:18;3875:30;;3872:50;;;3918:1;3915;3908:12;3872:50;3941:49;3982:7;3973:6;3962:9;3958:22;3941:49;:::i;:::-;3931:59;;;3541:455;;;;;:::o;4001:697::-;4128:6;4136;4144;4152;4205:3;4193:9;4184:7;4180:23;4176:33;4173:53;;;4222:1;4219;4212:12;4173:53;4261:9;4248:23;4280:31;4305:5;4280:31;:::i;:::-;4330:5;-1:-1:-1;4386:2:416;4371:18;;4358:32;4413:18;4402:30;;4399:50;;;4445:1;4442;4435:12;4399:50;4468:49;4509:7;4500:6;4489:9;4485:22;4468:49;:::i;:::-;4458:59;;;4564:2;4553:9;4549:18;4536:32;4526:42;;4620:2;4609:9;4605:18;4592:32;4633:33;4658:7;4633:33;:::i;:::-;4001:697;;;;-1:-1:-1;4001:697:416;;-1:-1:-1;;4001:697:416:o;6191:544::-;6418:4;6447:42;6528:2;6520:6;6516:15;6505:9;6498:34;6580:2;6572:6;6568:15;6563:2;6552:9;6548:18;6541:43;;6620:3;6615:2;6604:9;6600:18;6593:31;6641:45;6681:3;6670:9;6666:19;6658:6;6641:45;:::i;:::-;6633:53;;6722:6;6717:2;6706:9;6702:18;6695:34;6191:544;;;;;;;:::o;6992:370::-;7149:3;7187:6;7181:13;7203:53;7249:6;7244:3;7237:4;7229:6;7225:17;7203:53;:::i;:::-;7278:16;;;;7303:21;;;-1:-1:-1;7351:4:416;7340:16;;6992:370;-1:-1:-1;6992:370:416:o","linkReferences":{}},"methodIdentifiers":{"calculateCreateProxyWithNonceAddress(address,bytes,uint256)":"2500510e","createProxy(address,bytes)":"61b69abd","createProxyWithCallback(address,bytes,uint256,address)":"d18af54d","createProxyWithNonce(address,bytes,uint256)":"1688f0b9","proxyCreationCode()":"53e5d935","proxyRuntimeCode()":"addacc0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"singleton\",\"type\":\"address\"}],\"name\":\"ProxyCreation\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"calculateCreateProxyWithNonceAddress\",\"outputs\":[{\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"createProxy\",\"outputs\":[{\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"},{\"internalType\":\"contract IProxyCreationCallback\",\"name\":\"callback\",\"type\":\"address\"}],\"name\":\"createProxyWithCallback\",\"outputs\":[{\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"createProxyWithNonce\",\"outputs\":[{\"internalType\":\"contract GnosisSafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxyCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxyRuntimeCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"kind\":\"dev\",\"methods\":{\"calculateCreateProxyWithNonceAddress(address,bytes,uint256)\":{\"details\":\"Allows to get the address for a new proxy contact created via `createProxyWithNonce`      This method is only meant for address calculation purpose when you use an initializer that would revert,      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.\",\"params\":{\"_singleton\":\"Address of singleton contract.\",\"initializer\":\"Payload for message call sent to new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"createProxy(address,bytes)\":{\"details\":\"Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\",\"params\":{\"data\":\"Payload for message call sent to new proxy contract.\",\"singleton\":\"Address of singleton contract.\"}},\"createProxyWithCallback(address,bytes,uint256,address)\":{\"details\":\"Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction\",\"params\":{\"_singleton\":\"Address of singleton contract.\",\"callback\":\"Callback that will be invoced after the new proxy contract has been successfully deployed and initialized.\",\"initializer\":\"Payload for message call sent to new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"createProxyWithNonce(address,bytes,uint256)\":{\"details\":\"Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\",\"params\":{\"_singleton\":\"Address of singleton contract.\",\"initializer\":\"Payload for message call sent to new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"proxyCreationCode()\":{\"details\":\"Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address.\"},\"proxyRuntimeCode()\":{\"details\":\"Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed.\"}},\"title\":\"Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe-contracts/contracts/proxies/GnosisSafeProxyFactory.sol\":\"GnosisSafeProxyFactory\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/safe-contracts/contracts/proxies/GnosisSafeProxy.sol\":{\"keccak256\":\"0x3bfdd453d9f896f7029d15bcafd11886957b320ad1764309d9f74fa059715249\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5b5b7d0c8a900ba758e012236bf1c55e885fe5716aa79f6f693d22c31c85f7d5\",\"dweb:/ipfs/QmUq5oNsZY1b5pcYAzrY1i9oqyPUaiFhLaEWgB9ML6LrBj\"]},\"lib/safe-contracts/contracts/proxies/GnosisSafeProxyFactory.sol\":{\"keccak256\":\"0x187c6f84c71b432da6721c1b81cebfbb9c37c0cc15ebd8de5a14ff7ec6db2d9e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cfe1ac5a4ba0475db666912d5b4397d8fae96342c27a47a664a881e24377ed38\",\"dweb:/ipfs/QmVcaZrvPbH2csouaU3r1quFtugC4AUeCbrzBBmXSYk9W6\"]},\"lib/safe-contracts/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0x51a9ce914a6a943651c803541e44218a7ed0a2f98a94d55df66b173b5a11e365\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5216ed8181c14d462ec821593c8f90f33c7dbe8b4c505a1092bf31a9d33132b9\",\"dweb:/ipfs/Qmbb2wkgijuTcEbGR7CnmiAtwZDyruQ2b1ged4HnLysQnT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract GnosisSafeProxy","name":"proxy","type":"address","indexed":false},{"internalType":"address","name":"singleton","type":"address","indexed":false}],"type":"event","name":"ProxyCreation","anonymous":false},{"inputs":[{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"calculateCreateProxyWithNonceAddress","outputs":[{"internalType":"contract GnosisSafeProxy","name":"proxy","type":"address"}]},{"inputs":[{"internalType":"address","name":"singleton","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"createProxy","outputs":[{"internalType":"contract GnosisSafeProxy","name":"proxy","type":"address"}]},{"inputs":[{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"},{"internalType":"contract IProxyCreationCallback","name":"callback","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createProxyWithCallback","outputs":[{"internalType":"contract GnosisSafeProxy","name":"proxy","type":"address"}]},{"inputs":[{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createProxyWithNonce","outputs":[{"internalType":"contract GnosisSafeProxy","name":"proxy","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"proxyCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"proxyRuntimeCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"calculateCreateProxyWithNonceAddress(address,bytes,uint256)":{"details":"Allows to get the address for a new proxy contact created via `createProxyWithNonce`      This method is only meant for address calculation purpose when you use an initializer that would revert,      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.","params":{"_singleton":"Address of singleton contract.","initializer":"Payload for message call sent to new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"createProxy(address,bytes)":{"details":"Allows to create new proxy contact and execute a message call to the new proxy within one transaction.","params":{"data":"Payload for message call sent to new proxy contract.","singleton":"Address of singleton contract."}},"createProxyWithCallback(address,bytes,uint256,address)":{"details":"Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction","params":{"_singleton":"Address of singleton contract.","callback":"Callback that will be invoced after the new proxy contract has been successfully deployed and initialized.","initializer":"Payload for message call sent to new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"createProxyWithNonce(address,bytes,uint256)":{"details":"Allows to create new proxy contact and execute a message call to the new proxy within one transaction.","params":{"_singleton":"Address of singleton contract.","initializer":"Payload for message call sent to new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"proxyCreationCode()":{"details":"Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address."},"proxyRuntimeCode()":{"details":"Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"lib/safe-contracts/contracts/proxies/GnosisSafeProxyFactory.sol":"GnosisSafeProxyFactory"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"lib/safe-contracts/contracts/proxies/GnosisSafeProxy.sol":{"keccak256":"0x3bfdd453d9f896f7029d15bcafd11886957b320ad1764309d9f74fa059715249","urls":["bzz-raw://5b5b7d0c8a900ba758e012236bf1c55e885fe5716aa79f6f693d22c31c85f7d5","dweb:/ipfs/QmUq5oNsZY1b5pcYAzrY1i9oqyPUaiFhLaEWgB9ML6LrBj"],"license":"LGPL-3.0-only"},"lib/safe-contracts/contracts/proxies/GnosisSafeProxyFactory.sol":{"keccak256":"0x187c6f84c71b432da6721c1b81cebfbb9c37c0cc15ebd8de5a14ff7ec6db2d9e","urls":["bzz-raw://cfe1ac5a4ba0475db666912d5b4397d8fae96342c27a47a664a881e24377ed38","dweb:/ipfs/QmVcaZrvPbH2csouaU3r1quFtugC4AUeCbrzBBmXSYk9W6"],"license":"LGPL-3.0-only"},"lib/safe-contracts/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0x51a9ce914a6a943651c803541e44218a7ed0a2f98a94d55df66b173b5a11e365","urls":["bzz-raw://5216ed8181c14d462ec821593c8f90f33c7dbe8b4c505a1092bf31a9d33132b9","dweb:/ipfs/Qmbb2wkgijuTcEbGR7CnmiAtwZDyruQ2b1ged4HnLysQnT"],"license":"LGPL-3.0-only"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","author":"Stefan George - <stefan@gnosis.pm>","methods":{"calculateCreateProxyWithNonceAddress(address,bytes,uint256)":{"details":"Allows to get the address for a new proxy contact created via `createProxyWithNonce`      This method is only meant for address calculation purpose when you use an initializer that would revert,      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.","params":{"_singleton":"Address of singleton contract.","initializer":"Payload for message call sent to new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"createProxy(address,bytes)":{"details":"Allows to create new proxy contact and execute a message call to the new proxy within one transaction.","params":{"data":"Payload for message call sent to new proxy contract.","singleton":"Address of singleton contract."}},"createProxyWithCallback(address,bytes,uint256,address)":{"details":"Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction","params":{"_singleton":"Address of singleton contract.","callback":"Callback that will be invoced after the new proxy contract has been successfully deployed and initialized.","initializer":"Payload for message call sent to new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"createProxyWithNonce(address,bytes,uint256)":{"details":"Allows to create new proxy contact and execute a message call to the new proxy within one transaction.","params":{"_singleton":"Address of singleton contract.","initializer":"Payload for message call sent to new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"proxyCreationCode()":{"details":"Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address."},"proxyRuntimeCode()":{"details":"Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed."}},"title":"Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction."},"ast":{"absolutePath":"lib/safe-contracts/contracts/proxies/GnosisSafeProxyFactory.sol","id":60881,"exportedSymbols":{"GnosisSafeProxy":[60633],"GnosisSafeProxyFactory":[60880],"IProxy":[60602],"IProxyCreationCallback":[60896]},"nodeType":"SourceUnit","src":"42:5785:100","nodes":[{"id":60635,"nodeType":"PragmaDirective","src":"42:31:100","nodes":[],"literals":["solidity",">=","0.7",".0","<","0.9",".0"]},{"id":60636,"nodeType":"ImportDirective","src":"75:31:100","nodes":[],"absolutePath":"lib/safe-contracts/contracts/proxies/GnosisSafeProxy.sol","file":"./GnosisSafeProxy.sol","nameLocation":"-1:-1:-1","scope":60881,"sourceUnit":60634,"symbolAliases":[],"unitAlias":""},{"id":60637,"nodeType":"ImportDirective","src":"107:38:100","nodes":[],"absolutePath":"lib/safe-contracts/contracts/proxies/IProxyCreationCallback.sol","file":"./IProxyCreationCallback.sol","nameLocation":"-1:-1:-1","scope":60881,"sourceUnit":60897,"symbolAliases":[],"unitAlias":""},{"id":60880,"nodeType":"ContractDefinition","src":"324:5502:100","nodes":[{"id":60645,"nodeType":"EventDefinition","src":"362:62:100","nodes":[],"anonymous":false,"eventSelector":"4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235","name":"ProxyCreation","nameLocation":"368:13:100","parameters":{"id":60644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60641,"indexed":false,"mutability":"mutable","name":"proxy","nameLocation":"398:5:100","nodeType":"VariableDeclaration","scope":60645,"src":"382:21:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},"typeName":{"id":60640,"nodeType":"UserDefinedTypeName","pathNode":{"id":60639,"name":"GnosisSafeProxy","nodeType":"IdentifierPath","referencedDeclaration":60633,"src":"382:15:100"},"referencedDeclaration":60633,"src":"382:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"visibility":"internal"},{"constant":false,"id":60643,"indexed":false,"mutability":"mutable","name":"singleton","nameLocation":"413:9:100","nodeType":"VariableDeclaration","scope":60645,"src":"405:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60642,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"381:42:100"}},{"id":60676,"nodeType":"FunctionDefinition","src":"675:462:100","nodes":[],"body":{"id":60675,"nodeType":"Block","src":"773:364:100","nodes":[],"statements":[{"expression":{"id":60662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60656,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60654,"src":"783:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60660,"name":"singleton","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60648,"src":"811:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"791:19:100","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"function (address) returns (contract GnosisSafeProxy)"},"typeName":{"id":60658,"nodeType":"UserDefinedTypeName","pathNode":{"id":60657,"name":"GnosisSafeProxy","nodeType":"IdentifierPath","referencedDeclaration":60633,"src":"795:15:100"},"referencedDeclaration":60633,"src":"795:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}}},"id":60661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"791:30:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"src":"783:38:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"id":60663,"nodeType":"ExpressionStatement","src":"783:38:100"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":60664,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60650,"src":"835:4:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":60665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"835:11:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"849:1:100","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"835:15:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60669,"nodeType":"IfStatement","src":"831:254:100","trueBody":{"AST":{"nodeType":"YulBlock","src":"933:152:100","statements":[{"body":{"nodeType":"YulBlock","src":"1019:52:100","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1048:1:100","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1051:1:100","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1041:6:100"},"nodeType":"YulFunctionCall","src":"1041:12:100"},"nodeType":"YulExpressionStatement","src":"1041:12:100"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"962:3:100"},"nodeType":"YulFunctionCall","src":"962:5:100"},{"name":"proxy","nodeType":"YulIdentifier","src":"969:5:100"},{"kind":"number","nodeType":"YulLiteral","src":"976:1:100","type":"","value":"0"},{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"983:4:100"},{"kind":"number","nodeType":"YulLiteral","src":"989:4:100","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"979:3:100"},"nodeType":"YulFunctionCall","src":"979:15:100"},{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1002:4:100"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"996:5:100"},"nodeType":"YulFunctionCall","src":"996:11:100"},{"kind":"number","nodeType":"YulLiteral","src":"1009:1:100","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1012:1:100","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"957:4:100"},"nodeType":"YulFunctionCall","src":"957:57:100"},{"kind":"number","nodeType":"YulLiteral","src":"1016:1:100","type":"","value":"0"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"954:2:100"},"nodeType":"YulFunctionCall","src":"954:64:100"},"nodeType":"YulIf","src":"951:120:100"}]},"evmVersion":"london","externalReferences":[{"declaration":60650,"isOffset":false,"isSlot":false,"src":"1002:4:100","valueSize":1},{"declaration":60650,"isOffset":false,"isSlot":false,"src":"983:4:100","valueSize":1},{"declaration":60654,"isOffset":false,"isSlot":false,"src":"969:5:100","valueSize":1}],"id":60668,"nodeType":"InlineAssembly","src":"924:161:100"}},{"eventCall":{"arguments":[{"id":60671,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60654,"src":"1113:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},{"id":60672,"name":"singleton","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60648,"src":"1120:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60670,"name":"ProxyCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60645,"src":"1099:13:100","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_GnosisSafeProxy_$60633_$_t_address_$returns$__$","typeString":"function (contract GnosisSafeProxy,address)"}},"id":60673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1099:31:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60674,"nodeType":"EmitStatement","src":"1094:36:100"}]},"documentation":{"id":60646,"nodeType":"StructuredDocumentation","src":"430:240:100","text":"@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param singleton Address of singleton contract.\n @param data Payload for message call sent to new proxy contract."},"functionSelector":"61b69abd","implemented":true,"kind":"function","modifiers":[],"name":"createProxy","nameLocation":"684:11:100","parameters":{"id":60651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60648,"mutability":"mutable","name":"singleton","nameLocation":"704:9:100","nodeType":"VariableDeclaration","scope":60676,"src":"696:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60647,"name":"address","nodeType":"ElementaryTypeName","src":"696:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60650,"mutability":"mutable","name":"data","nameLocation":"728:4:100","nodeType":"VariableDeclaration","scope":60676,"src":"715:17:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60649,"name":"bytes","nodeType":"ElementaryTypeName","src":"715:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"695:38:100"},"returnParameters":{"id":60655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60654,"mutability":"mutable","name":"proxy","nameLocation":"766:5:100","nodeType":"VariableDeclaration","scope":60676,"src":"750:21:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},"typeName":{"id":60653,"nodeType":"UserDefinedTypeName","pathNode":{"id":60652,"name":"GnosisSafeProxy","nodeType":"IdentifierPath","referencedDeclaration":60633,"src":"750:15:100"},"referencedDeclaration":60633,"src":"750:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"visibility":"internal"}],"src":"749:23:100"},"scope":60880,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":60688,"nodeType":"FunctionDefinition","src":"1277:120:100","nodes":[],"body":{"id":60687,"nodeType":"Block","src":"1340:57:100","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":60683,"name":"GnosisSafeProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60633,"src":"1362:15:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"type(contract GnosisSafeProxy)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"type(contract GnosisSafeProxy)"}],"id":60682,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1357:4:100","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":60684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1357:21:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_GnosisSafeProxy_$60633","typeString":"type(contract GnosisSafeProxy)"}},"id":60685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"runtimeCode","nodeType":"MemberAccess","src":"1357:33:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60681,"id":60686,"nodeType":"Return","src":"1350:40:100"}]},"documentation":{"id":60677,"nodeType":"StructuredDocumentation","src":"1143:129:100","text":"@dev Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed."},"functionSelector":"addacc0f","implemented":true,"kind":"function","modifiers":[],"name":"proxyRuntimeCode","nameLocation":"1286:16:100","parameters":{"id":60678,"nodeType":"ParameterList","parameters":[],"src":"1302:2:100"},"returnParameters":{"id":60681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60688,"src":"1326:12:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60679,"name":"bytes","nodeType":"ElementaryTypeName","src":"1326:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1325:14:100"},"scope":60880,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":60700,"nodeType":"FunctionDefinition","src":"1548:122:100","nodes":[],"body":{"id":60699,"nodeType":"Block","src":"1612:58:100","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":60695,"name":"GnosisSafeProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60633,"src":"1634:15:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"type(contract GnosisSafeProxy)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"type(contract GnosisSafeProxy)"}],"id":60694,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1629:4:100","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":60696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1629:21:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_GnosisSafeProxy_$60633","typeString":"type(contract GnosisSafeProxy)"}},"id":60697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"creationCode","nodeType":"MemberAccess","src":"1629:34:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60693,"id":60698,"nodeType":"Return","src":"1622:41:100"}]},"documentation":{"id":60689,"nodeType":"StructuredDocumentation","src":"1403:140:100","text":"@dev Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address."},"functionSelector":"53e5d935","implemented":true,"kind":"function","modifiers":[],"name":"proxyCreationCode","nameLocation":"1557:17:100","parameters":{"id":60690,"nodeType":"ParameterList","parameters":[],"src":"1574:2:100"},"returnParameters":{"id":60693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60700,"src":"1598:12:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60691,"name":"bytes","nodeType":"ElementaryTypeName","src":"1598:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1597:14:100"},"scope":60880,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":60757,"nodeType":"FunctionDefinition","src":"2118:769:100","nodes":[],"body":{"id":60756,"nodeType":"Block","src":"2284:603:100","nodes":[],"statements":[{"assignments":[60714],"declarations":[{"constant":false,"id":60714,"mutability":"mutable","name":"salt","nameLocation":"2444:4:100","nodeType":"VariableDeclaration","scope":60756,"src":"2436:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2436:7:100","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":60724,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":60719,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60705,"src":"2488:11:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":60718,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2478:9:100","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":60720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2478:22:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":60721,"name":"saltNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60707,"src":"2502:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":60716,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2461:3:100","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":60717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2461:16:100","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":60722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2461:51:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":60715,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2451:9:100","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":60723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2451:62:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2436:77:100"},{"assignments":[60726],"declarations":[{"constant":false,"id":60726,"mutability":"mutable","name":"deploymentData","nameLocation":"2536:14:100","nodeType":"VariableDeclaration","scope":60756,"src":"2523:27:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60725,"name":"bytes","nodeType":"ElementaryTypeName","src":"2523:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":60741,"initialValue":{"arguments":[{"expression":{"arguments":[{"id":60730,"name":"GnosisSafeProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60633,"src":"2575:15:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"type(contract GnosisSafeProxy)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"type(contract GnosisSafeProxy)"}],"id":60729,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2570:4:100","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":60731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2570:21:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_GnosisSafeProxy_$60633","typeString":"type(contract GnosisSafeProxy)"}},"id":60732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"creationCode","nodeType":"MemberAccess","src":"2570:34:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"arguments":[{"id":60737,"name":"_singleton","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60703,"src":"2622:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2614:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":60735,"name":"uint160","nodeType":"ElementaryTypeName","src":"2614:7:100","typeDescriptions":{}}},"id":60738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2614:19:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":60734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2606:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":60733,"name":"uint256","nodeType":"ElementaryTypeName","src":"2606:7:100","typeDescriptions":{}}},"id":60739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2606:28:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":60727,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2553:3:100","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":60728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2553:16:100","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":60740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2553:82:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2523:112:100"},{"AST":{"nodeType":"YulBlock","src":"2710:101:100","statements":[{"nodeType":"YulAssignment","src":"2724:77:100","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2741:3:100","type":"","value":"0x0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2750:4:100","type":"","value":"0x20"},{"name":"deploymentData","nodeType":"YulIdentifier","src":"2756:14:100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2746:3:100"},"nodeType":"YulFunctionCall","src":"2746:25:100"},{"arguments":[{"name":"deploymentData","nodeType":"YulIdentifier","src":"2779:14:100"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2773:5:100"},"nodeType":"YulFunctionCall","src":"2773:21:100"},{"name":"salt","nodeType":"YulIdentifier","src":"2796:4:100"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"2733:7:100"},"nodeType":"YulFunctionCall","src":"2733:68:100"},"variableNames":[{"name":"proxy","nodeType":"YulIdentifier","src":"2724:5:100"}]}]},"evmVersion":"london","externalReferences":[{"declaration":60726,"isOffset":false,"isSlot":false,"src":"2756:14:100","valueSize":1},{"declaration":60726,"isOffset":false,"isSlot":false,"src":"2779:14:100","valueSize":1},{"declaration":60711,"isOffset":false,"isSlot":false,"src":"2724:5:100","valueSize":1},{"declaration":60714,"isOffset":false,"isSlot":false,"src":"2796:4:100","valueSize":1}],"id":60742,"nodeType":"InlineAssembly","src":"2701:110:100"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":60752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":60746,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60711,"src":"2836:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}],"id":60745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2828:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60744,"name":"address","nodeType":"ElementaryTypeName","src":"2828:7:100","typeDescriptions":{}}},"id":60747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2828:14:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":60750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2854:1:100","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":60749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2846:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60748,"name":"address","nodeType":"ElementaryTypeName","src":"2846:7:100","typeDescriptions":{}}},"id":60751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2846:10:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2828:28:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"437265617465322063616c6c206661696c6564","id":60753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2858:21:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7c71a0bdd2eb2834ad042153c811dd478e4ee2324e3003b9522e03e7b3735dc","typeString":"literal_string \"Create2 call failed\""},"value":"Create2 call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d7c71a0bdd2eb2834ad042153c811dd478e4ee2324e3003b9522e03e7b3735dc","typeString":"literal_string \"Create2 call failed\""}],"id":60743,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2820:7:100","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2820:60:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60755,"nodeType":"ExpressionStatement","src":"2820:60:100"}]},"documentation":{"id":60701,"nodeType":"StructuredDocumentation","src":"1676:437:100","text":"@dev Allows to create new proxy contact using CREATE2 but it doesn't run the initializer.\n      This method is only meant as an utility to be called from other methods\n @param _singleton Address of singleton contract.\n @param initializer Payload for message call sent to new proxy contract.\n @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract."},"implemented":true,"kind":"function","modifiers":[],"name":"deployProxyWithNonce","nameLocation":"2127:20:100","parameters":{"id":60708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60703,"mutability":"mutable","name":"_singleton","nameLocation":"2165:10:100","nodeType":"VariableDeclaration","scope":60757,"src":"2157:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60702,"name":"address","nodeType":"ElementaryTypeName","src":"2157:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60705,"mutability":"mutable","name":"initializer","nameLocation":"2198:11:100","nodeType":"VariableDeclaration","scope":60757,"src":"2185:24:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60704,"name":"bytes","nodeType":"ElementaryTypeName","src":"2185:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60707,"mutability":"mutable","name":"saltNonce","nameLocation":"2227:9:100","nodeType":"VariableDeclaration","scope":60757,"src":"2219:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60706,"name":"uint256","nodeType":"ElementaryTypeName","src":"2219:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2147:95:100"},"returnParameters":{"id":60712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60711,"mutability":"mutable","name":"proxy","nameLocation":"2277:5:100","nodeType":"VariableDeclaration","scope":60757,"src":"2261:21:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},"typeName":{"id":60710,"nodeType":"UserDefinedTypeName","pathNode":{"id":60709,"name":"GnosisSafeProxy","nodeType":"IdentifierPath","referencedDeclaration":60633,"src":"2261:15:100"},"referencedDeclaration":60633,"src":"2261:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"visibility":"internal"}],"src":"2260:23:100"},"scope":60880,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":60790,"nodeType":"FunctionDefinition","src":"3268:576:100","nodes":[],"body":{"id":60789,"nodeType":"Block","src":"3432:412:100","nodes":[],"statements":[{"expression":{"id":60776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60770,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60768,"src":"3442:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60772,"name":"_singleton","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60760,"src":"3471:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60773,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60762,"src":"3483:11:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":60774,"name":"saltNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60764,"src":"3496:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":60771,"name":"deployProxyWithNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60757,"src":"3450:20:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"function (address,bytes memory,uint256) returns (contract GnosisSafeProxy)"}},"id":60775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3450:56:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"src":"3442:64:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"id":60777,"nodeType":"ExpressionStatement","src":"3442:64:100"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":60778,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60762,"src":"3520:11:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":60779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3520:18:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3541:1:100","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3520:22:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60783,"nodeType":"IfStatement","src":"3516:275:100","trueBody":{"AST":{"nodeType":"YulBlock","src":"3625:166:100","statements":[{"body":{"nodeType":"YulBlock","src":"3725:52:100","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3754:1:100","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3757:1:100","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3747:6:100"},"nodeType":"YulFunctionCall","src":"3747:12:100"},"nodeType":"YulExpressionStatement","src":"3747:12:100"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"3654:3:100"},"nodeType":"YulFunctionCall","src":"3654:5:100"},{"name":"proxy","nodeType":"YulIdentifier","src":"3661:5:100"},{"kind":"number","nodeType":"YulLiteral","src":"3668:1:100","type":"","value":"0"},{"arguments":[{"name":"initializer","nodeType":"YulIdentifier","src":"3675:11:100"},{"kind":"number","nodeType":"YulLiteral","src":"3688:4:100","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3671:3:100"},"nodeType":"YulFunctionCall","src":"3671:22:100"},{"arguments":[{"name":"initializer","nodeType":"YulIdentifier","src":"3701:11:100"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:100"},"nodeType":"YulFunctionCall","src":"3695:18:100"},{"kind":"number","nodeType":"YulLiteral","src":"3715:1:100","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3718:1:100","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"3649:4:100"},"nodeType":"YulFunctionCall","src":"3649:71:100"},{"kind":"number","nodeType":"YulLiteral","src":"3722:1:100","type":"","value":"0"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3646:2:100"},"nodeType":"YulFunctionCall","src":"3646:78:100"},"nodeType":"YulIf","src":"3643:134:100"}]},"evmVersion":"london","externalReferences":[{"declaration":60762,"isOffset":false,"isSlot":false,"src":"3675:11:100","valueSize":1},{"declaration":60762,"isOffset":false,"isSlot":false,"src":"3701:11:100","valueSize":1},{"declaration":60768,"isOffset":false,"isSlot":false,"src":"3661:5:100","valueSize":1}],"id":60782,"nodeType":"InlineAssembly","src":"3616:175:100"}},{"eventCall":{"arguments":[{"id":60785,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60768,"src":"3819:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},{"id":60786,"name":"_singleton","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60760,"src":"3826:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60784,"name":"ProxyCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60645,"src":"3805:13:100","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_GnosisSafeProxy_$60633_$_t_address_$returns$__$","typeString":"function (contract GnosisSafeProxy,address)"}},"id":60787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3805:32:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60788,"nodeType":"EmitStatement","src":"3800:37:100"}]},"documentation":{"id":60758,"nodeType":"StructuredDocumentation","src":"2893:370:100","text":"@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param _singleton Address of singleton contract.\n @param initializer Payload for message call sent to new proxy contract.\n @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract."},"functionSelector":"1688f0b9","implemented":true,"kind":"function","modifiers":[],"name":"createProxyWithNonce","nameLocation":"3277:20:100","parameters":{"id":60765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60760,"mutability":"mutable","name":"_singleton","nameLocation":"3315:10:100","nodeType":"VariableDeclaration","scope":60790,"src":"3307:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60759,"name":"address","nodeType":"ElementaryTypeName","src":"3307:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60762,"mutability":"mutable","name":"initializer","nameLocation":"3348:11:100","nodeType":"VariableDeclaration","scope":60790,"src":"3335:24:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60761,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60764,"mutability":"mutable","name":"saltNonce","nameLocation":"3377:9:100","nodeType":"VariableDeclaration","scope":60790,"src":"3369:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60763,"name":"uint256","nodeType":"ElementaryTypeName","src":"3369:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3297:95:100"},"returnParameters":{"id":60769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60768,"mutability":"mutable","name":"proxy","nameLocation":"3425:5:100","nodeType":"VariableDeclaration","scope":60790,"src":"3409:21:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},"typeName":{"id":60767,"nodeType":"UserDefinedTypeName","pathNode":{"id":60766,"name":"GnosisSafeProxy","nodeType":"IdentifierPath","referencedDeclaration":60633,"src":"3409:15:100"},"referencedDeclaration":60633,"src":"3409:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"visibility":"internal"}],"src":"3408:23:100"},"scope":60880,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":60847,"nodeType":"FunctionDefinition","src":"4382:511:100","nodes":[],"body":{"id":60846,"nodeType":"Block","src":"4590:303:100","nodes":[],"statements":[{"assignments":[60807],"declarations":[{"constant":false,"id":60807,"mutability":"mutable","name":"saltNonceWithCallback","nameLocation":"4608:21:100","nodeType":"VariableDeclaration","scope":60846,"src":"4600:29:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60806,"name":"uint256","nodeType":"ElementaryTypeName","src":"4600:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60818,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":60813,"name":"saltNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60797,"src":"4667:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60814,"name":"callback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60800,"src":"4678:8:100","typeDescriptions":{"typeIdentifier":"t_contract$_IProxyCreationCallback_$60896","typeString":"contract IProxyCreationCallback"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IProxyCreationCallback_$60896","typeString":"contract IProxyCreationCallback"}],"expression":{"id":60811,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4650:3:100","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":60812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4650:16:100","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":60815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4650:37:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":60810,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4640:9:100","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":60816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4640:48:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":60809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4632:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":60808,"name":"uint256","nodeType":"ElementaryTypeName","src":"4632:7:100","typeDescriptions":{}}},"id":60817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4632:57:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4600:89:100"},{"expression":{"id":60825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60819,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60804,"src":"4699:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60821,"name":"_singleton","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60793,"src":"4728:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60822,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60795,"src":"4740:11:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":60823,"name":"saltNonceWithCallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60807,"src":"4753:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":60820,"name":"createProxyWithNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60790,"src":"4707:20:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"function (address,bytes memory,uint256) returns (contract GnosisSafeProxy)"}},"id":60824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4707:68:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"src":"4699:76:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"id":60826,"nodeType":"ExpressionStatement","src":"4699:76:100"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":60835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":60829,"name":"callback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60800,"src":"4797:8:100","typeDescriptions":{"typeIdentifier":"t_contract$_IProxyCreationCallback_$60896","typeString":"contract IProxyCreationCallback"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProxyCreationCallback_$60896","typeString":"contract IProxyCreationCallback"}],"id":60828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4789:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60827,"name":"address","nodeType":"ElementaryTypeName","src":"4789:7:100","typeDescriptions":{}}},"id":60830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4789:17:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":60833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4818:1:100","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":60832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4810:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60831,"name":"address","nodeType":"ElementaryTypeName","src":"4810:7:100","typeDescriptions":{}}},"id":60834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4810:10:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4789:31:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60845,"nodeType":"IfStatement","src":"4785:101:100","trueBody":{"expression":{"arguments":[{"id":60839,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60804,"src":"4844:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},{"id":60840,"name":"_singleton","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60793,"src":"4851:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60841,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60795,"src":"4863:11:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":60842,"name":"saltNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60797,"src":"4876:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":60836,"name":"callback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60800,"src":"4822:8:100","typeDescriptions":{"typeIdentifier":"t_contract$_IProxyCreationCallback_$60896","typeString":"contract IProxyCreationCallback"}},"id":60838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"proxyCreated","nodeType":"MemberAccess","referencedDeclaration":60895,"src":"4822:21:100","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_GnosisSafeProxy_$60633_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (contract GnosisSafeProxy,address,bytes memory,uint256) external"}},"id":60843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4822:64:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60844,"nodeType":"ExpressionStatement","src":"4822:64:100"}}]},"documentation":{"id":60791,"nodeType":"StructuredDocumentation","src":"3850:527:100","text":"@dev Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction\n @param _singleton Address of singleton contract.\n @param initializer Payload for message call sent to new proxy contract.\n @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\n @param callback Callback that will be invoced after the new proxy contract has been successfully deployed and initialized."},"functionSelector":"d18af54d","implemented":true,"kind":"function","modifiers":[],"name":"createProxyWithCallback","nameLocation":"4391:23:100","parameters":{"id":60801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60793,"mutability":"mutable","name":"_singleton","nameLocation":"4432:10:100","nodeType":"VariableDeclaration","scope":60847,"src":"4424:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60792,"name":"address","nodeType":"ElementaryTypeName","src":"4424:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60795,"mutability":"mutable","name":"initializer","nameLocation":"4465:11:100","nodeType":"VariableDeclaration","scope":60847,"src":"4452:24:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60794,"name":"bytes","nodeType":"ElementaryTypeName","src":"4452:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60797,"mutability":"mutable","name":"saltNonce","nameLocation":"4494:9:100","nodeType":"VariableDeclaration","scope":60847,"src":"4486:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60796,"name":"uint256","nodeType":"ElementaryTypeName","src":"4486:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60800,"mutability":"mutable","name":"callback","nameLocation":"4536:8:100","nodeType":"VariableDeclaration","scope":60847,"src":"4513:31:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProxyCreationCallback_$60896","typeString":"contract IProxyCreationCallback"},"typeName":{"id":60799,"nodeType":"UserDefinedTypeName","pathNode":{"id":60798,"name":"IProxyCreationCallback","nodeType":"IdentifierPath","referencedDeclaration":60896,"src":"4513:22:100"},"referencedDeclaration":60896,"src":"4513:22:100","typeDescriptions":{"typeIdentifier":"t_contract$_IProxyCreationCallback_$60896","typeString":"contract IProxyCreationCallback"}},"visibility":"internal"}],"src":"4414:136:100"},"returnParameters":{"id":60805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60804,"mutability":"mutable","name":"proxy","nameLocation":"4583:5:100","nodeType":"VariableDeclaration","scope":60847,"src":"4567:21:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},"typeName":{"id":60803,"nodeType":"UserDefinedTypeName","pathNode":{"id":60802,"name":"GnosisSafeProxy","nodeType":"IdentifierPath","referencedDeclaration":60633,"src":"4567:15:100"},"referencedDeclaration":60633,"src":"4567:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"visibility":"internal"}],"src":"4566:23:100"},"scope":60880,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":60879,"nodeType":"FunctionDefinition","src":"5510:314:100","nodes":[],"body":{"id":60878,"nodeType":"Block","src":"5694:130:100","nodes":[],"statements":[{"expression":{"id":60866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60860,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60858,"src":"5704:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60862,"name":"_singleton","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60850,"src":"5733:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60863,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60852,"src":"5745:11:100","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":60864,"name":"saltNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60854,"src":"5758:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":60861,"name":"deployProxyWithNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60757,"src":"5712:20:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_contract$_GnosisSafeProxy_$60633_$","typeString":"function (address,bytes memory,uint256) returns (contract GnosisSafeProxy)"}},"id":60865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5712:56:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"src":"5704:64:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"id":60867,"nodeType":"ExpressionStatement","src":"5704:64:100"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":60873,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60858,"src":"5809:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}],"expression":{"id":60871,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5792:3:100","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":60872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5792:16:100","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":60874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5792:23:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":60870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5785:6:100","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":60869,"name":"string","nodeType":"ElementaryTypeName","src":"5785:6:100","typeDescriptions":{}}},"id":60875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5785:31:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":60868,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5778:6:100","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":60876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5778:39:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60877,"nodeType":"ExpressionStatement","src":"5778:39:100"}]},"documentation":{"id":60848,"nodeType":"StructuredDocumentation","src":"4899:606:100","text":"@dev Allows to get the address for a new proxy contact created via `createProxyWithNonce`\n      This method is only meant for address calculation purpose when you use an initializer that would revert,\n      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.\n @param _singleton Address of singleton contract.\n @param initializer Payload for message call sent to new proxy contract.\n @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract."},"functionSelector":"2500510e","implemented":true,"kind":"function","modifiers":[],"name":"calculateCreateProxyWithNonceAddress","nameLocation":"5519:36:100","parameters":{"id":60855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60850,"mutability":"mutable","name":"_singleton","nameLocation":"5573:10:100","nodeType":"VariableDeclaration","scope":60879,"src":"5565:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60849,"name":"address","nodeType":"ElementaryTypeName","src":"5565:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60852,"mutability":"mutable","name":"initializer","nameLocation":"5608:11:100","nodeType":"VariableDeclaration","scope":60879,"src":"5593:26:100","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":60851,"name":"bytes","nodeType":"ElementaryTypeName","src":"5593:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60854,"mutability":"mutable","name":"saltNonce","nameLocation":"5637:9:100","nodeType":"VariableDeclaration","scope":60879,"src":"5629:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60853,"name":"uint256","nodeType":"ElementaryTypeName","src":"5629:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5555:97:100"},"returnParameters":{"id":60859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60858,"mutability":"mutable","name":"proxy","nameLocation":"5687:5:100","nodeType":"VariableDeclaration","scope":60879,"src":"5671:21:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"},"typeName":{"id":60857,"nodeType":"UserDefinedTypeName","pathNode":{"id":60856,"name":"GnosisSafeProxy","nodeType":"IdentifierPath","referencedDeclaration":60633,"src":"5671:15:100"},"referencedDeclaration":60633,"src":"5671:15:100","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisSafeProxy_$60633","typeString":"contract GnosisSafeProxy"}},"visibility":"internal"}],"src":"5670:23:100"},"scope":60880,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"GnosisSafeProxyFactory","contractDependencies":[60633],"contractKind":"contract","documentation":{"id":60638,"nodeType":"StructuredDocumentation","src":"147:177:100","text":"@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - <stefan@gnosis.pm>"},"fullyImplemented":true,"linearizedBaseContracts":[60880],"name":"GnosisSafeProxyFactory","nameLocation":"333:22:100","scope":60881,"usedErrors":[]}],"license":"LGPL-3.0-only"},"id":100}