From c97b40db006ba2077b92d26b3fa0855960b78c6d Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Thu, 11 Apr 2019 16:50:53 +0300 Subject: [PATCH 01/19] updated example --- Example/web3swiftExample/Podfile | 3 +- Example/web3swiftExample/Podfile.lock | 55 +- .../Pods/CryptoSwift/README.md | 30 +- .../Sources/CryptoSwift/Array+Extension.swift | 2 +- .../Sources/CryptoSwift/BlockDecryptor.swift | 7 +- .../Sources/CryptoSwift/BlockMode/GCM.swift | 43 +- .../Sources/CryptoSwift/Digest.swift | 2 +- .../Foundation/Array+Foundation.swift | 6 +- .../Foundation/Data+Extension.swift | 26 +- .../Sources/CryptoSwift/HMAC.swift | 13 +- .../Sources/CryptoSwift/PKCS/PBKDF1.swift | 10 +- .../Sources/CryptoSwift/PKCS/PBKDF2.swift | 2 +- .../Sources/CryptoSwift/Scrypt.swift | 256 + .../CryptoSwift/UInt64+Extension.swift | 14 +- Example/web3swiftExample/Pods/Manifest.lock | 55 +- .../Pods/Pods.xcodeproj/project.pbxproj | 4486 +++++++++-------- .../Foundation/Sources/NSTask+AnyPromise.m | 15 +- .../Sources/NSURLSession+Promise.swift | 2 - .../Foundation/Sources/Process+Promise.swift | 50 +- .../Pods/PromiseKit/README.md | 5 +- .../Pods/PromiseKit/Sources/Error.swift | 5 - .../Pods/PromiseKit/Sources/when.swift | 9 +- .../web3swiftExample/Pods/Starscream/LICENSE | 176 + .../Pods/Starscream/README.md | 415 ++ .../Sources/Starscream/Compression.swift | 177 + .../Starscream/SSLClientCertificate.swift | 92 + .../Sources/Starscream/SSLSecurity.swift | 266 + .../Sources/Starscream/WebSocket.swift | 1356 +++++ .../BigInt/BigInt.xcconfig | 1 - .../CryptoSwift/CryptoSwift-Info.plist | 2 +- .../CryptoSwift/CryptoSwift.xcconfig | 2 +- .../EthereumABI/EthereumABI.xcconfig | 1 - .../EthereumAddress/EthereumAddress.xcconfig | 1 - ...web3swiftExample-acknowledgements.markdown | 186 +- ...ds-web3swiftExample-acknowledgements.plist | 190 +- .../Pods-web3swiftExample-frameworks.sh | 12 +- .../Pods-web3swiftExample.debug.xcconfig | 7 +- .../Pods-web3swiftExample.release.xcconfig | 7 +- .../PromiseKit/PromiseKit-Info.plist | 2 +- .../Starscream-Info.plist} | 2 +- .../Starscream/Starscream-dummy.m | 5 + .../Starscream-prefix.pch} | 0 .../Starscream-umbrella.h} | 5 +- .../Starscream/Starscream.modulemap | 6 + .../Starscream/Starscream.xcconfig | 9 + .../SwiftRLP/SwiftRLP-Info.plist | 2 +- .../SwiftRLP/SwiftRLP.xcconfig | 1 - .../scrypt/scrypt-dummy.m | 5 - .../scrypt/scrypt.modulemap | 6 - .../scrypt/scrypt.xcconfig | 19 - .../secp256k1_swift/secp256k1_swift.xcconfig | 6 +- .../web3swift/web3swift-Info.plist | 2 +- .../web3swift/web3swift.xcconfig | 4 +- Example/web3swiftExample/Pods/scrypt/LICENSE | 13 - .../Pods/scrypt/scrypt/Cimpl.c | 368 -- .../Pods/scrypt/scrypt/Cimpl.h | 51 - .../Pods/scrypt/scrypt/module.modulemap | 4 - .../Pods/scrypt/scrypt/scrypt.h | 23 - .../scrypt/scrypt/scrypt/BufferStorage.swift | 158 - .../Pods/scrypt/scrypt/scrypt/Salsa.swift | 198 - .../Pods/scrypt/scrypt/scrypt/Scrypt.swift | 230 - .../web3swiftExample/Pods/web3swift/README.md | 221 +- .../Contract/Classes/ContractProtocol.swift | 7 +- .../Contract/Classes/EthereumContract.swift | 1 - .../Convenience/Classes/Base58.swift | 6 +- .../Classes/BigUInt+Extensions.swift | 0 .../Classes/CryptoExtensions.swift | 2 +- .../Convenience/Classes/Data+Extension.swift | 52 + .../Classes/RIPEMD160+StackOveflow.swift | 101 +- .../Classes/Web3+BrowserFunctions.swift | 202 + .../Classes/BIP32Keystore.swift | 27 +- .../KeystoreManager/Classes/BIP39.swift | 12 +- .../Classes/EthereumKeystoreV3.swift | 12 +- .../Classes/KeystoreManager.swift | 2 +- .../ERC1155/Web3+ERC1155.swift | 147 + .../ERC1376/Web3+ERC1376.swift | 502 ++ .../ERC1400/Web3+ERC1400.swift | 931 ++++ .../ERC1410/Web3+ERC1410.swift | 664 +++ .../ERC1594/Web3+ERC1594.swift | 409 ++ .../ERC1633/Web3+ERC1633.swift | 254 + .../ERC1643/Web3+ERC1643.swift | 267 + .../ERC1644/Web3+ERC1644.swift | 283 ++ .../ERC165/Web3+ERC165.swift | 16 + .../ERC20/Web3+ERC20.swift | 228 + .../ERC721/Web3+ERC721.swift | 256 + .../ERC721x/Web3+ERC721x.swift | 312 ++ .../ERC777/Web3+ERC777.swift | 445 ++ .../ERC820/Web3+ERC820.swift | 20 + .../ERC888/Web3+ERC888.swift | 138 + .../PrecompiledContracts/ST20/Web3+ST20.swift | 314 ++ .../ST20/Web3+SecurityToken.swift | 473 ++ .../Promises/Classes/Promise+Batching.swift | 4 +- .../Promise+Web3+Personal+CreateAccount.swift | 0 .../Classes/Promise+Web3+TxPool.swift | 0 .../Classes/EthereumTransaction.swift | 183 +- .../Classes/TransactionSigner.swift | 6 +- .../web3swift/Utils/Classes/EIP67Code.swift | 2 +- .../Web3/Classes/Web3+Contract.swift | 7 +- .../Web3/Classes/Web3+Eth+Websocket.swift | 41 + .../Web3/Classes/Web3+EventParser.swift | 3 +- .../Web3/Classes/Web3+Eventloop.swift | 0 .../web3swift/Web3/Classes/Web3+Infura.swift | 21 - .../Web3/Classes/Web3+InfuraProviders.swift | 197 + .../Web3/Classes/Web3+Instance.swift | 33 +- .../web3swift/Web3/Classes/Web3+JSONRPC.swift | 8 +- .../web3swift/Web3/Classes/Web3+Methods.swift | 8 + .../Classes/Web3+MutatingTransaction.swift | 4 +- .../web3swift/Web3/Classes/Web3+Options.swift | 269 +- .../Web3/Classes/Web3+Protocols.swift | 7 + .../Classes/Web3+ReadingTransaction.swift | 21 +- .../Web3/Classes/Web3+Structures.swift | 64 +- .../web3swift/Web3/Classes/Web3+TxPool.swift | 0 .../web3swift/Web3/Classes/Web3+Utils.swift | 3532 ++++++++++++- .../Web3/Classes/Web3+WebsocketProvider.swift | 252 + .../web3swift/Web3/Classes/Web3.swift | 6 +- .../project.pbxproj | 102 +- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../web3swiftExample/AppDelegate.swift | 2 +- .../web3swiftExample/ViewController.swift | 144 +- TestToken/Helpers/TokenBasics/.DS_Store | Bin 6148 -> 0 bytes 120 files changed, 16197 insertions(+), 4137 deletions(-) create mode 100644 Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift create mode 100644 Example/web3swiftExample/Pods/Starscream/LICENSE create mode 100644 Example/web3swiftExample/Pods/Starscream/README.md create mode 100644 Example/web3swiftExample/Pods/Starscream/Sources/Starscream/Compression.swift create mode 100644 Example/web3swiftExample/Pods/Starscream/Sources/Starscream/SSLClientCertificate.swift create mode 100644 Example/web3swiftExample/Pods/Starscream/Sources/Starscream/SSLSecurity.swift create mode 100644 Example/web3swiftExample/Pods/Starscream/Sources/Starscream/WebSocket.swift rename Example/web3swiftExample/Pods/Target Support Files/{scrypt/scrypt-Info.plist => Starscream/Starscream-Info.plist} (96%) create mode 100644 Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-dummy.m rename Example/web3swiftExample/Pods/Target Support Files/{scrypt/scrypt-prefix.pch => Starscream/Starscream-prefix.pch} (100%) rename Example/web3swiftExample/Pods/Target Support Files/{scrypt/scrypt-umbrella.h => Starscream/Starscream-umbrella.h} (60%) create mode 100644 Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream.modulemap create mode 100644 Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream.xcconfig delete mode 100644 Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-dummy.m delete mode 100644 Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt.modulemap delete mode 100644 Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt.xcconfig delete mode 100755 Example/web3swiftExample/Pods/scrypt/LICENSE delete mode 100644 Example/web3swiftExample/Pods/scrypt/scrypt/Cimpl.c delete mode 100644 Example/web3swiftExample/Pods/scrypt/scrypt/Cimpl.h delete mode 100644 Example/web3swiftExample/Pods/scrypt/scrypt/module.modulemap delete mode 100755 Example/web3swiftExample/Pods/scrypt/scrypt/scrypt.h delete mode 100755 Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/BufferStorage.swift delete mode 100755 Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/Salsa.swift delete mode 100755 Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/Scrypt.swift mode change 100644 => 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/BigUInt+Extensions.swift create mode 100755 Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC165/Web3+ERC165.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift mode change 100644 => 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift mode change 100644 => 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+TxPool.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eth+Websocket.swift mode change 100644 => 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eventloop.swift delete mode 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Infura.swift create mode 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+InfuraProviders.swift mode change 100644 => 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift mode change 100644 => 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift mode change 100644 => 100755 Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+TxPool.swift create mode 100644 Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+WebsocketProvider.swift create mode 100644 Example/web3swiftExample/web3swiftExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100755 TestToken/Helpers/TokenBasics/.DS_Store diff --git a/Example/web3swiftExample/Podfile b/Example/web3swiftExample/Podfile index cbc7cf07a..d11f217a2 100755 --- a/Example/web3swiftExample/Podfile +++ b/Example/web3swiftExample/Podfile @@ -4,6 +4,5 @@ platform :ios, '9.0' target 'web3swiftExample' do use_frameworks! #use_modular_headers! - pod 'web3swift' -# pod 'web3swift', :git => 'https://github.com/matterinc/web3swift.git' + pod 'web3swift' end diff --git a/Example/web3swiftExample/Podfile.lock b/Example/web3swiftExample/Podfile.lock index 593c8c644..a52933d6b 100644 --- a/Example/web3swiftExample/Podfile.lock +++ b/Example/web3swiftExample/Podfile.lock @@ -1,37 +1,36 @@ PODS: - BigInt (3.1.0): - SipHash (~> 1.2) - - CryptoSwift (0.13.0) + - CryptoSwift (0.15.0) - EthereumABI (1.1.1): - BigInt (~> 3.1) - CryptoSwift (~> 0.13) - EthereumAddress (~> 1.0.0) - EthereumAddress (1.0.0): - CryptoSwift (~> 0.13) - - PromiseKit (6.5.2): - - PromiseKit/CorePromise (= 6.5.2) - - PromiseKit/Foundation (= 6.5.2) - - PromiseKit/UIKit (= 6.5.2) - - PromiseKit/CorePromise (6.5.2) - - PromiseKit/Foundation (6.5.2): + - PromiseKit (6.4.1): + - PromiseKit/CorePromise (= 6.4.1) + - PromiseKit/Foundation (= 6.4.1) + - PromiseKit/UIKit (= 6.4.1) + - PromiseKit/CorePromise (6.4.1) + - PromiseKit/Foundation (6.4.1): - PromiseKit/CorePromise - - PromiseKit/UIKit (6.5.2): + - PromiseKit/UIKit (6.4.1): - PromiseKit/CorePromise - - scrypt (2.0): - - CryptoSwift (~> 0.11) - secp256k1_swift (1.0.3) - SipHash (1.2.2) - - SwiftRLP (1.2): + - Starscream (3.1.0) + - SwiftRLP (1.1): - BigInt (~> 3.1) - - web3swift (2.0.1): - - BigInt (~> 3.1) - - CryptoSwift (~> 0.13) - - EthereumABI (~> 1.1.1) - - EthereumAddress (~> 1.0.0) - - PromiseKit (~> 6.3) - - scrypt (~> 2.0) - - secp256k1_swift (~> 1.0.3) - - SwiftRLP (~> 1.1) + - web3swift (2.1.3): + - BigInt (= 3.1) + - CryptoSwift (= 0.15.0) + - EthereumABI (= 1.1.1) + - EthereumAddress (= 1.0.0) + - PromiseKit (= 6.4.1) + - secp256k1_swift (= 1.0.3) + - Starscream (= 3.1.0) + - SwiftRLP (= 1.1) DEPENDENCIES: - web3swift @@ -43,24 +42,24 @@ SPEC REPOS: - EthereumABI - EthereumAddress - PromiseKit - - scrypt - secp256k1_swift - SipHash + - Starscream - SwiftRLP - web3swift SPEC CHECKSUMS: BigInt: 76b5dfdfa3e2e478d4ffdf161aeede5502e2742f - CryptoSwift: 16e78bebf567bad1c87b2d58f6547f25b74c31aa + CryptoSwift: 769f58a9e89f64e8796c2e59ce5f002dc81a2438 EthereumABI: f040f5429e5a4366d028c88b88d9441e137593af EthereumAddress: f476e1320dca3a0024431e713ede7a09c7eb7796 - PromiseKit: 27c1601bfb73405871b805bcb8cf7e55c4dad3db - scrypt: 3fe5b1a3b0976f97cd87488673a8f7c65708cc84 + PromiseKit: 4c76a6506638034e3d7bede97b2ff7743f7bd2dc secp256k1_swift: 4fc5c4b2d2c6d21ee8ccb868cdc92da12f38bed9 SipHash: fad90a4683e420c52ef28063063dbbce248ea6d4 - SwiftRLP: 98a02b2210128353ca02e4c2f4d83e2a9796db4f - web3swift: 33f30ca0e061e0f89117dfb46f5ee9f626eff6d6 + Starscream: 08172b481e145289c4930cb567230fb55897cfa4 + SwiftRLP: 5512899925f1a9e1c78c902ed3bf857880e814a0 + web3swift: 23cc365dd3b28e9b990813965af4bd031e108f64 -PODFILE CHECKSUM: 6d9e2706704c1b04a380df8a28b2457bc4f325b1 +PODFILE CHECKSUM: 7d59dcb370ef0a49f93b0ae5e632bd4a6841c169 -COCOAPODS: 1.6.0.beta.2 +COCOAPODS: 1.7.0.beta.3 diff --git a/Example/web3swiftExample/Pods/CryptoSwift/README.md b/Example/web3swiftExample/Pods/CryptoSwift/README.md index 2e7f54984..426836588 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/README.md +++ b/Example/web3swiftExample/Pods/CryptoSwift/README.md @@ -1,4 +1,4 @@ -[![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20macOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) +[![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20Android%20%7CmacOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) [![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0%20%7C%204.1-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/CryptoSwift.svg?style=flat&label=CocoaPods&colorA=28a745&&colorB=4E4E4E)](https://cocoapods.org/pods/CryptoSwift) @@ -11,7 +11,7 @@ Crypto related functions and helpers for [Swift](https://swift.org) implemented in Swift. ([#PureSwift](https://twitter.com/hashtag/pureswift)) -**Note**: The `master` branch follows the latest currently released **version of Swift**. If you need an version for older version of Swift, you can specify it's version in your Podfile or use the code on the branch for that version. Older branches are unsupported. Check [versions](#swift-versions-support) for details. +**Note**: The `master` branch follows the latest currently released **version of Swift**. If you need an earlier version for an older version of Swift, you can specify its version in your Podfile or use the code on the branch for that version. Older branches are unsupported. Check [versions](#swift-versions-support) for details. --- @@ -37,7 +37,7 @@ Good mood - Easy to use - Convenient extensions for String and Data - Support for incremental updates (stream, ...) -- iOS, macOS, AppleTV, watchOS, Linux support +- iOS, Android, macOS, AppleTV, watchOS, Linux support #### Hash (Digest) [MD5](http://tools.ietf.org/html/rfc1321) @@ -79,6 +79,7 @@ Good mood - [PBKDF1](http://tools.ietf.org/html/rfc2898#section-5.1) (Password-Based Key Derivation Function 1) - [PBKDF2](http://tools.ietf.org/html/rfc2898#section-5.2) (Password-Based Key Derivation Function 2) - [HKDF](https://tools.ietf.org/html/rfc5869) (HMAC-based Extract-and-Expand Key Derivation Function) +- [Scrypt](https://tools.ietf.org/html/rfc7914) (The scrypt Password-Based Key Derivation Function) #### Data padding PKCS#5 @@ -216,12 +217,12 @@ CryptoSwift uses array of bytes aka `Array` as a base type for all operat ##### Data types conversion -For you convenience **CryptoSwift** provides two functions to easily convert array of bytes to `Data` and another way around: +For your convenience, **CryptoSwift** provides two functions to easily convert an array of bytes to `Data` or `Data` to an array of bytes: Data from bytes: ```swift -let data = Data(bytes: [0x01, 0x02, 0x03]) +let data = Data( [0x01, 0x02, 0x03]) ``` `Data` to `Array` @@ -260,7 +261,7 @@ let digest = Digest.md5(bytes) ``` ```swift -let data = Data(bytes: [0x01, 0x02, 0x03]) +let data = Data( [0x01, 0x02, 0x03]) let hash = data.md5() let hash = data.sha1() @@ -314,6 +315,14 @@ let salt: Array = Array("nacllcan".utf8) let key = try PKCS5.PBKDF2(password: password, salt: salt, iterations: 4096, variant: .sha256).calculate() ``` +```swift +let password: Array = Array("s33krit".utf8) +let salt: Array = Array("nacllcan".utf8) +// Scrypt implementation does not implement work parallelization, so `p` parameter will +// increase the work time even in multicore systems +let key = try Scrypt(password: password, salt: salt, dkLen: 64, N: 16384, r: 8, p: 1).calculate() +``` + ##### HMAC-based Key Derivation Function ```swift @@ -323,6 +332,7 @@ let salt: Array = Array("nacllcan".utf8) let key = try HKDF(password: password, salt: salt, variant: .sha256).calculate() ``` + ##### Data Padding Some content-encryption algorithms assume the input length is a multiple of `k` octets, where `k` is greater than one. For such algorithms, the input shall be padded. @@ -354,7 +364,7 @@ let decrypted = try Blowfish(key: key, blockMode: CBC(iv: iv), padding: .pkcs7). ##### AES -Notice regarding padding: *Manual padding of data is optional, and CryptoSwift is using PKCS7 padding by default. If you need manually disable/enable padding, you can do this by setting parameter for __AES__ class* +Notice regarding padding: *Manual padding of data is optional, and CryptoSwift is using PKCS7 padding by default. If you need to manually disable/enable padding, you can do this by setting parameter for __AES__ class* Variant of AES encryption (AES-128, AES-192, AES-256) depends on given key length: @@ -424,7 +434,7 @@ let encrypted: Array = try! AES(key: Array("secret0key000000".utf8), bloc Using convenience extensions ```swift -let plain = Data(bytes: [0x01, 0x02, 0x03]) +let plain = Data( [0x01, 0x02, 0x03]) let encrypted = try! plain.encrypt(ChaCha20(key: key, iv: iv)) let decrypted = try! encrypted.decrypt(ChaCha20(key: key, iv: iv)) ``` @@ -460,13 +470,13 @@ do { } ``` -**Note**: GCM instance is not intended to be reused. So you can't use the `GCM` from encoding, do decoding. +**Note**: GCM instance is not intended to be reused. So you can't use the same `GCM` instance from encoding to also perform decoding. ##### AES-CCM The result of Counter with Cipher Block Chaining-Message Authentication Code encryption is ciphertext and **authentication tag**, that is later used to decryption. -``` +```swift do { // The authentication tag is appended to the encrypted message. let tagLength = 8 diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift index b6bc43303..752dcb829 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift @@ -76,7 +76,7 @@ extension Array where Element == UInt8 { extension Array where Element == UInt8 { /// split in chunks with given chunk size - @available(*, deprecated: 0.8.0, message: "") + @available(*, deprecated) public func chunks(size chunksize: Int) -> Array> { var words = Array>() words.reserveCapacity(count / chunksize) diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift index 9772cb4c5..7990a402b 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift @@ -46,8 +46,9 @@ public class BlockDecryptor: Cryptor, Updatable { // Processing in a block-size manner. It's good for block modes, but bad for stream modes. for var chunk in accumulatedWithoutSuffix.batched(by: blockSize) { if isLast || (accumulatedWithoutSuffix.count - processedBytesCount) >= blockSize { - - if isLast, var finalizingWorker = worker as? FinalizingDecryptModeWorker { + let isLastChunk = processedBytesCount + chunk.count == accumulatedWithoutSuffix.count + + if isLast, isLastChunk, var finalizingWorker = worker as? FinalizingDecryptModeWorker { chunk = try finalizingWorker.willDecryptLast(bytes: chunk + accumulated.suffix(worker.additionalBufferSize)) // tag size } @@ -55,7 +56,7 @@ public class BlockDecryptor: Cryptor, Updatable { plaintext += worker.decrypt(block: chunk) } - if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { + if isLast, isLastChunk, var finalizingWorker = worker as? FinalizingDecryptModeWorker { plaintext = Array(try finalizingWorker.didDecryptLast(bytes: plaintext.slice)) } diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift index aee8d29e2..d9bf5d94d 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift @@ -24,15 +24,6 @@ public final class GCM: BlockMode { case combined /// Some applications may need to store the authentication tag and the encrypted message at different locations. case detached - - var additionalBufferSize: Int { - switch self { - case .combined: - return GCMModeWorker.tagLength - case .detached: - return 0 - } - } } public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] @@ -47,6 +38,11 @@ public final class GCM: BlockMode { private let iv: Array private let additionalAuthenticatedData: Array? private let mode: Mode + + /// Length of authentication tag, in bytes. + /// For encryption, the value is given as init parameter. + /// For decryption, the lenght of given authentication tag is used. + private let tagLength: Int // `authenticationTag` nil for encryption, known tag for decryption /// For encryption, the value is set at the end of the encryption. @@ -54,15 +50,17 @@ public final class GCM: BlockMode { public var authenticationTag: Array? // encrypt - public init(iv: Array, additionalAuthenticatedData: Array? = nil, mode: Mode = .detached) { + /// Possible tag lengths: 4,8,12,13,14,15,16 + public init(iv: Array, additionalAuthenticatedData: Array? = nil, tagLength: Int = 16, mode: Mode = .detached) { self.iv = iv self.additionalAuthenticatedData = additionalAuthenticatedData self.mode = mode + self.tagLength = tagLength } // decrypt public convenience init(iv: Array, authenticationTag: Array, additionalAuthenticatedData: Array? = nil, mode: Mode = .detached) { - self.init(iv: iv, additionalAuthenticatedData: additionalAuthenticatedData, mode: mode) + self.init(iv: iv, additionalAuthenticatedData: additionalAuthenticatedData, tagLength: authenticationTag.count, mode: mode) self.authenticationTag = authenticationTag } @@ -71,7 +69,7 @@ public final class GCM: BlockMode { throw Error.invalidInitializationVector } - let worker = GCMModeWorker(iv: iv.slice, aad: additionalAuthenticatedData?.slice, expectedTag: authenticationTag, mode: mode, cipherOperation: cipherOperation) + let worker = GCMModeWorker(iv: iv.slice, aad: additionalAuthenticatedData?.slice, expectedTag: authenticationTag, tagLength: tagLength, mode: mode, cipherOperation: cipherOperation) worker.didCalculateTag = { [weak self] tag in self?.authenticationTag = tag } @@ -87,8 +85,7 @@ final class GCMModeWorker: BlockModeWorker, FinalizingEncryptModeWorker, Finaliz // Callback called when authenticationTag is ready var didCalculateTag: ((Array) -> Void)? - // 128 bit tag. Other possible tags 4,8,12,13,14,15,16 - fileprivate static let tagLength = 16 + private let tagLength: Int // GCM nonce is 96-bits by default. It's the most effective length for the IV private static let nonceSize = 12 @@ -115,15 +112,21 @@ final class GCMModeWorker: BlockModeWorker, FinalizingEncryptModeWorker, Finaliz return GF(aad: [UInt8](), h: h, blockSize: blockSize) }() - init(iv: ArraySlice, aad: ArraySlice? = nil, expectedTag: Array? = nil, mode: GCM.Mode, cipherOperation: @escaping CipherOperationOnBlock) { + init(iv: ArraySlice, aad: ArraySlice? = nil, expectedTag: Array? = nil, tagLength: Int, mode: GCM.Mode, cipherOperation: @escaping CipherOperationOnBlock) { self.cipherOperation = cipherOperation self.iv = iv self.mode = mode - self.additionalBufferSize = mode.additionalBufferSize self.aad = aad self.expectedTag = expectedTag + self.tagLength = tagLength h = UInt128(cipherOperation(Array(repeating: 0, count: blockSize).slice)!) // empty block + if mode == .combined { + self.additionalBufferSize = tagLength + } else { + self.additionalBufferSize = 0 + } + // Assume nonce is 12 bytes long, otherwise initial counter would be calulated from GHASH // counter = GF.ghash(aad: [UInt8](), ciphertext: nonce) if iv.count == GCMModeWorker.nonceSize { @@ -155,7 +158,7 @@ final class GCMModeWorker: BlockModeWorker, FinalizingEncryptModeWorker, Finaliz func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice { // Calculate MAC tag. let ghash = gf.ghashFinish() - let tag = Array((ghash ^ eky0).bytes.prefix(GCMModeWorker.tagLength)) + let tag = Array((ghash ^ eky0).bytes.prefix(tagLength)) // Notify handler didCalculateTag?(tag) @@ -192,8 +195,8 @@ final class GCMModeWorker: BlockModeWorker, FinalizingEncryptModeWorker, Finaliz switch mode { case .combined: // overwrite expectedTag property used later for verification - self.expectedTag = Array(ciphertext.suffix(GCMModeWorker.tagLength)) - return ciphertext[ciphertext.startIndex..) throws -> ArraySlice { // Calculate MAC tag. let ghash = gf.ghashFinish() - let computedTag = Array((ghash ^ eky0).bytes.prefix(GCMModeWorker.tagLength)) + let computedTag = Array((ghash ^ eky0).bytes.prefix(tagLength)) // Validate tag guard let expectedTag = self.expectedTag, computedTag == expectedTag else { diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift index a80f8a739..c3976eada 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift @@ -13,7 +13,7 @@ // - This notice may not be removed or altered from any source or binary distribution. // -@available(*, deprecated: 0.6.0, renamed: "Digest") +@available(*, renamed: "Digest") public typealias Hash = Digest /// Hash functions to calculate Digest. diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift index 46059d59b..ffab35d4c 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift @@ -16,11 +16,11 @@ import Foundation public extension Array where Element == UInt8 { - public func toBase64() -> String? { - return Data(bytes: self).base64EncodedString() + func toBase64() -> String? { + return Data( self).base64EncodedString() } - public init(base64: String) { + init(base64: String) { self.init() guard let decodedData = Data(base64Encoded: base64) else { diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift index ed5a8bfe3..38967b4dd 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift @@ -28,55 +28,55 @@ extension Data { } public func md5() -> Data { - return Data(bytes: Digest.md5(bytes)) + return Data( Digest.md5(bytes)) } public func sha1() -> Data { - return Data(bytes: Digest.sha1(bytes)) + return Data( Digest.sha1(bytes)) } public func sha224() -> Data { - return Data(bytes: Digest.sha224(bytes)) + return Data( Digest.sha224(bytes)) } public func sha256() -> Data { - return Data(bytes: Digest.sha256(bytes)) + return Data( Digest.sha256(bytes)) } public func sha384() -> Data { - return Data(bytes: Digest.sha384(bytes)) + return Data( Digest.sha384(bytes)) } public func sha512() -> Data { - return Data(bytes: Digest.sha512(bytes)) + return Data( Digest.sha512(bytes)) } public func sha3(_ variant: SHA3.Variant) -> Data { - return Data(bytes: Digest.sha3(bytes, variant: variant)) + return Data( Digest.sha3(bytes, variant: variant)) } public func crc32(seed: UInt32? = nil, reflect: Bool = true) -> Data { - return Data(bytes: Checksum.crc32(bytes, seed: seed, reflect: reflect).bytes()) + return Data( Checksum.crc32(bytes, seed: seed, reflect: reflect).bytes()) } public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> Data { - return Data(bytes: Checksum.crc32c(bytes, seed: seed, reflect: reflect).bytes()) + return Data( Checksum.crc32c(bytes, seed: seed, reflect: reflect).bytes()) } public func crc16(seed: UInt16? = nil) -> Data { - return Data(bytes: Checksum.crc16(bytes, seed: seed).bytes()) + return Data( Checksum.crc16(bytes, seed: seed).bytes()) } public func encrypt(cipher: Cipher) throws -> Data { - return Data(bytes: try cipher.encrypt(bytes.slice)) + return Data( try cipher.encrypt(bytes.slice)) } public func decrypt(cipher: Cipher) throws -> Data { - return Data(bytes: try cipher.decrypt(bytes.slice)) + return Data( try cipher.decrypt(bytes.slice)) } public func authenticate(with authenticator: Authenticator) throws -> Data { - return Data(bytes: try authenticator.authenticate(bytes)) + return Data( try authenticator.authenticate(bytes)) } } diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift index 16c3f1a7a..c5bfe3d3c 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift @@ -37,7 +37,7 @@ public final class HMAC: Authenticator { } } - func calculateHash(_ bytes: Array) -> Array? { + func calculateHash(_ bytes: Array) -> Array { switch self { case .sha1: return Digest.sha1(bytes) @@ -72,9 +72,8 @@ public final class HMAC: Authenticator { self.key = key if key.count > variant.blockSize() { - if let hash = variant.calculateHash(key) { - self.key = hash - } + let hash = variant.calculateHash(key) + self.key = hash } if key.count < variant.blockSize() { @@ -94,10 +93,8 @@ public final class HMAC: Authenticator { ipad[idx] = key[idx] ^ ipad[idx] } - guard let ipadAndMessageHash = variant.calculateHash(ipad + bytes), - let result = variant.calculateHash(opad + ipadAndMessageHash) else { - throw Error.authenticateError - } + let ipadAndMessageHash = variant.calculateHash(ipad + bytes) + let result = variant.calculateHash(opad + ipadAndMessageHash) // return Array(result[0..<10]) // 80 bits return result diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift index 15d6f0625..953b36ebd 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift @@ -19,7 +19,7 @@ public extension PKCS5 { /// PBKDF1 is recommended only for compatibility with existing /// applications since the keys it produces may not be large enough for /// some applications. - public struct PBKDF1 { + struct PBKDF1 { public enum Error: Swift.Error { case invalidInput case derivedKeyTooLong @@ -37,7 +37,7 @@ public extension PKCS5 { } } - fileprivate func calculateHash(_ bytes: Array) -> Array? { + fileprivate func calculateHash(_ bytes: Array) -> Array { switch self { case .sha1: return Digest.sha1(bytes) @@ -67,9 +67,7 @@ public extension PKCS5 { throw Error.derivedKeyTooLong } - guard let t1 = variant.calculateHash(password + salt) else { - throw Error.invalidInput - } + let t1 = variant.calculateHash(password + salt) self.iterations = iterations self.variant = variant @@ -81,7 +79,7 @@ public extension PKCS5 { public func calculate() -> Array { var t = t1 for _ in 2...iterations { - t = variant.calculateHash(t)! + t = variant.calculateHash(t) } return Array(t[0.. +// This software is provided 'as-is', without any express or implied warranty. +// +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +// +// https://tools.ietf.org/html/rfc7914 +// + +/// Implementation of the scrypt key derivation function. +public final class Scrypt { + enum Error: Swift.Error { + case nIsTooLarge + case rIsTooLarge + case nMustBeAPowerOf2GreaterThan1 + case invalidInput + } + + /// Configuration parameters. + private let salt: SecureBytes + private let password: SecureBytes + fileprivate let blocksize: Int // 128 * r + fileprivate let salsaBlock = UnsafeMutableRawPointer.allocate(byteCount: 64, alignment: 64) + private let dkLen: Int + private let N: Int + private let r: Int + private let p: Int + + /// - parameters: + /// - password: password + /// - salt: salt + /// - dkLen: output length + /// - N: determines extra memory used + /// - r: determines a block size + /// - p: determines parallelicity degree + public init(password: Array, salt: Array, dkLen: Int, N: Int, r: Int, p: Int) throws { + precondition(dkLen > 0) + precondition(N > 0) + precondition(r > 0) + precondition(p > 0) + + guard !(N < 2 || (N & (N - 1)) != 0) else { throw Error.nMustBeAPowerOf2GreaterThan1 } + + guard N <= .max / 128 / r else { throw Error.nIsTooLarge } + guard r <= .max / 128 / p else { throw Error.rIsTooLarge } + + guard !salt.isEmpty else { + throw Error.invalidInput + } + + blocksize = 128 * r + self.N = N + self.r = r + self.p = p + self.password = SecureBytes.init(bytes: password) + self.salt = SecureBytes.init(bytes: salt) + self.dkLen = dkLen + } + + /// Runs the key derivation function with a specific password. + public func calculate() throws -> [UInt8] { + // Allocate memory (as bytes for now) for further use in mixing steps + let B = UnsafeMutableRawPointer.allocate(byteCount: 128 * r * p, alignment: 64) + let XY = UnsafeMutableRawPointer.allocate(byteCount: 256 * r + 64, alignment: 64) + let V = UnsafeMutableRawPointer.allocate(byteCount: 128 * r * N, alignment: 64) + + // Deallocate memory when done + defer { + B.deallocate() + XY.deallocate() + V.deallocate() + } + + /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */ + // Expand the initial key + let barray = try PKCS5.PBKDF2(password: Array(password), salt: Array(salt), iterations: 1, keyLength: p * 128 * r, variant: .sha256).calculate() + barray.withUnsafeBytes { p in + B.copyMemory(from: p.baseAddress!, byteCount: barray.count) + } + + /* 2: for i = 0 to p - 1 do */ + // do the mixing + for i in 0 ..< p { + /* 3: B_i <-- MF(B_i, N) */ + smix(B + i * 128 * r, V.assumingMemoryBound(to: UInt32.self), XY.assumingMemoryBound(to: UInt32.self)) + } + + /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */ + let pointer = B.assumingMemoryBound(to: UInt8.self) + let bufferPointer = UnsafeBufferPointer(start: pointer, count: p * 128 * r) + let block = [UInt8](bufferPointer) + return try PKCS5.PBKDF2(password: Array(password), salt: block, iterations: 1, keyLength: dkLen, variant: .sha256).calculate() + } +} + +private extension Scrypt { + /// Computes `B = SMix_r(B, N)`. + /// + /// The input `block` must be `128*r` bytes in length; the temporary storage `v` must be `128*r*n` bytes in length; + /// the temporary storage `xy` must be `256*r + 64` bytes in length. The arrays `block`, `v`, and `xy` must be + /// aligned to a multiple of 64 bytes. + @inline(__always) func smix(_ block: UnsafeMutableRawPointer, _ v: UnsafeMutablePointer, _ xy: UnsafeMutablePointer) { + let X = xy + let Y = xy + 32 * r + let Z = xy + 64 * r + + /* 1: X <-- B */ + let typedBlock = block.assumingMemoryBound(to: UInt32.self) + X.assign(from: typedBlock, count: 32 * r) + + /* 2: for i = 0 to N - 1 do */ + for i in stride(from: 0, to: N, by: 2) { + /* 3: V_i <-- X */ + UnsafeMutableRawPointer(v + i * (32 * r)).copyMemory(from: X, byteCount: 128 * r) + + /* 4: X <-- H(X) */ + blockMixSalsa8(X, Y, Z) + + /* 3: V_i <-- X */ + UnsafeMutableRawPointer(v + (i + 1) * (32 * r)).copyMemory(from: Y, byteCount: 128 * r) + + /* 4: X <-- H(X) */ + blockMixSalsa8(Y, X, Z) + } + + /* 6: for i = 0 to N - 1 do */ + for _ in stride(from: 0, to: N, by: 2) { + /* + 7: j <-- Integerify (X) mod N + where Integerify (B[0] ... B[2 * r - 1]) is defined + as the result of interpreting B[2 * r - 1] as a little-endian integer. + */ + var j = Int(integerify(X) & UInt64(N - 1)) + + /* 8: X <-- H(X \xor V_j) */ + blockXor(X, v + j * 32 * r, 128 * r) + blockMixSalsa8(X, Y, Z) + + /* 7: j <-- Integerify(X) mod N */ + j = Int(integerify(Y) & UInt64(N - 1)) + + /* 8: X <-- H(X \xor V_j) */ + blockXor(Y, v + j * 32 * r, 128 * r) + blockMixSalsa8(Y, X, Z) + } + + /* 10: B' <-- X */ + for k in 0 ..< 32 * r { + UnsafeMutableRawPointer(block + 4 * k).storeBytes(of: X[k], as: UInt32.self) + } + } + + /// Returns the result of parsing `B_{2r-1}` as a little-endian integer. + @inline(__always) func integerify(_ block: UnsafeRawPointer) -> UInt64 { + let bi = block + (2 * r - 1) * 64 + return bi.load(as: UInt64.self).littleEndian + } + + /// Compute `bout = BlockMix_{salsa20/8, r}(bin)`. + /// + /// The input `bin` must be `128*r` bytes in length; the output `bout` must also be the same size. The temporary + /// space `x` must be 64 bytes. + @inline(__always) func blockMixSalsa8(_ bin: UnsafePointer, _ bout: UnsafeMutablePointer, _ x: UnsafeMutablePointer) { + /* 1: X <-- B_{2r - 1} */ + UnsafeMutableRawPointer(x).copyMemory(from: bin + (2 * r - 1) * 16, byteCount: 64) + + /* 2: for i = 0 to 2r - 1 do */ + for i in stride(from: 0, to: 2 * r, by: 2) { + /* 3: X <-- H(X \xor B_i) */ + blockXor(x, bin + i * 16, 64) + salsa20_8_typed(x) + + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + UnsafeMutableRawPointer(bout + i * 8).copyMemory(from: x, byteCount: 64) + + /* 3: X <-- H(X \xor B_i) */ + blockXor(x, bin + i * 16 + 16, 64) + salsa20_8_typed(x) + + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + UnsafeMutableRawPointer(bout + i * 8 + r * 16).copyMemory(from: x, byteCount: 64) + } + } + + @inline(__always) func salsa20_8_typed(_ block: UnsafeMutablePointer) { + salsaBlock.copyMemory(from: UnsafeRawPointer(block), byteCount: 64) + let salsaBlockTyped = salsaBlock.assumingMemoryBound(to: UInt32.self) + + for _ in stride(from: 0, to: 8, by: 2) { + salsaBlockTyped[4] ^= rotateLeft(salsaBlockTyped[0] &+ salsaBlockTyped[12], by: 7) + salsaBlockTyped[8] ^= rotateLeft(salsaBlockTyped[4] &+ salsaBlockTyped[0], by: 9) + salsaBlockTyped[12] ^= rotateLeft(salsaBlockTyped[8] &+ salsaBlockTyped[4], by: 13) + salsaBlockTyped[0] ^= rotateLeft(salsaBlockTyped[12] &+ salsaBlockTyped[8], by: 18) + + salsaBlockTyped[9] ^= rotateLeft(salsaBlockTyped[5] &+ salsaBlockTyped[1], by: 7) + salsaBlockTyped[13] ^= rotateLeft(salsaBlockTyped[9] &+ salsaBlockTyped[5], by: 9) + salsaBlockTyped[1] ^= rotateLeft(salsaBlockTyped[13] &+ salsaBlockTyped[9], by: 13) + salsaBlockTyped[5] ^= rotateLeft(salsaBlockTyped[1] &+ salsaBlockTyped[13], by: 18) + + salsaBlockTyped[14] ^= rotateLeft(salsaBlockTyped[10] &+ salsaBlockTyped[6], by: 7) + salsaBlockTyped[2] ^= rotateLeft(salsaBlockTyped[14] &+ salsaBlockTyped[10], by: 9) + salsaBlockTyped[6] ^= rotateLeft(salsaBlockTyped[2] &+ salsaBlockTyped[14], by: 13) + salsaBlockTyped[10] ^= rotateLeft(salsaBlockTyped[6] &+ salsaBlockTyped[2], by: 18) + + salsaBlockTyped[3] ^= rotateLeft(salsaBlockTyped[15] &+ salsaBlockTyped[11], by: 7) + salsaBlockTyped[7] ^= rotateLeft(salsaBlockTyped[3] &+ salsaBlockTyped[15], by: 9) + salsaBlockTyped[11] ^= rotateLeft(salsaBlockTyped[7] &+ salsaBlockTyped[3], by: 13) + salsaBlockTyped[15] ^= rotateLeft(salsaBlockTyped[11] &+ salsaBlockTyped[7], by: 18) + + salsaBlockTyped[1] ^= rotateLeft(salsaBlockTyped[0] &+ salsaBlockTyped[3], by: 7) + salsaBlockTyped[2] ^= rotateLeft(salsaBlockTyped[1] &+ salsaBlockTyped[0], by: 9) + salsaBlockTyped[3] ^= rotateLeft(salsaBlockTyped[2] &+ salsaBlockTyped[1], by: 13) + salsaBlockTyped[0] ^= rotateLeft(salsaBlockTyped[3] &+ salsaBlockTyped[2], by: 18) + + salsaBlockTyped[6] ^= rotateLeft(salsaBlockTyped[5] &+ salsaBlockTyped[4], by: 7) + salsaBlockTyped[7] ^= rotateLeft(salsaBlockTyped[6] &+ salsaBlockTyped[5], by: 9) + salsaBlockTyped[4] ^= rotateLeft(salsaBlockTyped[7] &+ salsaBlockTyped[6], by: 13) + salsaBlockTyped[5] ^= rotateLeft(salsaBlockTyped[4] &+ salsaBlockTyped[7], by: 18) + + salsaBlockTyped[11] ^= rotateLeft(salsaBlockTyped[10] &+ salsaBlockTyped[9], by: 7) + salsaBlockTyped[8] ^= rotateLeft(salsaBlockTyped[11] &+ salsaBlockTyped[10], by: 9) + salsaBlockTyped[9] ^= rotateLeft(salsaBlockTyped[8] &+ salsaBlockTyped[11], by: 13) + salsaBlockTyped[10] ^= rotateLeft(salsaBlockTyped[9] &+ salsaBlockTyped[8], by: 18) + + salsaBlockTyped[12] ^= rotateLeft(salsaBlockTyped[15] &+ salsaBlockTyped[14], by: 7) + salsaBlockTyped[13] ^= rotateLeft(salsaBlockTyped[12] &+ salsaBlockTyped[15], by: 9) + salsaBlockTyped[14] ^= rotateLeft(salsaBlockTyped[13] &+ salsaBlockTyped[12], by: 13) + salsaBlockTyped[15] ^= rotateLeft(salsaBlockTyped[14] &+ salsaBlockTyped[13], by: 18) + } + for i in 0 ..< 16 { + block[i] = block[i] &+ salsaBlockTyped[i] + } + } + + @inline(__always) func blockXor(_ dest: UnsafeMutableRawPointer, _ src: UnsafeRawPointer, _ len: Int) { + let D = dest.assumingMemoryBound(to: UInt64.self) + let S = src.assumingMemoryBound(to: UInt64.self) + let L = len / MemoryLayout.size + + for i in 0 ..< L { + D[i] ^= S[i] + } + } +} diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift index 6c8d2c6ed..44a77d93e 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift @@ -30,13 +30,13 @@ extension UInt64 { let count = bytes.count let val0 = count > 0 ? UInt64(bytes[index.advanced(by: 0)]) << 56 : 0 - let val1 = count > 0 ? UInt64(bytes[index.advanced(by: 1)]) << 48 : 0 - let val2 = count > 0 ? UInt64(bytes[index.advanced(by: 2)]) << 40 : 0 - let val3 = count > 0 ? UInt64(bytes[index.advanced(by: 3)]) << 32 : 0 - let val4 = count > 0 ? UInt64(bytes[index.advanced(by: 4)]) << 24 : 0 - let val5 = count > 0 ? UInt64(bytes[index.advanced(by: 5)]) << 16 : 0 - let val6 = count > 0 ? UInt64(bytes[index.advanced(by: 6)]) << 8 : 0 - let val7 = count > 0 ? UInt64(bytes[index.advanced(by: 7)]) : 0 + let val1 = count > 1 ? UInt64(bytes[index.advanced(by: 1)]) << 48 : 0 + let val2 = count > 2 ? UInt64(bytes[index.advanced(by: 2)]) << 40 : 0 + let val3 = count > 3 ? UInt64(bytes[index.advanced(by: 3)]) << 32 : 0 + let val4 = count > 4 ? UInt64(bytes[index.advanced(by: 4)]) << 24 : 0 + let val5 = count > 5 ? UInt64(bytes[index.advanced(by: 5)]) << 16 : 0 + let val6 = count > 6 ? UInt64(bytes[index.advanced(by: 6)]) << 8 : 0 + let val7 = count > 7 ? UInt64(bytes[index.advanced(by: 7)]) : 0 self = val0 | val1 | val2 | val3 | val4 | val5 | val6 | val7 } diff --git a/Example/web3swiftExample/Pods/Manifest.lock b/Example/web3swiftExample/Pods/Manifest.lock index 593c8c644..a52933d6b 100644 --- a/Example/web3swiftExample/Pods/Manifest.lock +++ b/Example/web3swiftExample/Pods/Manifest.lock @@ -1,37 +1,36 @@ PODS: - BigInt (3.1.0): - SipHash (~> 1.2) - - CryptoSwift (0.13.0) + - CryptoSwift (0.15.0) - EthereumABI (1.1.1): - BigInt (~> 3.1) - CryptoSwift (~> 0.13) - EthereumAddress (~> 1.0.0) - EthereumAddress (1.0.0): - CryptoSwift (~> 0.13) - - PromiseKit (6.5.2): - - PromiseKit/CorePromise (= 6.5.2) - - PromiseKit/Foundation (= 6.5.2) - - PromiseKit/UIKit (= 6.5.2) - - PromiseKit/CorePromise (6.5.2) - - PromiseKit/Foundation (6.5.2): + - PromiseKit (6.4.1): + - PromiseKit/CorePromise (= 6.4.1) + - PromiseKit/Foundation (= 6.4.1) + - PromiseKit/UIKit (= 6.4.1) + - PromiseKit/CorePromise (6.4.1) + - PromiseKit/Foundation (6.4.1): - PromiseKit/CorePromise - - PromiseKit/UIKit (6.5.2): + - PromiseKit/UIKit (6.4.1): - PromiseKit/CorePromise - - scrypt (2.0): - - CryptoSwift (~> 0.11) - secp256k1_swift (1.0.3) - SipHash (1.2.2) - - SwiftRLP (1.2): + - Starscream (3.1.0) + - SwiftRLP (1.1): - BigInt (~> 3.1) - - web3swift (2.0.1): - - BigInt (~> 3.1) - - CryptoSwift (~> 0.13) - - EthereumABI (~> 1.1.1) - - EthereumAddress (~> 1.0.0) - - PromiseKit (~> 6.3) - - scrypt (~> 2.0) - - secp256k1_swift (~> 1.0.3) - - SwiftRLP (~> 1.1) + - web3swift (2.1.3): + - BigInt (= 3.1) + - CryptoSwift (= 0.15.0) + - EthereumABI (= 1.1.1) + - EthereumAddress (= 1.0.0) + - PromiseKit (= 6.4.1) + - secp256k1_swift (= 1.0.3) + - Starscream (= 3.1.0) + - SwiftRLP (= 1.1) DEPENDENCIES: - web3swift @@ -43,24 +42,24 @@ SPEC REPOS: - EthereumABI - EthereumAddress - PromiseKit - - scrypt - secp256k1_swift - SipHash + - Starscream - SwiftRLP - web3swift SPEC CHECKSUMS: BigInt: 76b5dfdfa3e2e478d4ffdf161aeede5502e2742f - CryptoSwift: 16e78bebf567bad1c87b2d58f6547f25b74c31aa + CryptoSwift: 769f58a9e89f64e8796c2e59ce5f002dc81a2438 EthereumABI: f040f5429e5a4366d028c88b88d9441e137593af EthereumAddress: f476e1320dca3a0024431e713ede7a09c7eb7796 - PromiseKit: 27c1601bfb73405871b805bcb8cf7e55c4dad3db - scrypt: 3fe5b1a3b0976f97cd87488673a8f7c65708cc84 + PromiseKit: 4c76a6506638034e3d7bede97b2ff7743f7bd2dc secp256k1_swift: 4fc5c4b2d2c6d21ee8ccb868cdc92da12f38bed9 SipHash: fad90a4683e420c52ef28063063dbbce248ea6d4 - SwiftRLP: 98a02b2210128353ca02e4c2f4d83e2a9796db4f - web3swift: 33f30ca0e061e0f89117dfb46f5ee9f626eff6d6 + Starscream: 08172b481e145289c4930cb567230fb55897cfa4 + SwiftRLP: 5512899925f1a9e1c78c902ed3bf857880e814a0 + web3swift: 23cc365dd3b28e9b990813965af4bd031e108f64 -PODFILE CHECKSUM: 6d9e2706704c1b04a380df8a28b2457bc4f325b1 +PODFILE CHECKSUM: 7d59dcb370ef0a49f93b0ae5e632bd4a6841c169 -COCOAPODS: 1.6.0.beta.2 +COCOAPODS: 1.7.0.beta.3 diff --git a/Example/web3swiftExample/Pods/Pods.xcodeproj/project.pbxproj b/Example/web3swiftExample/Pods/Pods.xcodeproj/project.pbxproj index 312ecf1cb..ccc88fa9c 100644 --- a/Example/web3swiftExample/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/web3swiftExample/Pods/Pods.xcodeproj/project.pbxproj @@ -7,2135 +7,2180 @@ objects = { /* Begin PBXBuildFile section */ - 00D63A39FF4BCFF87172262A842DF6C1 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = B973550AEC743886DEFC6C426DE82DAB /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0114776105F37712925C78AFD61BB3C8 /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC700A80452B10ACF64DF1C457425C7 /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03FA8EDEAAF28C2F20B6134374C42DAB /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37505D43721EBDF655CBC34F90544D5E /* SipHashable.swift */; }; - 0485DDC0DDDFAD1E8E278AD9C56EC1B4 /* ABIDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A91B7CF43DB5A3F74C857AAED6F948BA /* ABIDecoding.swift */; }; - 048D1674FC2E4B4E9A3FFD4670FB476D /* Web3+ReadingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE647B348F1A393A971238BA674A6485 /* Web3+ReadingTransaction.swift */; }; - 049D031BED9DADA0C433EC8B51B9128B /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E4F1E867DE919C0E595D36510EEFE1A6 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0627DC84943C9B21BBFFD77F73ECE3AA /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B93028ED0430293C54D4CC1E7348092E /* HMAC.swift */; }; - 077140AE43E4559554657C3D38B4D8D1 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4B692E5A925A941AA99C0BCA964506 /* NSURLSession+AnyPromise.m */; }; - 07CB80647C63863F46097ECFE0E2852C /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DC0180CECBE311366353C47A894156A /* UInt64+Extension.swift */; }; - 07E55C4B3E245C156E30DF5CAB44BB2A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - 088387733523D1CAFA7D4DC267EA4433 /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A21F7A460F24CED1DC6B614AF917C234 /* Strideable.swift */; }; - 08BBE3B0A2885A94DE68FEEA9FBCD256 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385D20AD0ACBC7A4B01C25373D9EFAD4 /* Array+Foundation.swift */; }; - 099726630FECA2EBB07D4AD11FC8AF8A /* EthereumABI.h in Headers */ = {isa = PBXBuildFile; fileRef = AA756D6EB06FD36B25464492744519A3 /* EthereumABI.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A0FBCAD7A1F908EF9B1197FE8BB63D2 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B1F68A1905071C4890C6F9B2280237 /* CMAC.swift */; }; - 0AA7233700BDC63D25E5E63F0442F3BA /* Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C85B8AD6FC929A0DD4ED8A7F71D777 /* Web3+TxPool.swift */; }; - 0C207CA7D0D22965127628406E3A90B7 /* Promise+Web3+Personal+CreateAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 727727B1D330C3E96EEC5855430FB9E5 /* Promise+Web3+Personal+CreateAccount.swift */; }; - 0D32A5EE13EC8FB94162257D12B47954 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBECF12FAA0EF5E875B62B00A7B4DA50 /* PKCS7.swift */; }; - 0E7DC8600622ED2E0516F25A9F51C903 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A29F00A814D897C1BE5AE6DE5E89C998 /* Extensions.swift */; }; - 0E8865F19ED08938AD447CE3EFEB6164 /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2B058F1081CD1680F4F90724970E88A /* Checksum.swift */; }; - 0EAFFDE720BC075EFD8024E130A3F583 /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B1FFA44C64B0B540B94FEEE1CD9B0F /* firstly.swift */; }; - 0F47AECED76239456F530A9F34C202AB /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 354A0764BBE4CFAD623CB810FEC76817 /* PBKDF2.swift */; }; - 0F843C702EF22858E3BD92556B4A53C6 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3705B10251AF105DFD9C06CAD8BF008B /* RLP.swift */; }; - 0FB2C7EB657123B46C1E183E33FECB71 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = F52D61D44F96B6B6F0BC62D02E5235F3 /* NSNotificationCenter+AnyPromise.m */; }; - 0FFB9D7FCFCF67380D2E03C1CF3D31C6 /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */ = {isa = PBXBuildFile; fileRef = E16927F5D553D8A1B33E94ACCADB17A3 /* Promise+Web3+Eth+GetTransactionReceipt.swift */; }; - 0FFEF56AD88BA2B49BF3F4C06AE60C90 /* secp256k1_swift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E28680C25D59F4AB8FD5D60B2209576 /* secp256k1_swift.framework */; }; - 10C957749713BC793603740385D0626B /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 98FDE7A709821277AE5CCEFE2CF7D0B4 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 11155D066240AA9BCB5FB19A8915C253 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACEACA1521FDFD79ABA9485C777E5887 /* GCD.swift */; }; - 11C436F48BC5B99CA9B122D6653E7986 /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD643FEB508293D31031F06D61BFEDC4 /* Promise+Web3+Eth+GetBlockByHash.swift */; }; - 129F0091AD9F73727DC021D80D9AE867 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF8AF858508A3EC73D766B1CF48098F /* field_5x52.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 12D7EAE6F2CEC81702FD70455699210D /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385A9A999974E47DE373D35A9AC29663 /* UInt8+Extension.swift */; }; - 13E900B217EB7AABB8685EDD051A97E5 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DEACF2F1C7BBF71EA318C326FC4FA52 /* CCM.swift */; }; - 14A6030032E12C1B957F620FECF742EA /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB48EE8796E94C776DE21E16EC425E02 /* Digest.swift */; }; - 16825050009C6130264514984322E53E /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A706CB0950B86EBBB4A53A66D0BB57C /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 168831EA2809233CFD6E98640D126804 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 155CFF09263570C89932D22E5B5D569D /* Operators.swift */; }; - 168E8B4DAC99CB82C85DB4B08F34DC85 /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 05625082EB748971627BF6E1ABEE72BE /* scratch_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 169B55A24D3FDC159B797D85588C8A34 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22F727E1920C23DF6FA25C828FF37AE0 /* CompactMap.swift */; }; - 16FCAA2982615446FE51C6848E852E22 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4039FF96173F8D1FD541617AFC84F660 /* Data+Extension.swift */; }; - 18704C29935E06F5FB353933C7B93897 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E04CEFD47ECF7B1AA7B9BA50AF1D68E /* MD5.swift */; }; - 18B9BF798396486AD4D880820C7B8FBB /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B27CD8CF6389981C93F9C70BB79806C /* PMKUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 19EEEF4225421C0F5F4AD79A1DD4A7B0 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1079CE813B6ADE402DA1A75AC3BEF4C /* CryptoSwift.framework */; }; - 1A3CA564761B01FC3D99DFD8EBD833DE /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35FEE3FDEE40F28DDC2613F215AEB8CB /* BlockModeOptions.swift */; }; - 1C53AF4113DA6608A4B207AFF139039A /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D4D47D06AA22BB74384BAB9BAD40F2 /* RandomUInt64.swift */; }; - 1C6305612C71BA4A41EA3EE86EF9DE98 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA29F25C6AD9C57F2F030CC8D4401411 /* Addition.swift */; }; - 1E0ED79B5B4B52516424062B25A8985E /* KeystoreManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9EC47F44C823E1171CF73606A494D29 /* KeystoreManager.swift */; }; - 1E5F371419521861C46DCF9701C977BA /* Web3+Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F697DE9A9B9780448371273B4B4986B /* Web3+Contract.swift */; }; - 1EBAC8CB64B0FAC21B0C3B2BBFE3258A /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 075236A3B5DC60B4370A0CCF672B8AEF /* num.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 207A6AA7B3964F426472BCBBAF43B4C8 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 099F776D5862FBF1C32451630511200D /* eckey_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 20E69749F66B1F259ADE99CE77510E86 /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEAC26BB970A98BAA6CD7B30F5094D2 /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 21EA3B70F882771DE5E71A78762F852F /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32380EA4D124B8A636BC9118466E6AAD /* CustomStringConvertible.swift */; }; - 22CC7BE1DDDB6F839A68B21F60826BC3 /* Web3+Infura.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABEE70BA5A5BC35C34D6C5DA8EB13409 /* Web3+Infura.swift */; }; - 22FE67B665841A937E8D95D9DBCC7EB7 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B77A44FBD3FAC28057C1887CC92B27D /* Bitwise Ops.swift */; }; - 23916C64C98204C928896ABA4BE1DAE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - 23BA112C655FA27BE38C9C321EBD3A4E /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97FD3BB1D4FDE3CB8C92B9757CADD731 /* Cipher.swift */; }; - 250AD1DEF6E70905E0B2C85ADC0712D7 /* TransactionSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A274CAE3C49CDADD2C8EDD0B6A2D5EC /* TransactionSigner.swift */; }; - 251860F28AD7FF23ECD15AC4C77CF1BE /* Web3+EventParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9833899028708E6BF26F6D1610FE1997 /* Web3+EventParser.swift */; }; - 25C1D1DA3E2730A7983A6414FC4656FB /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1079CE813B6ADE402DA1A75AC3BEF4C /* CryptoSwift.framework */; }; - 26F636BA86A94182E5B3D4B6371B7990 /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8022C2DF6B86FA23296F8458F4E400B /* CBCMAC.swift */; }; - 287AF814872A1828332826075A3A769D /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF2F5DCD8B1BC4533ADECDBCF836DB84 /* SHA3.swift */; }; - 288250141FA353726E30472933B3E9DC /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35B6B8F8751FD986339B26820E401B42 /* Prime Test.swift */; }; - 2897474ABD1023E8A37E6EB9792CC661 /* Web3+Eth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E507073C6A899B5150C313DA3E1E7FF /* Web3+Eth.swift */; }; - 289C18B312DFEDD4B704A7AD3EFCC360 /* Promise+Web3+Eth+GetGasPrice.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC1EA2773146F4324EF5ED0B3A3EFE0 /* Promise+Web3+Eth+GetGasPrice.swift */; }; - 28A68791268A1C0C4CA0178CD44543B3 /* SwiftRLP.h in Headers */ = {isa = PBXBuildFile; fileRef = FD94AFA068C1AA0B75B12B723463561E /* SwiftRLP.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 28CFAA3F415F6AA26FE3A81387558344 /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0D72FEDC647B6917B3AE77954B91EF9 /* CipherModeWorker.swift */; }; - 2ADD61CDA6604966DA306959A92FA086 /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9035FEAF1C6A112A846C1686B6AA6AC /* ABI.swift */; }; - 2B26146875465DF9C2D78472B49E3305 /* EventFiltering.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF166364A9E5E97DD45519B5D546ABE /* EventFiltering.swift */; }; - 2B3D97CEDF72234F8338DBA2A776981E /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = 168BEA0C8F8B3C8FA1F18A535A7B9160 /* ecdsa.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2D53A0E8262E8D0AC71AB6341961A9F3 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1523249C10D0B6DDCE2D75CC807474FE /* CoreImage.framework */; }; - 2D6F68A3EE6AD170EDC30E7485B54524 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF0D31D5922EBAD0370E98046E7CC48 /* PKCS7Padding.swift */; }; - 2E3A0CE83A9DC669521D768D83113007 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F90EA173730B99F47DB58B7C701FCE6 /* NoPadding.swift */; }; - 2F19C94428DBF3FEE892C3BC9538BD0C /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66FBB836159737A49CA20283E62CA819 /* Catchable.swift */; }; - 2FB075849D825ACCE5D39FC1134DDA52 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3028289D562E89D58F6AB987E4AA0EDD /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 31FCEF8F13F00A6EB5C8E43CD2040D52 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A82F53B0EA3D0D57AFD5CD4C318D0647 /* PCBC.swift */; }; - 341666F42728D7D66C5E013E293951E5 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C24CF8C724DE2F030E4429AD7EF3B8 /* scalar_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3460C937428BE40A5EB9AD6BE6D3B650 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = D78C0BC324759D084A8384179425BF47 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 34B17DF22062E35B740FA4AA29300ED0 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 721C4F03AEEF9F7B6768DD8E1133971D /* Division.swift */; }; - 359390E3E8AB281E3AAE339BD7C2D89E /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87DC9E0219AEBCFD0C11561CB1F75C69 /* Resolver.swift */; }; - 3619B989C2E488056B62E7517BF4CCCB /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9574EEF332F3955B7C581226D05FE23 /* SHA2.swift */; }; - 36D1F27010F6E0052132BC35DF1E9B2D /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16D7549432B0837431D33DAA92B9633D /* UIView+Promise.swift */; }; - 36E5BB58E35F3EE126FD2E7F78B0C712 /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 388C6DA468CB9B1A2BD750A77262C56F /* NSNotificationCenter+Promise.swift */; }; - 373BCBD3BAFD4EEF405BA6A4B1DD206B /* SipHash-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F31A6E839594AF147029FFDE446D65F /* SipHash-dummy.m */; }; - 3762DF18DBCA1CD6327DA092A53FD656 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4C422A86A1DAE9DFC19D7BB256B774 /* num_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 37FA075C16F67C2E4B98C4D34A8C00E5 /* EthereumAddress-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BD07049E8559AB824237ADD96BD4AC9B /* EthereumAddress-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 382BA96CCC1E7E7B0927C453432C342B /* ABIParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645B2C2B288B7EDC7BAAE3C5A2A09E04 /* ABIParsing.swift */; }; - 38574512C2CD6A6CCC91C1E9F1624749 /* Web3+Wallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9CEEA6FBF391E65A68E60592882B642 /* Web3+Wallet.swift */; }; - 385AB966428941407528ADE1B373C119 /* EthereumFilterEncodingExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F64296999AC33A5090DFA571030C3B3 /* EthereumFilterEncodingExtensions.swift */; }; - 38B9C6022379E050848456D78C1908D1 /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4122BE1E9FD4A604314CE85B4CDFAEBF /* Scrypt.swift */; }; - 39D3E32B3C0AEB691E5FECB13A908C30 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = 45AA16F4A39E2367C4A4059E1314661D /* eckey.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3A73C66F10621ABDDA6DA99B83737FD1 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7709D38F697152E97ECE038ACBA80E /* ChaCha20+Foundation.swift */; }; - 3C55B3F8AC9C9FD5E72C85864D127009 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 4673A58E053194AE130B84DD19ADFC40 /* secp256k1.c */; }; - 3D9E0EC94604238F4D837E3E7E9CDFDA /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88C864BCF6B7DF8F59711FB0F71F60BF /* Guarantee.swift */; }; - 3E4F34CF3A56C3BCA61A15667B8911CC /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2DC451DC974D25FE7B1FECCA9C6EF51 /* SecureBytes.swift */; }; - 3E531578FF1145393154092B38E896E6 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89BFDBCFBC87AB9A6017F91C16B27016 /* ChaCha20.swift */; }; - 3E7B3566E3CC285CAACA093A9832E526 /* ABITypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4174025F0AA7FD9B02D3F2F5E4F617BC /* ABITypeParser.swift */; }; - 3EE92296A5FCE627C62A030E30676D49 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1079CE813B6ADE402DA1A75AC3BEF4C /* CryptoSwift.framework */; }; - 3F731C8AD9AE9A8E29567EB2DEED4E53 /* secp256k1_swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C8DFD047D7C6E855F9CF2F1A3AD7B2 /* secp256k1_swift-dummy.m */; }; - 3FD7EC703639AE284EF9ECF6278211D7 /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F8FBC6FA4567C651C24DACB88FAA458 /* Promise+Web3+Eth+GetBalance.swift */; }; - 401FC3DD2EDDB48484C0F58DB376C436 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 277E6BF4D08FCCC20EF73C9BA37B6AB8 /* Configuration.swift */; }; - 41BAB1AD1A86E1C6887B9B4E51062334 /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 1400B4F7ABDE02B5070690E0E3F0F034 /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4244DC847B46A7C3702021C52140C539 /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF16F679ECE9C4841106CD599F60C4E2 /* hang.swift */; }; - 432A59F5503460580FBF047A2E95B403 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FBFE3F22B4E7AE72FCC6A2C5F9B20E8 /* hang.m */; }; - 43A213F845B41C54A0C6E74E216D28E5 /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0FD4ABBB0CE03A9B8551B57E7B20F5 /* Random.swift */; }; - 44CD2A9B83122B52B80E91DD739137B9 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 481105AB5C9354EBAAB3E816CFBF3D9A /* NSTask+AnyPromise.m */; }; - 45BF4E826F20BB6B80DA1656194C389B /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CBDB796FB0F17282181E75EDA52E42 /* after.m */; }; - 469E4F38A99F2B1AF8F354AC44AE3683 /* SwiftRLP-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C47EE1AA0C0CE661EBC27D485F20EA3 /* SwiftRLP-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 47F09AB386ECB4F06DC94B5D84B829E3 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBFD45FE4B26112E398EA7FD68047322 /* Utils.swift */; }; - 486AE96A069EC0BAA1E35FE79194A25E /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A31D2A6C2335199394826F5AB60411 /* BigInt.framework */; }; - 48AEAA9AEFB46AF33C359BAB88AEC324 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25FC19565DA49D793DF9A348F223CB65 /* BatchedCollection.swift */; }; - 49D9F7F3B2F1AD0781104D1902298F85 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 22AB1F2D4F1253D1F55214A8B4A078B5 /* secp256k1.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4BD49C6CEF3E4405132B4AF8CA0DE003 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F8EADC5334750EDCBC7BE9F4D4D5B3F /* BlockEncryptor.swift */; }; - 4C2FA74837ADF9282EC82AAEA3344905 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8117AC67014669B1DCFA347AA29688C0 /* Cryptors.swift */; }; - 4E4587C763B65AFD2E81737172773A92 /* EthereumAddress.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941616C02C90CB37792EE5D074B65DA4 /* EthereumAddress.framework */; }; - 4F448640DE2AB108DE676C77DEF2E571 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB40B5423FA265392DE07B1A21090637 /* String+Extension.swift */; }; - 505CA5BFBA1D9ADF951C40E1EA125BD2 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5CDE3B4FB757B3F0106FD88431B923 /* BlockCipher.swift */; }; - 50AFD0EF968A999FEA7BEE127440BB48 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9A23377D2BCFF84DA71D73288B88475 /* UIKit.framework */; }; - 514821AC03DEAB80E61FD438FC0CF126 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D25C0FEDAE45115E5198FD4CD0052A48 /* DigestType.swift */; }; - 51AED1A3AE83C5F80B343D8AAFD494A3 /* Promise+Web3+Eth+EstimateGas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5D413D46DFC82B6CBCBB8C5DE7CAFB /* Promise+Web3+Eth+EstimateGas.swift */; }; - 51C9BF2681C879F6790B674806626C9B /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D9F2707B320173226689A2ED924509 /* Promise+HttpProvider.swift */; }; - 5211E62A23DC79810DF988EBD96EFC32 /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57DDA8DDDF0407F9774D0CD39E20307B /* CFB.swift */; }; - 521929B74C540A89354F6B479324C9DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - 536729423F27A0C8C10588505FBD0680 /* BloomFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BCF26ED236D1B8E24321ED226B25DF4 /* BloomFilter.swift */; }; - 541EE41CC83131708FC4873E24EB6813 /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1DFB901CA995F41CFDED832B5F38D3F /* Subtraction.swift */; }; - 545072A7AC12349191FBBEFCDE711892 /* EthereumABI-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C2F73E4913951241E69AB369E29AA841 /* EthereumABI-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 54737940C4BF6C198B0B08F053497650 /* secp256k1_swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6376866618A41A278BF5C4477B074CD1 /* secp256k1_swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56573858613F4A2156E0F148A5258D36 /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = F2EAAD5F932A97EA7947E900D8C2CC52 /* UIViewController+AnyPromise.m */; }; - 574B700620BF7CC0B73445134713E7AB /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = D45E969A3BDBBB4ECBB6299F26380AB1 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 58D378DF3FF9C2C523F72714F028BC18 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E45FD0470EFD84FE77DAB6F17417FD48 /* Utils+Foundation.swift */; }; - 5AAAC38308E507E5B37AA6E6072EA794 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 810C0B92B1AE41809192BF5012A4A523 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AD030261435FD98FAF7431CE885864D /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 152A06BD6C4ED16E8910C53F87083FE8 /* afterlife.swift */; }; - 5ADF45AA07583F480A917C3F34118118 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 294830F3AC6CB12044834E8F72282F23 /* PromiseKit-dummy.m */; }; - 5B5A1021C78EDC5EB1216C03C6B3A3E3 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF5183A837EE103D3ED61CC8E3B718CE /* AEADChaCha20Poly1305.swift */; }; - 5D5489F38221F4707C34636CCB7D4963 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 69A7034547608D113E9F306249220251 /* field.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5ED753E367A75BE0055D8AADD86B71CB /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04BC19C035A8C39D5226D8BEB0149F0E /* Words and Bits.swift */; }; - 5F1B861985BEFCD8A263ED54264B5543 /* KeystoreV3JSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = AADCA6CCD158303369C205F70D9E4590 /* KeystoreV3JSONStructure.swift */; }; - 5FCE918F81777C227E72A6C620FE0E9B /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94A37DAF9BE9D2E3331448A566C065CE /* StreamDecryptor.swift */; }; - 5FECFB6E129027D7F9AF207C8D0C6BBD /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A8DFF2DF324A4D832DD8653C502500D /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 60A5148C3B21CBB1388633419E789AE6 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = E1F617E29052F2A20A4DAF46197559BF /* race.m */; }; - 60D03407C65DD41B77633BEBA45350BD /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F50F7F0D2F6591B93604E8BB87992A /* Square Root.swift */; }; - 60D66E712C47DC1056912A4E77CE7B6F /* BIP39.swift in Sources */ = {isa = PBXBuildFile; fileRef = E37C1C69C98C58ABCDCA9F4B01061D0F /* BIP39.swift */; }; - 60E46306ED1B3A25049772CD775BDD49 /* EthereumContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91C4C863E4EB75ABB3E8474227D40A73 /* EthereumContract.swift */; }; - 60F020078907CC571799F8EEE8657FD0 /* SipHash-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 886FFD1EB7FAC82F55796B76AF70F059 /* SipHash-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6455E5C95FBD128A03567A452875A037 /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 010F596FBEF9CCC63191ABD3376144DD /* Promise+Web3+Eth+GetTransactionDetails.swift */; }; - 6558636833F1C0D47A09F6C39FD48D3F /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 16AC0F8318A1676FBF02362F4595CDA5 /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 65D4A5CFCCD7ABBBCA0E9E2CEE10CA62 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCC16B752DB521904FDC01E24FB27FEC /* CBC.swift */; }; - 66919D153FD4C36C6C0FA23311C4DF2C /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F6F09A34FF7ACDD387EF421282DCA54F /* main_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 66FCC04FCEB5CC2EA4BFF087187158B8 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9430EC53743B45700079032E4A105EC /* Array+Extension.swift */; }; - 68ACC882FF1859C30606FD4785F5B60D /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B862B079586F6EBC6B4D190AC2686A /* NSObject+Promise.swift */; }; - 68FA51BCE2078F888E11D5C9367BBEE7 /* Web3+Personal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E005CD6FAFA3B7D23F16DCFEE03883E /* Web3+Personal.swift */; }; - 69E6BE13070187CED87503CD613CAEE1 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E721B30BBA223BA90A171B31127B5A /* Integer Conversion.swift */; }; - 69F3796EA98173349F573767FA9D96B5 /* NSRegularExpressionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E7E3D26AF128FB9F5B65F2975134E4 /* NSRegularExpressionExtension.swift */; }; - 6A9CD001990B462354A83330FBA0EC45 /* BufferStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F8DBA32491646170BAF7A1ED104880B /* BufferStorage.swift */; }; - 6BAF17172CADEE179F681B5E21E293C4 /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE20423192DCFD6A61AC3EC0E1210470 /* Promise+Web3+Eth+GetTransactionCount.swift */; }; - 6D29054961223E11C2A32A32032F38A7 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 4754D5FD3244548E259E3E0F25D01E84 /* hash.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6DF9FDAB9C7F26B557B3A0DA94578241 /* ABIElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421A57EB83513643E294B2EABE8B0200 /* ABIElements.swift */; }; - 6F2AC95CC89CE8DBC79A6076AC891E51 /* AbstractKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC529C712D847E1520FC99E66853D5E2 /* AbstractKeystore.swift */; }; - 6F6C871948F22A9D109DE34B8388488D /* Pods-web3swiftExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB41387E485225E0BC8B079979EEF3D /* Pods-web3swiftExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7044BEFED772CD5C713B2A696EB5677C /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 90DCB2D73690221D1C386B46FF12ACD8 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 7154FAFB7DCB6C047A6C736C3529A641 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 82D6B4BC9796460A18553C2F38C8AEE1 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 7199AB4B0415FC2D3FD6E5331A35B839 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - 71B9B8543875E4E32E42B4A9A1312C01 /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 77CA60485E13EAE74EE80CFC886BA2AF /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 72541048B150E29F22A0CBD388ED2ABD /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D4E60A3BD0A901CAE33DA9F09585890 /* HMAC+Foundation.swift */; }; - 7333A61491547B0B8DB187069AC30533 /* Web3+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A35C0ED9C1391857C58C0CF40B765953 /* Web3+Utils.swift */; }; - 74D763735BB92705D8495572A7991704 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = DBA7F751A89D1E1C5D62E2BADD1420C4 /* lax_der_parsing.c */; }; - 75968482BFB1B3D0EFADE99502D2052C /* IBAN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93F9F961FF5E739D6A27BAE1B6B84255 /* IBAN.swift */; }; - 78DA7D99279407A7B5E752BD06003068 /* Web3+Eventloop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C0D5E07A4C170FDD09AB0EB76EF331 /* Web3+Eventloop.swift */; }; - 7950CDCD0730EC4DE69E4452A2117CB4 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26C2B3575B317F9C06CC8F79AFD07293 /* Int+Extension.swift */; }; - 79555D854C8AC2FC8E9818C8F3710324 /* Promise+Batching.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20F9F737EDFCFEF9830F0F4B621D83E4 /* Promise+Batching.swift */; }; - 7A0197B22900E1FC916C4464F5297A84 /* Web3+Methods.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F7AB407FF50CC1C82BC47E27132E3F0 /* Web3+Methods.swift */; }; - 7A1FD4C579FF7D9ED23F135FB6110673 /* RIPEMD160+StackOveflow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64E4ADB46AD6A716EBE5FEE6B3F98341 /* RIPEMD160+StackOveflow.swift */; }; - 7A65AA9F003F126626392DE935CA763B /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DBC29B166EFED583208F516850EA2A2 /* AnyPromise.swift */; }; - 7B049E9067D1408E7475C04B2522BF1F /* PlainKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = D94B4FB5E11583412D053DB2C819F58C /* PlainKeystore.swift */; }; - 7B50A0E57C8C0F860C0E2D3E2DF889C5 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 075602E81E3D61E019C955BD6AE18C7A /* OFB.swift */; }; - 7C84DBA654289A1BBA492EC46B233D86 /* Promise+Web3+Personal+Sign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8075D0204E7F5BE1CEA87D03F0556108 /* Promise+Web3+Personal+Sign.swift */; }; - 7DF26B5CC31B57CD332F926B91A1C24F /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3438A6ED71C95FBB9BB471E36AFE4D /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 821C63EC05763CA91EEB51F9F66F190C /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 74569BCFAE1C489C9D0FE3248C5CED66 /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 83B5BC56560C7D387AA427415CEAE05C /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DCCE88C733379B0F9674C1D490BB9A6 /* BlockDecryptor.swift */; }; - 8413BF7A30C04021BED6564D4B77738C /* ABIEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A563044196C737C050B34DF39F82E85F /* ABIEncoding.swift */; }; - 8440A90B8FBD27B2631A55E10CF96144 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4C09212026736ACF8C3588C3DFFFBAC /* race.swift */; }; - 84AD9AA7FCDCF491E5F839BDA9E62923 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645D691F588C30A8463CBB40081960A8 /* Rabbit.swift */; }; - 860272FAD4E2D035DF10AE20A552ECD6 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3E1DF0961FF3DA091383DEC4B479CD4 /* after.swift */; }; - 8618E2984BD34989758334ED52615C62 /* Promise+Web3+Eth+SendTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9C42893B8A27DCD6134EC5FC2D07657 /* Promise+Web3+Eth+SendTransaction.swift */; }; - 86386DAD1D84EA856F9B41DDC716BB96 /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = A15E042C8396D13ADB12383453C3B15C /* scalar_8x32.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 87AC0B08AE309F77437612D531B5104A /* scrypt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D31BE63B1625607EFBF7B6C4BD62A81F /* scrypt-dummy.m */; }; - 892CE74F3E4A889E6F69425C79DD7E55 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD71B2AA6261C81D5ABF5F0265397A1C /* AES.Cryptors.swift */; }; - 8AA4F289B20DB86C6D5CFC0551222C48 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B575CEB1C724F85E4A1857AA0042309A /* CryptoSwift-dummy.m */; }; - 8B0EB0888995D3195D41D8FEF525C966 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C63E5B7E9EA6F822D6C2F402AAC2856 /* PromiseKit.framework */; }; - 8D50304A146D00984E177A1B0C3B77A6 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = D3D1AAC32C041B5712F196A61F5CA39D /* num_gmp.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8D5BA4D08F578660123B2E81CE8D0C84 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = F357548B3DD39378B080646816E6E6E9 /* EthereumAddress.swift */; }; - 8DCA8BBC469BA4112698AB969F25247A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - 8E0F8FBB7B21069BAB85856FACD82FAB /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5CC3933EB505F78FB90467B4EFA6203 /* Promise+Web3+Contract+GetIndexedEvents.swift */; }; - 8FC26FC4527AC222B1C2F40D4E1F3D81 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BC3E604A7828F857DEFB8E5A4792673 /* Primitive Types.swift */; }; - 9079C576ED6D091E0EF1CEC6F245E4F6 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B50F465279A418BE82FCA4EBD2177CB /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 90BB63BE1A3F2906186D961714165CD7 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63FD588C06FA711CDCC9813DE8AAA0AF /* PKCS5.swift */; }; - 910DECB543C55FB96E09E4E2557A6755 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D67481EE660CC4427780A510CDB6254 /* Exponentiation.swift */; }; - 9287C7AC61FE25FB9FF2E4F9E8B30EAA /* scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CF0705033B0A2728CE16D3AF008DD51 /* scrypt.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 92CB3B3B6277FD43A6CCF4B510FBCFC1 /* scrypt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAF13C2624A2802FFFD9EC2F84F2A37F /* scrypt.framework */; }; - 93369B9A54200F2200B09E87E76E33D3 /* Promise+Web3+Personal+UnlockAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1838E8D409817D754EDF58FCF91BFCB /* Promise+Web3+Personal+UnlockAccount.swift */; }; - 938239477B6A9C665CB93642E1DFD0EB /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA9960DB9976FF183310557C55A532A0 /* UInt128.swift */; }; - 948C38948743D31A8E07ECF1278C0438 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29D1BA04747B640515764C450DA1279D /* PBKDF1.swift */; }; - 94B766B2AB6086601374287BB084205F /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A31D2A6C2335199394826F5AB60411 /* BigInt.framework */; }; - 9505A2BBE23F80EEA10A9209F39C0695 /* UIViewPropertyAnimator+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0067E4280866B4569D265E9F8C6294D4 /* UIViewPropertyAnimator+Promise.swift */; }; - 95C90ACFF4618049BC4EC1D1C5C653DB /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 404FC9F4A1E9D404A14FDFD25794F248 /* hash_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 978D71F3FB5EACAD29A0EEA5792E43EA /* NativeTypesEncoding+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D35A4906E915E02BCCA9912DBD2D26C9 /* NativeTypesEncoding+Extensions.swift */; }; - 97D85307763F8B8299524EEFD059729E /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A2FE2AA1ED08312BA552C811B50A0ED /* StreamEncryptor.swift */; }; - 98DA224F5999FBB83A4D2090F9CFBCFC /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E8AA6274AA01FA7275884BBF0D6F55D /* AES.swift */; }; - 98EE378BC5236F9103D9F612AC06E040 /* Web3+Structures.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB5D1B477007EA8B27F988C2783A2294 /* Web3+Structures.swift */; }; - 991B88B320A6E9AFE3130717758335A7 /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = B2ACAB499A9507E7F5D0105E4A0D9769 /* group.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9979250510F331D6F6C4BF5F8A07234C /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79C644C44159127870FD19B2BECB6C9C /* Rabbit+Foundation.swift */; }; - 9A683FAB2843A7181358FFC2F9AA7FAA /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7411A68C8F8AC8841EA5B8E91256B11E /* BigInt-dummy.m */; }; - 9AE3952131E530F55D34A350ECC9B909 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E47F8688C9AC60F086CAFF777392523 /* Multiplication.swift */; }; - 9B1D8B3F81DA09FA60C1B87DBD2D3F63 /* EthereumAddress-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B841E74E11C4190F2742A482D1624F6F /* EthereumAddress-dummy.m */; }; - 9D3DB6C9DD52CA4E093E4C8C4BB02DCC /* Cimpl.c in Sources */ = {isa = PBXBuildFile; fileRef = 2D47BF61850EFDEED83A76DA6498C213 /* Cimpl.c */; }; - 9D6103741022980D04EED50269512BB9 /* Web3+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC202ECB6EBC87A3FF623F01851811DB /* Web3+Protocols.swift */; }; - 9DA1244904AD9E535DFE95EC136A5799 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82E1460DA79F21EF0A89758352102AA3 /* Floating Point Conversion.swift */; }; - 9E500E32A76DA2F6356AA3391AD1311C /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68623D000FFCEB2CC7E1017DE7B6EAAB /* BlockMode.swift */; }; - 9E8CC528BCE6CD8751B925E2DFFC7E72 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94161FCBB26A0CF4D7B4792E7CC6394 /* String+FoundationExtension.swift */; }; - 9E8D7107296E94FA95F7F36DE96563C6 /* BIP32HDNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A1038DC1633B7F9F4C06BE77D4DE0CD /* BIP32HDNode.swift */; }; - 9EE756BBA1C25C5334454ADEB97A6853 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C65590568B033C2CC9803F32A614CEA /* ecmult_gen.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9F072011232D95179D1C7D0BA561714D /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27A601897D77B2B18E22FA26B5430F5B /* Box.swift */; }; - 9F08353BD8DADB8C8B14E8A20F8ED909 /* Web3+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DBCD77147B6CFE8E4D75C61EE88C171 /* Web3+HttpProvider.swift */; }; - A0745493EEC035A284FF812C97652F66 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E067ABC95AB5A08F48E2887AC6ECDF59 /* Array+Extension.swift */; }; - A1257C2EF19E838CC9954197DDCA5734 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 482D19E42A30F218E678D351C13B155A /* Updatable.swift */; }; - A1A7CD3E806ECEEF9CA491D1D4E2994A /* EIP67Code.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331413774F7D7F0757A5F0B9B2DAA4BC /* EIP67Code.swift */; }; - A232346CDD9B638A73E31F9B0EEC63A6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - A3A9CC68C76881419F9C084AE9F3A323 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = ACCA271C75D4B21ED35646A5A4731E5E /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A3B3988D1BE65A4B037754384D6E2A8F /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 912562705A9D693EE4E79FC65116D991 /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A40347FBA49DCAF786314B76D48EDD88 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1681DF3FE5A4B672E29F13A64A64023E /* Authenticator.swift */; }; - A48FEA29EC3240C483497D8DB6FB0541 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = DBE9BF31616883FEBAE74AC685A421E1 /* when.m */; }; - A5219D81AB8FAB98FEEE7B7F4ACF937F /* web3swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CA6616160AC6F13FA7BCA2D9C4BB992 /* web3swift.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6B9BF2F0D5DEA52AC43A9863779A093 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F1D07742B3A7F5A46E2A329DA441284 /* Codable.swift */; }; - A7CB1BD8A467E5F5C0D1334A63FDFEA1 /* SwiftRLP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C7BA3CDDCDFEFD9BED027AD46F60FAC0 /* SwiftRLP.framework */; }; - A82046A82CD3575966EAA968491B3FF1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - A848C13D7D87B0F9C11825D17437C482 /* BigUInt+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C37C7E9D0EDF73545C404CD099C00A6 /* BigUInt+Extensions.swift */; }; - A89883197ADD5C0B0E2D8C797E23A8C3 /* EthereumABI-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B58E7023F7E6C8655D6D9028C7AF2698 /* EthereumABI-dummy.m */; }; - A921B2A1FBDD346696B21EA3A626D6BF /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 45C266B7095DCF8E4E4847CC708EC1BA /* group_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A92A096CDDCA083FB9B56A82D6B89291 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = F211AC62BA23FDE559ECA2DB16007CB5 /* util.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A95AFD0C2BC0C07CB65C970E57D177E3 /* ABIParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7F8881DBA20F9015834FD7A4CF547C /* ABIParameterTypes.swift */; }; - AC0B732DDB2F612834D2A7E19DA53754 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B29CEBEB845EC347B96D7CF8EC1193E /* Promise.swift */; }; - AC6DA7A88F96EE89BE114D6C5DE3F3CF /* Web3+JSONRPC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC9030EBE40E463BE51970F190211BDB /* Web3+JSONRPC.swift */; }; - AD19735CB2485737C224B7D360F4493D /* ComparisonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8EA98CA2EC2343E64F97FE62866F72B /* ComparisonExtensions.swift */; }; - AD251E7937B3885E2B635F6FE675F9CC /* EthereumAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 77783A545C644FB0696DAD1722E5944D /* EthereumAddress.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ADA80E624605AE882CE1D99E722CC414 /* Base58.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1E952E16B5F2C98AD684EBCDE120FB1 /* Base58.swift */; }; - ADC99CB22E2067F475404C536C15D9AC /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 932B2C4CD9556E6318A094CDEA2E0E13 /* scalar.h */; settings = {ATTRIBUTES = (Private, ); }; }; - ADD1958BC7A445E2E7BA0AC6D09E5A75 /* CryptoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25ACD34DFF6A5394BF0D9D4CE52C5C3 /* CryptoExtensions.swift */; }; - ADF81CC0E5C27480ACC20BD37F83FD34 /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 640FA460736D514832EF0074EDBC3B08 /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF0206170C3EFE4D74D35A99947F570F /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3AACA619772B384FE61866B88EA981 /* ecmult.h */; settings = {ATTRIBUTES = (Private, ); }; }; - AF37471E60AF8D58B63DC72E73AC22F7 /* EthereumKeystoreV3.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB6ECCB5CD4592A97A0350BE32E726B5 /* EthereumKeystoreV3.swift */; }; - AFD68E6B13C8C94F2AE939D73A1FBBC0 /* EthereumAddress.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 941616C02C90CB37792EE5D074B65DA4 /* EthereumAddress.framework */; }; - B514B4E9DB02B1EC4321D62DFA0524A1 /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F14FC9C9FAC7304FBF240BE3CFABC651 /* Hashable.swift */; }; - B52C9675931CFC0A3E9EC8F555FB75E5 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = F40826DF7C345288BFCB50940E3316CF /* ecmult_const.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B5982630A4AB9E8A9264371037AF8A11 /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B109DA379FA9ECABADD3EE3B80DE29B8 /* Dictionary+Extension.swift */; }; - B792D575CEA453A698E0D7C8E61388DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - B7F3D476C87C0EC57139955A579FA3DC /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD47A57A6C82649BA700C02D205C57E /* Comparable.swift */; }; - B8DC123A6746FD918E04ADCFA8094147 /* Cimpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C7A9472FF71EC33BE7131124C53835E /* Cimpl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - BB2EBA041C1D99F0E24A16187D135DD1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - BB623D27F74DE81E07DA70A9BF7A8CC7 /* BIP32Keystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 681530AB9C692077CCA2B03BF1DDED10 /* BIP32Keystore.swift */; }; - BBFB0A0A67B23D871F7CA36DAB0DC776 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 887360628FC3B77442F4026B0B7A51CD /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - BD4B04E18C36BD2D1DF0BD10C05BF2D3 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 693AFA81068283C937D0CA94D38E4722 /* dispatch_promise.m */; }; - BDCB2C296BD731AD509810D023652C78 /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A31D2A6C2335199394826F5AB60411 /* BigInt.framework */; }; - BF1CBE2864240ABA0FFCA1990215D2C5 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = D97CB39BF8F2C831589612CB2ED71D90 /* Padding.swift */; }; - C011B8342C7D5C803CD654A58A8F21AB /* scrypt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4621B79FEA77C668B08A9E4B0CF0C7B6 /* scrypt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C03A5E7CDA94D1EEFAA95BD7C8AA8A80 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - C14B28E1B085DB351DDFC83187893EAD /* SipHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44C36C457BDC5A424B73FED2BF2B0CF7 /* SipHash.framework */; }; - C1B356D260ECFA714AEF597CE84D6ABC /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D587E4DB61D38FF4A1CBEB61903470D9 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1E5BA379AC870AEFBB027BA37F0D4AC /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD4F0D58F76F4D676944EC3DD0AC648D /* secp256k1.swift */; }; - C2151450953E0EC8EDC912BD70010B41 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E1A060CECDF25684D85667577DBA798 /* join.m */; }; - C3051783E23BFA409BB94984B8505ABA /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 724C44BB8A759DE7BA8C45425E26F27A /* scalar_low.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C336A99180A6D5AD84C44CC15F48E2EE /* ABIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E120CDD5DB9769DD2435516A1D4567 /* ABIExtensions.swift */; }; - C36E78B76E37290EDFBD35F753C8BFD5 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7B0F55D684C65453D559D9B4BDC75A /* String+Extension.swift */; }; - C3FF72941CEA02672209A73FF19E4819 /* Web3+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68FBA8773B17FF0BE969F589278D0761 /* Web3+Instance.swift */; }; - C41B8867263E3E6E42470A3C646B1D19 /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 905EF6316653669512380D6206D3F8DE /* Promise+Web3+Eth+GetBlockNumber.swift */; }; - C44AD471D7A7916A140FDE4609781022 /* web3swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = ABA0BB0844791492402D5AB66E61BB24 /* web3swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C4588BD98D41DCD0F44F6FA043DC15FF /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5A89E2E2F70E548530DA60AF935479A /* UInt16+Extension.swift */; }; - C4CDFEEEDDAD44CED19260B6DBEAE02E /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE86F8153D27F10505EBD7D9EE3DC397 /* Collection+Extension.swift */; }; - C514360D7B3C5BCB4E0225D90CF187E9 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E2604B78547CAD1266D726FEE58D2C5 /* Promise+Web3+TxPool.swift */; }; - C52F5CF7ED0B6C4EDD0C0DAC40D16B4D /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 166AE9FC576B1A9469DA3090BD651D48 /* lax_der_privatekey_parsing.c */; }; - C5443D345E878DA9400BCB516DF56B12 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BC345225A9FFFEDFD6BCCDA6BB4F076 /* AES+Foundation.swift */; }; - C5F4D394712A325BCB341BE8623B6111 /* BIP39+WordLists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CC86CBFE859D6D9E92CE62268D0C8BB /* BIP39+WordLists.swift */; }; - C734676627537B0DFCA232D1EB633C0B /* Promise+Web3+Eth+GetAccounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = C07DC3D70012BD62BDE7B7032EE7A09E /* Promise+Web3+Eth+GetAccounts.swift */; }; - C8095F1D83EA88E00DD945FCB0469AB2 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BF4714912851ED7D22D2EF0B37D9625 /* PMKFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C943B4DB127AA6A95B94A3630D9DEBFA /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A02CE100739858E7B58E0BC830FC666 /* field_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C9E64C6119BEE088DEA38EDE36913847 /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CAF5D39045C811128307EAFD468C89B /* field_10x26.h */; settings = {ATTRIBUTES = (Private, ); }; }; - CAF579CC2CED09FBDCE2864827B8A085 /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37074DF9E43F92D14CB23B688C72FD89 /* BigUInt.swift */; }; - CD78786DD832146021F67BDA26D07BCB /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = C669F6C727F3A19F28202283CAF3CBD6 /* when.swift */; }; - CDD09F29DAD4B81BA080341DD1E62A47 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0315A68D7F2B7AACA7AD8A42A20A8F3 /* Error.swift */; }; - CF9E91FF64AEBD06486F49509872C007 /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 157ED0FBF8A2E71BFAA26655DA1359CC /* ZeroPadding.swift */; }; - CFDEB0F86B9C7084B7DB4D052CB012A3 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BFBB3A57DFC4A14798203F7DD419319 /* Thenable.swift */; }; - CFE8E9ADF0B2C6758E619C4CDB178CF4 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD1EAA1F2E44F11F5F6032A518194EC4 /* Blowfish.swift */; }; - D07B6C6C612285018A6657649C285DB4 /* EthereumABI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E16B8BF7D2F429329E671B5BE4F1AC8A /* EthereumABI.framework */; }; - D3D0D567F96629FC64F8ECAFAEE917ED /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FF7D42AF8710309C16345FB83ABD5B /* Deprecations.swift */; }; - D3EB8E2BA9D69A1AB9BE406CCBF38946 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E161AA24151D1227B11E7BFC7091272B /* ecmult_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D416E9A2C53EBE511502E1E404028C7B /* Pods-web3swiftExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E440C4B74B44A098160068C009BA588B /* Pods-web3swiftExample-dummy.m */; }; - D41CBBA4660B26D0AE12C867C2D27DF3 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35A75E22FE221D90EFEAB4998EBFE2C6 /* SHA1.swift */; }; - D4FD2B2BE9EC95B59458C3784C1C77AF /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F9BFEEC4833708E9B4067DFD84C5DBB /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D54E7F5BCDF745F7613DFF701A32B600 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = B72048F832A9C75C2A81C9CBC769CD8D /* scratch.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D6DF6D0E2CAABE79ABFE4E49B5650811 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 974A7BFE8E92E050D2FF9124AA7DBCC9 /* AnyPromise.m */; }; - D976E2E8FCA5504DCF2738F501041438 /* Web3+MutatingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 380373C357903D6101BBC00E60665458 /* Web3+MutatingTransaction.swift */; }; - DA0E5E2EF44B023411F64FD606A05C46 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */; }; - DA44967E128BD7BFA50F2906B0B2C9C6 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CADF98FCCC9B29F22C0815C40CFA3B2 /* basic-config.h */; settings = {ATTRIBUTES = (Private, ); }; }; - DBBFC560AB043DF7F0AF1ADD29B96323 /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = FC8ECF2C2B981EAF227B97F9A951A7A0 /* UIView+AnyPromise.m */; }; - DBE553B80B7B7A047BC80FADEC7B5F83 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5659C3AB77D7D5B8A5D896D5D8A6CA6 /* HKDF.swift */; }; - DC7336EC3F7331F6A630EDA5F32F30E7 /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A645643D765879996A0FEFEB17AEB2 /* AEAD.swift */; }; - DE126CF9A74B3DC25B39B8FA01484B2E /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = C4BEA212C4B71400038EE33CE9319F63 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E10034AED811B87BB547AED12B01AF19 /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 36F8641D4C44BD3D0E08388287B61EB7 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E1705CF699458B16784782F8A86F23EB /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34300D9F450A76F1C0795BAB8BBCE946 /* CTR.swift */; }; - E25CC0BD6475813592D7722F3FCECA43 /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3F88A45DE0134E5C0FCE9C79186C9F /* ECB.swift */; }; - E4339E5E7ECB60FD90211A3CD8E64568 /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A6500122B234FA6647C2568B72C2D9F /* UInt32+Extension.swift */; }; - E60D4C87A96FCA917970FD522CA8F9FF /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 06016B2B87ACCBAB44FEDBBD9D102DE8 /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E641B1AC99C2FE1FB0B1BF1DF49CCECA /* SwiftRLP-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 47098DB41878FF379AEBC8644EC53E97 /* SwiftRLP-dummy.m */; }; - E766E43AFDF18D5012C83670A1B48A27 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 343E05569A3D9E6C883D808CAC28052F /* Blowfish+Foundation.swift */; }; - E83BCEA137A6F28FFAC7EE0079FA6156 /* web3swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FCB3C4C3B8E9D105D6C89E3C89F25474 /* web3swift-dummy.m */; }; - E8CA9824DFEFDBE5FC430276A237F97B /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607E73BBF9CE339CE9237C758D8B09FC /* Data Conversion.swift */; }; - E990498BC866B73EBAB07888721A09D1 /* Promise+Web3+Eth+GetBlockByNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1860F5FD511E1CDC0321E2D6EBA3AFC5 /* Promise+Web3+Eth+GetBlockByNumber.swift */; }; - EDCBAD6FE0DC05519BE87FA79D6ECCD1 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7471D4ED5465C42EB4CEE0034421F62D /* RandomBytesSequence.swift */; }; - EE851A358B5CFC5DB55B649D4E0F6817 /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 612041911C9ABF085CC39D4CD9864737 /* String Conversion.swift */; }; - EF2D257F439AB4E0C37E407B20DF41BC /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3D67EF88FBE3D4B3938095FD5B0EF82 /* Cryptor.swift */; }; - EFB38A3AC0C79689874458BE12601515 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2614F5FD7FA2BFCEC145FF6C4B3A1D56 /* Data+Extension.swift */; }; - F1631F5F7CD77D9527E4FE5EEFBCEB3D /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA422749FB6CE4DA61C615258DDD6B8B /* BigInt.swift */; }; - F25A68C1BB11B18A009139962E36D783 /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB666C41E45C6ABAB0192295B1ECAC7E /* NSURLSession+Promise.swift */; }; - F276CE59D1316B2370725D47D4EC2FB7 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CEB1E0F5569F3E140EB5B421C414467 /* Process+Promise.swift */; }; - F27A72D9086266FFEB1DF3028EDC5737 /* Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03FB5FA9008321DCD209AFD9C2CE3670 /* Web3.swift */; }; - F5BCE1E730F746F620A9DB13EE2C1B60 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 131215941945D5345AF8A047A6629C21 /* Generics.swift */; }; - F6666F3FE8D03AFE4FDEE4421D50B914 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D616168A7A23B7AB1995D8FCE9E3C53 /* GCM.swift */; }; - F68103A274867FC3D714744E8A1E1A27 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71B0B58F78D56703F9250DC12E414AD7 /* Bit.swift */; }; - F6F9AF37C197AAA6E2F2341E1D2F3EAD /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 229F4D226F1E6B09333978F7A65F9389 /* Poly1305.swift */; }; - F79164F06C90C81A48EB83EE0AB5F761 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0A18E92B2440CE03C08D553EF12E1AA /* SipHasher.swift */; }; - F9A7E63350044E62F0E412D2E103915F /* Promise+Web3+Eth+SendRawTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2D8D233951D90BE212C1683EDBE096 /* Promise+Web3+Eth+SendRawTransaction.swift */; }; - FA024A288AA4357EB04E48AF9BCE53D1 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1079CE813B6ADE402DA1A75AC3BEF4C /* CryptoSwift.framework */; }; - FAB7360AD1D3E53E3A466486C74B99AC /* BIP32KeystoreJSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6954609CD039F4F09E75EBC79203A7B /* BIP32KeystoreJSONStructure.swift */; }; - FB0B2EDD326D7C1D112BBAF8F3F9D6AD /* Web3+Options.swift in Sources */ = {isa = PBXBuildFile; fileRef = 617463151A102A6AE3996BBA956F7E7B /* Web3+Options.swift */; }; - FD67D656E8426746C043D859E4B444D2 /* Salsa.swift in Sources */ = {isa = PBXBuildFile; fileRef = 712C8CFFF313A75DD19030E239230234 /* Salsa.swift */; }; - FDA87C074AA11FD15E2484CF0CD2A696 /* Promise+Web3+Eth+Call.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6FDF59FF5D7342988E8B93E48F3AADF /* Promise+Web3+Eth+Call.swift */; }; - FEF24F9BB68DD9774ADE13F2F789BF2D /* EthereumTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C613070ACCF0136D2C14651C688498FF /* EthereumTransaction.swift */; }; - FFA8593E38644858DA006AC13FCFCE1D /* ContractProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C6FDA4C7AB83C6CB50D21313F5540F /* ContractProtocol.swift */; }; - FFBA8696A49B49BA33D1499546FCEC58 /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A30F7AD0E2CB204A73B0944A1D13857 /* Shifts.swift */; }; - FFF6A96467984411196597CEC016AB21 /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = DA539D1F3176FABFF9035EC2FDFD30B4 /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0099A3BA3AE5F30BE11463D07B08CA94 /* BIP32HDNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25111C441DAC466B26E01891989A1AA9 /* BIP32HDNode.swift */; }; + 00CB6D803209D1D51680D4110AB68F57 /* AbstractKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041F9F28F415CCD2D8317C605A040DB7 /* AbstractKeystore.swift */; }; + 0245D2B3B7D9BFB4F0A707AEA33F4117 /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4429E4B96BA10BA786285923C0613A0 /* ECB.swift */; }; + 027B05F1BF7D21136218C76A7A3DCCCF /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 2D68A0C01D3620A5BEE69C7FEAAB7B4D /* secp256k1.c */; }; + 02975F6C53E98892508F22049CC8D7C1 /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE700E8BC85FBEC333D170049413CC0E /* CipherModeWorker.swift */; }; + 049ABE1ADFDA14D374DB3841BBD870BA /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = F149B755513EA2D5853526907167D881 /* Resolver.swift */; }; + 06260E614058886CB730147062CCAFF4 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE990037630914DF9DD1EBF428107663 /* Multiplication.swift */; }; + 06B89A538A9B9179055CFAE9B6F4BB95 /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = CD7A206E7BC2F6EEEDF54ECE76E60715 /* PMKUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 071551D125D95B1FD679072F0C2802CD /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDF60BB5F5D544A9B2BA4857654D2153 /* Cryptor.swift */; }; + 08A9C218D7F778DDACAE7525750FD085 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B99A6B6A6FD88742A22B6FD8ABC68799 /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 092841DCC0E285946E1B8BC8ED871726 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = B74C432CDEBD12EFB8DA0B74D4C0B08D /* scalar.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 094AED8757D57B70266CC6326BD2B82E /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03BA18BDDAC0A893C9CA6A589621413A /* BigInt.framework */; }; + 094DE6994F62CDE66FA3220E38C8A1DA /* UIViewPropertyAnimator+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFED2C714EFDBF8761B657F2379B4993 /* UIViewPropertyAnimator+Promise.swift */; }; + 09EBA3DBCD445DA87CFB492BC8137FCF /* Promise+Web3+Eth+GetBlockByNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = F82FA521CE7B8B61BB83B7E5A5FD3356 /* Promise+Web3+Eth+GetBlockByNumber.swift */; }; + 0A00A1489D4041380B2BABC394E6162A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + 0A2BFB69ECE30D2C72D7817DDBBFA714 /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = A57714BF3D28F84B3282FD4E0DC08067 /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B744323C08EE005F81C01DFDB92819A /* EventFiltering.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7FE5E037A9626EBD430EA40C2697613 /* EventFiltering.swift */; }; + 0B8B4A4E4DAB4112885B853A64E5B884 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8091B2F3E27BF5E3A15457CDA62EEAB /* Deprecations.swift */; }; + 0C901D0BA756E4524BC80BD9E4D51EED /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E569605DBBD1754B4C6C4725277729 /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0D615632DF3864D8EA29E9EB64D677D9 /* secp256k1_swift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE56D0600B05B3361D823F1E58EEF49E /* secp256k1_swift.framework */; }; + 0DC6241C2B48679C60444E1235084B14 /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C952D47C4A429911E1F5A0285A580F /* NSNotificationCenter+Promise.swift */; }; + 0DDAE49169F8F9D22C1C8ED630EC645F /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F9E1271D8C69173254FFC3331D7BCB9C /* scalar_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0DE1147C430399AF8061B2D854EC258D /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A425D221E163EBFEA8B65715D42B4A91 /* CoreImage.framework */; }; + 0E5B7BF2486947C9DC8A8AD780D639AE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + 0E7B1C65909FA4D3455404D56F525882 /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5489609F31B6309C2F681A604BA8681D /* CustomStringConvertible.swift */; }; + 0F9B2BD3E64370C9656C0A33C70EA3A4 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EA3A555CDD6453F5EBDDC83D2282DD4 /* ecmult_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0FE0F12FD785F9528B9EE88C7148B0AD /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = E90FBB935144B110815A586CEEB51A0A /* after.m */; }; + 0FF63E5D41DEFACFCE2812A03399592C /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD154EA3D19C13CA86EC21B415CAB05E /* CBC.swift */; }; + 10D0F980DE69DD8C276EDAE2917F5C7E /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 2152BF84C80A93B19DC080C9ACA6AA14 /* hash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 12201E6E14BFE3B9E4B49941A8100BA5 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = DA056E66B02BCFCAB2F667A64DD52323 /* NSNotificationCenter+AnyPromise.m */; }; + 123520F491A539CAFC1BE9CF22436D74 /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43FCA81048BE1E6EDD10DD5A09AFC71E /* Promise+Web3+Eth+GetTransactionReceipt.swift */; }; + 1250419CCA5E6EA65F95FCEB1C1BA381 /* Promise+Web3+Eth+GetAccounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AE49EC095DE1E773A34210ED7C9BDC9 /* Promise+Web3+Eth+GetAccounts.swift */; }; + 137020DFE1159393BA6D803053E21577 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = C47BA6A1082EC7355BE221F69144578E /* basic-config.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14E6967BAA5118080D57AF8734C82A37 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB99C65DF248DDC1FCE31D03A2A7A186 /* CryptoSwift.framework */; }; + 154B5811AF1E8FDF24CE54D193B23FD3 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A624EBF9928B501D3FCB7063BE5134A /* SecureBytes.swift */; }; + 15BC7ADCEAE008C7BB25629191E92DCC /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B82C5DE8A785E6269DB003104752AA6B /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 176793436085D193D9B173833894B9E0 /* web3swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 03807B2A7B52DD398BBA81C614D9159E /* web3swift-dummy.m */; }; + 17E9D5F43CC7338854182B8277B2856A /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ABCD8D6A83571E5D316165C5C7BAD0F /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 19CB0499AFA7DA400A38145DFB3A7AAF /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = BA96EF12CD0380F6329120CFCEC98883 /* ecmult.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A6CD28CDF35ED0336F200AB1F1B586E /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CAD7B7651257EAA4ADB417492224FD9 /* Collection+Extension.swift */; }; + 1A85105801E7A5827EA580D2ED91D845 /* Web3+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = C927CFEAD2B7A02878A3629E72FAE9E0 /* Web3+HttpProvider.swift */; }; + 1AAE57F0A306A2AAD76869C7791A74F0 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDC01204D56D1E7E53AE7CE1408143AD /* Cryptors.swift */; }; + 1BDA674B011972EE9EDC32ECAC1D3663 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CF7941AF97680548B0BD0C1DD2C544FA /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EF21CBA6598DA29671E01F65D74F9E9 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BBE863715A30A04646B3EAC1ABD367DA /* eckey_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1F8AC5416AB068B3A65A29F1F17D294F /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = AEE3975D29B871EB71794A90B9F8308A /* UIView+AnyPromise.m */; }; + 1FE81E3F51E4127034F082C358308DF4 /* web3swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 363C7CAE4A696FB485713F900C50BD8E /* web3swift.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 20124CAD3985F694B8ADDE98270CA4E6 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EFC6ED32EFA173BF4707A638FDF43BD /* num_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 202BFBC315307612A94F35CC7CB8431C /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC47AF77749D0026E3EF3A401D57144F /* Promise+Web3+Eth+GetBlockByHash.swift */; }; + 2140225AE207D36FF589524E449C1224 /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03BA18BDDAC0A893C9CA6A589621413A /* BigInt.framework */; }; + 21E3C68294A9EAA3E73570E77EE096B7 /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C54F0951D60C6F876148B8781CABCCA /* Guarantee.swift */; }; + 237769B1B3B0B3F548C4FE850F08B0DD /* ComparisonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBE1A99C5F06FA601EB3BA6AF8E12823 /* ComparisonExtensions.swift */; }; + 237A14D8DEC5F90A4B4F2B1B3F2E805A /* Promise+Web3+Personal+CreateAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4423633FB237B5BB7AF32A7954919463 /* Promise+Web3+Personal+CreateAccount.swift */; }; + 23990ABAFAA301D5FA1DBDE8C0D98CB6 /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC6C386C9A8340C0F9092603654D35D /* Scrypt.swift */; }; + 2400578287B976F7DAF30F21732D4E72 /* EthereumAddress-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 023FF709B57E86B5145F82B021B235C5 /* EthereumAddress-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2410FAF7BF8290F3795942E0A17156D5 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = D441A193362D82ECCA57314CDFB8C8A4 /* race.swift */; }; + 257572F4EA8931B2C23143A5EDCB598A /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB99C65DF248DDC1FCE31D03A2A7A186 /* CryptoSwift.framework */; }; + 2593C0EBEF1B2E9CF107CC42EE65ADAC /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = E06652239DFF119EFF3E81EBD7F8A2EC /* ecmult_gen.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27543AE627D3E80556B6977368D44F5B /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD9094C3262B9A88750EDE5EC8893309 /* ChaCha20.swift */; }; + 2774E2BB4B351B11DB749866EB68B804 /* Base58.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD43F88971059B766F3A19F87BEFA57 /* Base58.swift */; }; + 27D3FEFBE8512CFCCBE17A1E20BD504A /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E6024723E8B18887F52F234C7FFDE7 /* StreamEncryptor.swift */; }; + 28BAD58EA9F935FA593279B0657B293A /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 72CD2EF06C8B53FFAAD23C1105AEF940 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 28F87456F395D194B02E812E6B1DCDAC /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41453B796970559110DF331E26172E95 /* Addition.swift */; }; + 29EE5557506D0A6E51F1BDD02FD0E35B /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C568EB183FBB755447359C38525A008C /* BlockEncryptor.swift */; }; + 2B707FC0AE19FC46F79A9DCB15565F34 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5ACF9F2CD8131267094BD2B909B5832 /* OFB.swift */; }; + 2BDE630A7971F821B76A0E173C9B0285 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8572B1E5B2DDC7E8EC266A5FB4B7B3E /* PKCS5.swift */; }; + 2BF13AABBF00D392652883F51EB08532 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A02820FAF7C58526D6827739E4D806B /* WebSocket.swift */; }; + 2D2ACB8442450E25D9DCC39CFBEC8505 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C48C05239F6ED9936C07B3EC1FD663E /* Blowfish+Foundation.swift */; }; + 2D7F91B8A926238E80B32110B66C0CB3 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = E493F524C0CBD60F149396128F96E432 /* Web3+ERC1155.swift */; }; + 2DBC1D098FA55CED6D8659BDCAA8E09C /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BF2884177C800D4D0A4A5F233098468 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2DC51467D94557AE18B8802C6CB2D3AE /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7298E7B1EFB94F71B97BF18841929F2B /* HMAC.swift */; }; + 2E3E3C5559295E295D990F238FCFE0BF /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 55ABBA489DECB9D68B97E652EA223798 /* AnyPromise.m */; }; + 2EA087C68DC1E65F59A849A8E39F2F5F /* Web3+SecurityToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95436BEBA7470F0DDC350E6317D1DBC6 /* Web3+SecurityToken.swift */; }; + 2EC9E60BE3BD1A3A9F5E0718BA022E1A /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DE4D1208163A862D87DFAAB9ED0B6E9 /* PKCS7Padding.swift */; }; + 2EDA5696E719FDF3A29042026E8C3B7A /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE0E947B8B0B536536B0429E4FA0E7E /* Poly1305.swift */; }; + 2F0AF83A7587C65DD5CD76E0876ED41A /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8C91CD35036A0608CA6AA2CE00B8C86 /* SHA1.swift */; }; + 2F338BEECEAA54AE7C8E865AD363A7DF /* Pods-web3swiftExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BFC87E38D1F5804BE355509D4CFC0DF /* Pods-web3swiftExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 302081E69996CA585D13DB82415919AD /* Web3+MutatingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDEAD18C061E3D1F667B436202D8F711 /* Web3+MutatingTransaction.swift */; }; + 3042ED39B23E2FEB4A783FF94314B123 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = F854DE682020809745DBAF00AA272D44 /* NoPadding.swift */; }; + 308B6B640E9877439FF7ECFFAD0FFD8C /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 368FB68985DB579B669C42584F1A1F72 /* Hashable.swift */; }; + 30D8C9312E34F86D9FE451637F633B17 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FADC8AA5E66AC91B035868A375827D5 /* CTR.swift */; }; + 3207BDF1C7431A2959D217D7E3A7499F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279C81008196EC06BF97D52FBC72C36A /* Promise+Web3+Eth+GetTransactionCount.swift */; }; + 32497AA804330532885083A146E02A03 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B02B70AF6569F794B325DEF86DE4FCE /* PKCS7.swift */; }; + 3346491AC2B168554DC419B3A4C09B5C /* EthereumAddress.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B2684334CB4EC706DEEFE0A38DBB245 /* EthereumAddress.framework */; }; + 334FCEDC2F11D14DD09D08A7A39A7941 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + 345E4531E07369F280F7E8214B05DADD /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 403DC7FCDAAD3AC18F7D19940A4387EF /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 349044BCB89D871D83EBFAA4B45D4B02 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36A3E204EA9CF5A6F646DC4CE948D976 /* after.swift */; }; + 3619B46B87200D1E11E25EEDBF5AE223 /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 5143C2B024F1CC2D6A8CD65DCF0CE711 /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 361E0242B930EF8E80817A1B5E26FEA9 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47453013A4C06295E09A85ABC5DD101E /* Generics.swift */; }; + 36B264BDAE45EB5FD44EDA51E9C33B09 /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FAC9CA18FBDAACAB22476B23374AB36 /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3770408B2EE5B3B1799CA7CEDA7C851B /* Starscream.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E2473598287A2AED3A4949F99CE5C99 /* Starscream.framework */; }; + 38685BFCFFF8F2A135D34B7307493783 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 154FBE294611B511C37A4ED891A2ADD5 /* Division.swift */; }; + 38B11A1071CE655D7342E07647C38FBE /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 152631B2AC83D0E7DFC3CAE8DB858993 /* BlockMode.swift */; }; + 39664BD362BD3E4E555246D429268C74 /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBAE5C7A018C513821FF23A227C3B41 /* ZeroPadding.swift */; }; + 39D449F216BE4DE3589E7E81B588AD75 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90B138E26CE6079A11EBCC7397EFBB95 /* Integer Conversion.swift */; }; + 39D5017EF26C38684B3DBA9443363D12 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 36D8B3BD95DD5A44165E1966A4E1E9E0 /* hang.m */; }; + 39FA04B532B2F43A25659FEAE5105DB3 /* EthereumABI-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CBDF0C353A047CE42C219C152C68A1CF /* EthereumABI-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3A177034BF98207612FA62B7D1F07854 /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = A040A172FFEA67777847EAE37A5F335C /* String Conversion.swift */; }; + 3A33EE9D120DAFC852E05590D9FFA83B /* BigUInt+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DE380E7E30E2DA63FF55FAB600B3EF /* BigUInt+Extensions.swift */; }; + 3D9116A1A92509182992783CFBE600FE /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E22005ED4B7A9BACC15853954A2A499 /* field_5x52.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3E50CD8B1BB7890C9C774E6CDF3BCB60 /* Web3+ERC1400.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E09FC593DD82756F1BB30987FCBA3CF /* Web3+ERC1400.swift */; }; + 3EECF706637062DE793A3647EF8F2CED /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 51199B2789656F7E1BCA7DDBD744EC0B /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 40A40B1FE05CA18F8D29E9EBA6CAFE2B /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CF1D32CB9BC81934F1ED3A1A20FB5C7 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 40BECEDE07C0B88F49229B484EAA8785 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5309AF23566A6EC930189B7F7E9FA755 /* HKDF.swift */; }; + 412651595CAC0923D77164644158F2BB /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8E0EFF29CA29705D10D9C5E74B8F54F /* Blowfish.swift */; }; + 422301E71FEA358203245FA9379F7BB6 /* Promise+Web3+Eth+GetGasPrice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EDE959AAC0240C86F4452D57E1D6194 /* Promise+Web3+Eth+GetGasPrice.swift */; }; + 4357E07CDCE76CE06C2D8211E6C2D505 /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D998083FA5CCCF7EBE11B134EB20404 /* SipHashable.swift */; }; + 461F1791B1893DCC372BB82A1EA92C2B /* Web3+Eth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 105A61AFAC962D7CD24E3F394396A628 /* Web3+Eth.swift */; }; + 4635B6A47DE966ADFD3CBCB94E6AD575 /* Web3+Structures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FC6398B7A91945F57F6C49E80FDFF3A /* Web3+Structures.swift */; }; + 472D0CD8F5DABB8F407AB71234D705B9 /* Web3+ERC165.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1ED44070832AFCF673AD05E77E88921 /* Web3+ERC165.swift */; }; + 47542E902E628BC2BBA1FCF2F9358A5B /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9236E71B3BC4A82CCCB3A8A7B6B493C4 /* Data+Extension.swift */; }; + 485809A54233FF5182F63963EDED81D2 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 53DB5ED1E242022F0EC54EF41F33D167 /* util.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 485B976BC4E36F6EBA19EFB58D39BE4C /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = DA01EF9685BBDCA64A3561400110661F /* group.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 48B471DF4A519D1BADF5C103A9854ECA /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52F054DE4FE4614D93C7848BE307E8F5 /* Bit.swift */; }; + 4930EA77EFE3653DEFAFAC580D4DB29F /* SwiftRLP.h in Headers */ = {isa = PBXBuildFile; fileRef = A72F0169D086F56E0583F2FC87090068 /* SwiftRLP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4953F9319A1CDC15238FB32E356AA91E /* PlainKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05D334BF77A83E9911EBABAD390F3EB1 /* PlainKeystore.swift */; }; + 4A250928691C0CA6086C56434D73A5E8 /* BIP39.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39ED500D4A66AD511F77C19E3A67B4C8 /* BIP39.swift */; }; + 4A63AD8FF0F86EEEA9F77104557A4BE1 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41DFDB56EDBE11E1628DC294255473FC /* EthereumAddress.swift */; }; + 4BC7BB81F5FC7892146F6B70AE77508E /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = EA505320CA18CCC147004CBB5097B049 /* join.m */; }; + 4C580CB1A1F9A0795CC59497328538AE /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFA90A318474969AD8C5D1A2DAD6D0A /* PBKDF1.swift */; }; + 4CDF2E91F9F02099512EE0DBE6B79897 /* EthereumContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83E56F1D2469FFE3F5381113861A7500 /* EthereumContract.swift */; }; + 5026CB37D6C150731E3BDA9C3EBD37A9 /* Promise+Web3+Eth+EstimateGas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E5771939E550A5BFDF047698B0B381A /* Promise+Web3+Eth+EstimateGas.swift */; }; + 5186A4010426611D2C15FB0AFD84766E /* Web3+Personal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A7DB9D5C92CC227BFE7A019F2C06C88 /* Web3+Personal.swift */; }; + 53075748A8F4AB36DEA4BF24122DB3B0 /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAB7C80AC8C35B50D927596D426125BC /* Prime Test.swift */; }; + 547E34B173FDFC786A0DBB27D7869585 /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BAA04F2A5B0AFBA2BECB3E7363F3AC2 /* AEAD.swift */; }; + 5491A7127F5E2CE887DD8ED7E338169B /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38D4E56B5E76F0815DDB23862812AD69 /* NSURLSession+Promise.swift */; }; + 560D80477DB11E8CDE4AE4C1C70AA594 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = A812FBC3A42E16E11ECBFA15D3878CAD /* SHA3.swift */; }; + 569585A743D48C7CEE8A74BEBA8164C1 /* SipHash-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F3654A5FFACBE11A8A040D32B584DA7 /* SipHash-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 570615FA0B14455A3FF3BCD7CE4279FD /* ABIEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C9BD89A449DFB19ADD2B6976A30CC7 /* ABIEncoding.swift */; }; + 57C2434E3BEF5EBFF6A52A144C0585EC /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D722FE65FAFAE40028C720E052F978E /* AES.Cryptors.swift */; }; + 58BC63929C10738DD4471C2EA0F27794 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 24C6B95649014607F2915DE3DBEF4E6E /* num.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5A6CB89BE7C5D919F4B9DC88A12670EE /* Web3+Eventloop.swift in Sources */ = {isa = PBXBuildFile; fileRef = B15D33A6EAEE1F68CAB2F9F5AD8C4378 /* Web3+Eventloop.swift */; }; + 5A990B55EAE0F345374F6F2CF8FA872C /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD498B1C7771A8EC269929D12D223C2A /* Array+Extension.swift */; }; + 5B11A4362B4B72299B2BEA7DEE9D7574 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 697EBA7EFCADD90100A87D335D6DF76D /* SipHasher.swift */; }; + 5C5013823C8ED6F03F2560284AE8AFDB /* web3swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B9866EC0627510630500E8D61406C6 /* web3swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5C713F421310FF1531E84ABFB87A9A3A /* Web3+BrowserFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 249413324A68284771C2F1F1DD246666 /* Web3+BrowserFunctions.swift */; }; + 5CB6925D67548AD5BC159D7E0D509110 /* secp256k1_swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F8C0D993DCA33A1CACE355EE970D0E2 /* secp256k1_swift-dummy.m */; }; + 5DB71B9576FA0B1AE4CD5B2A2E615A60 /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84FD7D5349DECD6F57D3776531439A4E /* Promise+HttpProvider.swift */; }; + 5DF1B55FF04B593538DAB67A1A992E78 /* Starscream-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BA235879D4DBDA4C65651854023BE0E8 /* Starscream-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 609FD1B7C761BB0E829DFF771C4069AB /* Web3+EventParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BE885550B5668557EECC8CAAAB18D77 /* Web3+EventParser.swift */; }; + 61200003D737AAB21747C4C74C8C75F0 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D920DBF4639E6BC5184AF5322C1EF718 /* Codable.swift */; }; + 614A22F66E15044F86947CA566EB9B1F /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E37F44D3AE0C3799F7FDD44C22BC351 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61AD7805A55AE873AF25ED1AECF104CB /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64AC8AA3E75B66A1B1554F954F9C05A /* CFB.swift */; }; + 6240578CCF251EBBB37FB1CF9CC1884A /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DA7D0608E2C6E4F30C91CB552ADD93 /* CMAC.swift */; }; + 62AB914D2396842D00E6F828F2621D10 /* Web3+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 461CF0D1D7233ADF3327A55D5C5C6347 /* Web3+Utils.swift */; }; + 62B4DB558D551C52F017C2B3E4FCEC8E /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE91A3B39D3C21B86D3DCB2A26B599EC /* hang.swift */; }; + 63455720901E7A31C9A6FC219B178BD2 /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A3EF2BAA8640478F2DAF7D0C9A4075 /* BlockModeOptions.swift */; }; + 641D43895E28A4AF07787855E5C710EA /* EthereumKeystoreV3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB11A33D37953982594F0A4DAE1B087 /* EthereumKeystoreV3.swift */; }; + 64A8D1606C9375CB1920D841784DB1BC /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 897918ACF136C2411B5B66EA3B1F0BAB /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 66047AA6DC9792967100FD0D4F265DA2 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDFEC4814E5117A5F0A48ACF87F69323 /* BlockCipher.swift */; }; + 67126E7311E315C7C13E1F1B1687CE01 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A6B6BBCF87FA0F35636A03EFD3D365 /* ecmult_const.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6781EA9EE0316FEE3B5AEBDBD03A9670 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F82F7841D7037DB9711DE738D2F787 /* AES+Foundation.swift */; }; + 67A447799AA9D54712A7979BF46FF4F3 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B7903AA9DC0255E5B38B4C7F118AF00 /* Padding.swift */; }; + 6827684798D73E626CE1AB8A41217248 /* EthereumABI.h in Headers */ = {isa = PBXBuildFile; fileRef = B6F4F23D936E9C244310DC674062B2C8 /* EthereumABI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6871EEB8EB35AA9C82E5DF79EF8E930D /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F58F8097BCD731DB6AEE7E8D987A611 /* Promise+Web3+Eth+GetTransactionDetails.swift */; }; + 689CE439E38E23479ACD543E604E1650 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 110394450127E5CBF8DCCEEC36125A6A /* group_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6A02A36EE68CF19A4536797BFC94AB1E /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22C5A94118F97EE5942F802F3697FC43 /* when.swift */; }; + 6B024D672476053EF3B183605E8A79A7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + 6B0A3F67AEC230EA29FBA9B55BF1DEF3 /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24FF1E099D5C1CD2C3B4495C02CC3BBE /* afterlife.swift */; }; + 6C9B106F6756B25ECEEB63D83945D979 /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB3DE4A102C821D85EC63637EABAADBF /* Dictionary+Extension.swift */; }; + 6D83B2069750A00D38195608CF0D3D2F /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = DFD279F3E8B5C6D5EC1D7E97B1C35EE9 /* secp256k1.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E2CA40AEC7AC77A6ACDE16ADC8FEE5F /* BIP39+WordLists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A87AC0BF0E81073854E188B84BBDED4 /* BIP39+WordLists.swift */; }; + 6E9F8614391C41F26ACA75DE02C4E060 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A7A55C8706508E1E83AE9750F193C1C /* scratch.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6F1AFA7D659F191DEF74398B8252F61B /* EthereumABI-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 622F11D4881071566066F35534A37A69 /* EthereumABI-dummy.m */; }; + 7410CC50787B856351BD88BBE4391FFA /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25FD75371B807F2D440F8FBD44115FF7 /* Thenable.swift */; }; + 7612DA94727EFFA953E786302B7C18D1 /* BIP32KeystoreJSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8068716961C67C6302F060FA0992DA9C /* BIP32KeystoreJSONStructure.swift */; }; + 76B8531016F2FF0500E2BCAAE3DF010B /* Web3+ERC1594.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55770AD6FFFA1595F0BA78E39870A2A6 /* Web3+ERC1594.swift */; }; + 7824695667110A5B9F9744106916AA8B /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 111828BD2E1392F25A53108D791D926F /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7B1B48055DD612291F37CBBCDC1A6F6F /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = DC6CB21FEEC0C0AB8E1FB1B2A4F1B4A8 /* field_10x26.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7BF7B5E46E8DBF32B8780FDB25620247 /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EB496234A1CD0207ED440D93CD922589 /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7DF14AA267FEF532169C35ADC4F63788 /* Promise+Web3+Eth+SendRawTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C11B6001AD77EE83DCB8105F7BD82B9C /* Promise+Web3+Eth+SendRawTransaction.swift */; }; + 7E76DD207641E9934469DA81C479BD5A /* ABIParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87601F0E5B299447C7A9C0252EEA9AB7 /* ABIParameterTypes.swift */; }; + 7F22F82C504E931BE02DEE7FE432AF1F /* EthereumFilterEncodingExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194CA9D19F3A81A23D93DCAF5B9BE54A /* EthereumFilterEncodingExtensions.swift */; }; + 7FA73452440A65B3986F48D6565DE363 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405936053125DEA78A495958B5B9927C /* Exponentiation.swift */; }; + 7FEE7085B27F38DAFA2F55282C9B44AE /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1ED0CC08B26CA2596B61EFD55B2E74F /* Process+Promise.swift */; }; + 80947B39695EA3E9DD92A565A4877BF0 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 396B8E6C99FB3E5DD98D80FB6653B257 /* race.m */; }; + 81ADAC40BF7019558DF468DC9B8D65BF /* Web3+ERC20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EE106F99AB9588712126C149FFFCCB6 /* Web3+ERC20.swift */; }; + 823817498AB20AC2A1396F9039B8D54E /* secp256k1_swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8589B5FA79D43F7D506021BE3BF49E82 /* secp256k1_swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 82898B5B2929B43BCD93D48E913297B5 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9FC0914E7065E79AD1618473FC13070 /* Updatable.swift */; }; + 82C18E372E61A80A3F85D85944E901BA /* Web3+ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E0D3D128B9B8E9CDA7FDEAA66A6FC3D /* Web3+ERC721.swift */; }; + 854D1CBE56A433579B2B8F2F97E06FDE /* SwiftRLP-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3725F8D66F7749EDDBE97934290414B3 /* SwiftRLP-dummy.m */; }; + 85E6A6DFCA2C741484F03A7B485CF75A /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F31F770883EF864A1F37BCB7957A5434 /* UInt32+Extension.swift */; }; + 85F1D1C1D4D13AA15D0B0E2D0E15BF6D /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2B9064EC3BE1A9C6EB75E912ED4BB46 /* Authenticator.swift */; }; + 87DBDEEA2562E5BEBAC4363DE0A3188B /* ABIDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B84A6499FA065A0524CE43C0EC5C624 /* ABIDecoding.swift */; }; + 8C2D4B5DFD9A87FE1B9BFB47F82FEA3B /* Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2C0222A66151B5B68E982A7761953C1 /* Web3.swift */; }; + 8D8CF0B18342D97199DF421D8BA1E9BB /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A2AAA080CDE548F7FC9C6472C9117A5 /* Shifts.swift */; }; + 8F258952A0FF2F009C23E4EAA151FEDC /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 612CA839D5B97DA037B60F55543ECA1A /* AES.swift */; }; + 908DB48E8066721EACB8520E3687D5AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + 910974DF68B247D50C88FD3FE865C293 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2A1A54D7D533D3A7714DCDFC368A9C8 /* Catchable.swift */; }; + 914BAC2514F778501813AFD518A5CB41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + 918FDE716EBB465A71AF205AA52EBEE0 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 312324E2886FB061BA10D963FD7A41A1 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9213FA46FD9BE461EF52741BE3AAFA10 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18E3D910B3B82E797993D474CFC71714 /* RandomUInt64.swift */; }; + 9245FBB1658AEA979C4ECE13636163D8 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF4179EDA60DF15E84FF7031142B345A /* Configuration.swift */; }; + 92C6503EBB08A80B461EAD24767FE7EE /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DF097B4C6E873C96CFB513E5B8EF9D /* ABI.swift */; }; + 953CDC5B328EC35D0D3FEF4B7F6006BB /* Promise+Web3+Eth+SendTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1BF9D584A61B086B24585C72CE51A52 /* Promise+Web3+Eth+SendTransaction.swift */; }; + 95A8CF5F7CC7D24C3474A28A238A39A0 /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8883EA88DED60F86BE6134BD372740 /* Promise+Web3+Eth+GetBlockNumber.swift */; }; + 9692981BFBAE3CFB38F0D42332FEB745 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 917DD6006F6D77DD4E4F694702AC8476 /* Utils.swift */; }; + 969DCC2445A06DFC72EEEBF40E3BCB45 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9535C4DB976B3816901E33D1B905FA /* Extensions.swift */; }; + 979248437CE2E276A35FBF6434273E2F /* Web3+Wallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89D17D0DE626A746CE48891A9E26C5A6 /* Web3+Wallet.swift */; }; + 98AC0C965479653BE92F3D264D5784D3 /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 127CE34FA6ED8F87D1559E289DC81806 /* Digest.swift */; }; + 98E016CD673552FBE975020F81574126 /* BloomFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00AD9F67AA03DBAA91D8B55E8874023D /* BloomFilter.swift */; }; + 993A35891F0F03DC7D4AAD33DAB31374 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5847C26F200A6C51FD16D43A80B740C /* HMAC+Foundation.swift */; }; + 99531B97ADAB2E75EFFA98A3FBBFFD48 /* SSLClientCertificate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D9F5069A0BD2E4EDDF30740E5A06FAE /* SSLClientCertificate.swift */; }; + 99965CC6D15DB9A0026C8197E549E41C /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E00A5CB0347D5EEF2EE16A1EE7AF79 /* Promise.swift */; }; + 9B04407DFD3F92FF013BB02ADF2D7985 /* SipHash-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 185F4D997295129FC3B6DF6540161887 /* SipHash-dummy.m */; }; + 9B2097D2175A4B9C14A4FC8DD3A4FDBA /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = C027BB8E8CE779B62A5ACD309612C324 /* Promise+Web3+Eth+GetBalance.swift */; }; + 9B81C7A4CDE9223B7FA7050D350F6717 /* EthereumABI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B047B9565B4F87320AC4BD2745BD099 /* EthereumABI.framework */; }; + 9C46F6BE8DA5D3E6373EEF2C7EC6FDEC /* Web3+Eth+Websocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01128B279E0D9C232AA316F18EA8D83F /* Web3+Eth+Websocket.swift */; }; + 9C930D8A96627A1F5059FF23AACB21D4 /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 297FE35AD5B9C2666558663768FBD269 /* UIViewController+AnyPromise.m */; }; + 9D2159104F1CE2499C2C2306E66212EB /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B76287A97F1D7DCF1A90139BAECD97E /* CryptoSwift-dummy.m */; }; + 9DB7C215959B48D6A7E0F1A4012F9761 /* KeystoreV3JSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 380C7EAA6D084E75E133A8BCBCC14D35 /* KeystoreV3JSONStructure.swift */; }; + 9E584F08ABE7E197F6010BE7769FBB19 /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 155AC28C8A507F51439BD380BD4F9EBE /* hash_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9ECE6622AAD1511678871B048F90A0A2 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A880522AE506B0AF4BE47370B6B79CB /* Error.swift */; }; + 9F34F0FFBA3DD578ED0011881A399FEE /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A17861D5B7ACD7778C33A8118F906C0 /* UInt8+Extension.swift */; }; + 9F882C0FB4AA408854857E533402C38F /* SipHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C333383AAA8E072BC5B712339F021BE2 /* SipHash.framework */; }; + 9FFF8A42F340F8122237F1BC085BC1C5 /* Web3+WebsocketProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 905FE140AFE9E2D1D34DFF4DF70B19D0 /* Web3+WebsocketProvider.swift */; }; + A01184120EAAAFC9DB02F732E0157875 /* SSLSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 586A2E20A359514DBF452FDD02807493 /* SSLSecurity.swift */; }; + A0297ECD4FA5D324B754DF3A4061C652 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = AC4FFA0A353CD7959D1B53C0699E9A49 /* when.m */; }; + A0CE44BEF296C3E6832C92C84CECC103 /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = A3032ACA182EB8CBEFB6EBAE487AADD1 /* scalar_low.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A141E388242851CDA7262E355BD65578 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85016ADFE09DC9B1E004271C55B8B2A /* Utils+Foundation.swift */; }; + A1D670E70275FF79ED7AEAEBF737B87D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BC31C87FCB06841CEFFBE945A33999D /* UIKit.framework */; }; + A534E40816DCB7B90D007652873C49E9 /* Web3+Options.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16A028531890ABAF370C07DECECEFA9A /* Web3+Options.swift */; }; + A6389664372C64A009E5D51C59DBCB12 /* EthereumAddress-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F5767D1D9C884A9ACA6735647B0A3CFC /* EthereumAddress-dummy.m */; }; + A657235CCD8F427484683E5953DC5F25 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4C2F35038636BD2A176E453D53C5392 /* PBKDF2.swift */; }; + A6B182AD5E28282465F05D387A7AC518 /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 187A5E15B05A9B147AE7A0F885C7200C /* BigUInt.swift */; }; + A720FDB9911B95D869E919F1A672FE35 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE0C6BB35B7338337CC792C8011E8E6 /* CompactMap.swift */; }; + A7635B8228A935694218D4B09BCA82E8 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98B647033331AC4C08615DB995A615A /* Comparable.swift */; }; + A7F64F2A428DC907B49D22A49386D1B3 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AA706569284A0C57DBD0DEB25EA91FE /* MD5.swift */; }; + A9A483C08153F01DCDB0EC2A337EBD2B /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6609BC693C2981E22DDA6BC3AFF4C1EE /* NSObject+Promise.swift */; }; + A9CFD8AB07572A31FEBF0E3E79C8EED7 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2D27DD2D65C3C0C2C6E8F156D15CF85 /* Rabbit+Foundation.swift */; }; + ABBF5F794ECCB42903EDEA5D0BA48600 /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B103F7E3D0E413375E008114901E7F3 /* Checksum.swift */; }; + ACC08A0696D9569ABDD8AF4E3DF56CF0 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 806B1ECC842DB771A758818B3634535D /* NSTask+AnyPromise.m */; }; + B0D18E57BF68A6FF324FA12B8BA53F29 /* Web3+JSONRPC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C06FBB9FD8842477EB753D801D3228F /* Web3+JSONRPC.swift */; }; + B13475AF4E97F8F19C7C93EEF4D172F5 /* Web3+ERC1644.swift in Sources */ = {isa = PBXBuildFile; fileRef = B930C05EEE398B8731B39BB587F6BAC3 /* Web3+ERC1644.swift */; }; + B182F607D8961CA7092658A75BFF52C4 /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C05784A6396962ABADE3CB63C7A925 /* Data Conversion.swift */; }; + B1C0426CDFB20BF6920D0A1C040E441D /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D9DFEE46F96369F7F23945C015338BB /* SHA2.swift */; }; + B32832D54AD45BDA10EAB735065123B2 /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 65B68BCBEA2A49C214C45E571D3B8784 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B339871CFB8B6403B28E4B337AD58DF1 /* Web3+InfuraProviders.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCFF2DF693A9CC8B4583390AACCBE8F8 /* Web3+InfuraProviders.swift */; }; + B3C546DED9B2E367D79DC4AADE06A625 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99EC6BF69BACDC179D63343077FB8CC3 /* Primitive Types.swift */; }; + B3E1DAA96C383AC98617ADC3BDF9E09F /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C9DD170C7BBA3B6D3CBF04C54C180E /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B41C8B1A80608C396602AE22DD70E98E /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03BA18BDDAC0A893C9CA6A589621413A /* BigInt.framework */; }; + B551E04BB84EF28C4F57BDA08719AE9C /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0B650B4EEC9B0F9E323FE4ADD5DD916 /* Square Root.swift */; }; + B5756910E26BBBE8911220150D40D0D1 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CCA1EEE130F872890BF3BD21E3EF50 /* dispatch_promise.m */; }; + B762A63D686AD97A5E9EBA7B857FB2C0 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0369A41FE6EC08408FA9CA787CE8EE26 /* PMKFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B7C2CA19BF810C09BA258A4DD6F78FF6 /* Promise+Batching.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ADA92C2BA781EF1D562263ECE0EFB44 /* Promise+Batching.swift */; }; + B923BE92F91697524F92C612022050C2 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041CC61E3D1010D65B6AC7BDA1106530 /* Cipher.swift */; }; + B9346FD630730880203EA4E237EDCCE5 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CD313245E3D762D6C0E82E0D8ED78FC /* String+Extension.swift */; }; + BA8738D271DCCDF455DA1E37E71F3AC8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + BC73DEF2CFD58CB787EED6AE90FFE74F /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EE51633337DCE928949C190652FF224 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BCD95B42AF0BF6F9200B9C1C6D5299FF /* Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C8AD803BA9C548885C8AAAC9812B73D /* Compression.swift */; }; + BD3E19C4FD44CC951EEF70A34AD4891D /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = EB41575E9C6C8175A129B42F2D0E4A19 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BE35DC5159A4C3BC5E97F6D2FC297119 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14907E9E8F614DA44E2DC8785BC8EEFB /* Operators.swift */; }; + BEA21F7684A83CF6D28751E76CBE8A2F /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 25F0C7876CA1DA522A25BD0A93924B8B /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF5E2687720ACA04ADB83BD422B102B2 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117965527D1009FE20A946C6694F6C6 /* UInt16+Extension.swift */; }; + BFC5F204A65B20A91D2113BE1FD89FC4 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D444D90A5F33EBC7DC0C528387C29E21 /* Data+Extension.swift */; }; + C08056585E38049F465D329483EE8C5F /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D440F54CECE935D3F4ADC427EEE5CA /* DigestType.swift */; }; + C0DA1532A7C415088D90AD958FAAF280 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11CE75408CB57DDCD17E318DE453D56C /* ChaCha20+Foundation.swift */; }; + C0E3847468DF809D8D77FEF43CC5EEDB /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 037E7B90D8ED1BA75234ED2CD9D6C550 /* UIView+Promise.swift */; }; + C255DFACD3C584AD2367877409EEDD4A /* ABITypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA1D2D03C1B7E7FBB721F21A151C7B36 /* ABITypeParser.swift */; }; + C269FD974574810CE62B65643EFBCA5A /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C66B0B08AF5D1C7E50E6C9FA5563D5 /* Random.swift */; }; + C2C2A13C72D2786B953061E56A72118C /* BIP32Keystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDA7AFCFDD5B6D2CAE89028C203CDFCC /* BIP32Keystore.swift */; }; + C3599769ED2FD1B8C167E994F31E330E /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6F3EAF9A21316F32A846121C5A29C5F /* String+FoundationExtension.swift */; }; + C35F2921C13E7D6F6DF5921A231E4A55 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + C567F2DAECA4D0C6080F46FA3C8B77A8 /* ABIParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE030C7B7D6307F5FFD7E0945AC6A435 /* ABIParsing.swift */; }; + C88AC084D58886CFA6B666B49A5F87B6 /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 72F0A143D24A413EB5CAA1E356DF797A /* BigInt-dummy.m */; }; + C893E7F52A9AA6332AA251272AA66E65 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 318275089CE5164F855BFDF864084EE7 /* PCBC.swift */; }; + C9082F71AF997A9F26025AE7770E7601 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = F29D6A9677C6B8663CA6E02D8E7C7A0F /* GCM.swift */; }; + C94705A4B12F60FAD2CE41419C7B72C8 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = E36CBD6DA982F652B9E00122F3970967 /* CCM.swift */; }; + C962C2C206F984C1DBC785F3F219A0CE /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385538F5EA5F8E7D1A093D1AEB1A8C0C /* BlockDecryptor.swift */; }; + C9CEC95557C44846121CD6072E2776D9 /* CryptoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76A4AD422A171B027CD9382EE9F3C088 /* CryptoExtensions.swift */; }; + CA10BA461F581A943B1511A2D1F1B9A6 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B738DB5B488759B200DE7109430D3708 /* PromiseKit-dummy.m */; }; + CB50E970EBCEF35611DCC72D4FF5BF9F /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = C01A35536C1A25D92FDAD75FE546D05A /* GCD.swift */; }; + CDF215A1833034C375529C47FDA198E7 /* IBAN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D30B86D55FF6D988C14645E212A03B0 /* IBAN.swift */; }; + CE68AD6293AC6F68B1F6ABC6DEA179C4 /* Web3+Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08EBA89E4EF087F03A6A6C3CA2CB4C91 /* Web3+Contract.swift */; }; + CEDB5701D3AC439049E58FA13B7560FB /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = DBEAC2574E1726C133526EDE33F11EDF /* ecdsa.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CF36999F88767E58D880A851A15E4828 /* Web3+ERC888.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DEB69606E93A93B181961FAF6BAB02C /* Web3+ERC888.swift */; }; + CF7A18404C02DBD6FF090EEB0EC2C93F /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A7E1A019FA794592EDC36801071AC1 /* Array+Extension.swift */; }; + D06814FD38B68AB52A523E3B7190A64C /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EAF69FDF2A763839F4F67A787AA0401 /* UInt128.swift */; }; + D08C645DE5798D5D92BF0614565E3876 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96C333B968D10726F7F27F0080B544C7 /* Floating Point Conversion.swift */; }; + D1240F566CB496AAD86F2CC24FD69C52 /* SwiftRLP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C97F6AB82A0E60079063541F299DBD9F /* SwiftRLP.framework */; }; + D17FD9B35E2F7E2C0E5E721E9A376953 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 4767CE84618D0797956306818F093606 /* field.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D263E933C406C5EDCCAE7616570DBB5D /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = FEE1BA7062D1EC65A45F4E7EF675902F /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D3FFAE0857B91F48E5E93FA91C726EC9 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = F662D5A0A16E6C9DEACA3767A9836AD5 /* BatchedCollection.swift */; }; + D4117503FEE83DE0D129B52CAAEBED30 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 91F66BBB0A278B91532A69BFAEB7BC5B /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D41541CA4F1BF0201CDD88E38DD92D73 /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF0D960A41C502FD66DC06982600219 /* secp256k1.swift */; }; + D418E86F90AAF0BD9F8628CF6464498E /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 97942B9490EAB38F1D44476AAB2C757C /* NSURLSession+AnyPromise.m */; }; + D48C7DA0E6ABE9E22822D44224FAECDA /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C762DF6F4DCC7075D5A20D509892CAD8 /* Subtraction.swift */; }; + D7221CA5FB4063E482CBA9E1E13A87B0 /* Web3+ERC1633.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A3C6B43595B2DF2B5C879521268C07 /* Web3+ERC1633.swift */; }; + D7BC11A992841B33082645731FA82F00 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61DF0D0D9F38CD7E0C4634AE40C1E3D8 /* Bitwise Ops.swift */; }; + D7F9C513A7C37BFBEF8BE52E63FE959B /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D35B316D7BFF89AD8711ECBF42C687A8 /* StreamDecryptor.swift */; }; + D93F71A9CE86B0EF391EACF57400365F /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = A812B34BD625FF46F7F8CEFD87A9853B /* Rabbit.swift */; }; + D97213DBB204987067FB39F63E40F01D /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C2605D90A3DDC2EAEC512FE68E727F /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D9AA6F1CDDACA23B02C06B73C49BA20E /* SwiftRLP-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B93BFDD3FE393838BF136DC96D3AA25F /* SwiftRLP-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA060CDBF5F9B0BA6A66210EEF36282A /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B943A8657BFAF48E9F2F4F1E3E2F543 /* AEADChaCha20Poly1305.swift */; }; + DA1D6B455886CCAC2F9A217AD2273664 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18E2E477B483D30C6674733417033C16 /* RLP.swift */; }; + DBB0EB80D3E57B885DD59E5C6A6C3D6E /* ContractProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF379C6E7234555DCD350A39886DA3CD /* ContractProtocol.swift */; }; + DC91F1E88800D0357BE578EC44265B16 /* Promise+Web3+Personal+UnlockAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77292C272A0C8D55C6DED90E0935DAE /* Promise+Web3+Personal+UnlockAccount.swift */; }; + DD76E0A5EC2D5E4F521A2928B40CAE89 /* Web3+ReadingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFA68B2E611CDB2576D8CEFC3394A39A /* Web3+ReadingTransaction.swift */; }; + DD787B75B55A0233F6382819D2376526 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111E62908255FA628399B6D0A60BD4FD /* Array+Foundation.swift */; }; + DDC2A4FB1026D94A53ED10C11FCD2BFB /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 151E204DA89E40BBC626666BDFD8086E /* PromiseKit.framework */; }; + DDFEA70C9428718B1CE189FF5E183107 /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B36AF3B04F90E0A8066962CC4C70B77C /* scratch_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DF9C0E714E218A0245845F9219CDDCD9 /* ABIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97CFD9093CD5433F30DC536102C9FB69 /* ABIExtensions.swift */; }; + DFB3B8D2D7608562C552668739817B53 /* TransactionSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F0F6B3F667E6C4B9AE1EFA39495CF82 /* TransactionSigner.swift */; }; + DFB53C326805859F4437E5C1253B7BC9 /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = F37EB3E2ED86D20827342533B53E287E /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DFB7C270FEF05B5C82BDF509780CEEED /* Web3+ERC777.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0AEC7065DC7A0F8148F2CD5ECC07A4A /* Web3+ERC777.swift */; }; + E0761F90DCE2772328A29F60F2A09487 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 57FDE2B6D6AC65BD61440714697AB0E2 /* lax_der_parsing.c */; }; + E22F33B88AE57C602515A2154EB1AB1A /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 57E1508B3AE78143C99D09B1910F7471 /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E2D92A1070C0F01039E9778C2167862C /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ECD88A7B6B6E3F25850F1957891DB6A8 /* main_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E2DDA02098EA48EBEA7011294D1C8E8D /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 557BBD78923448CCB17512968E336941 /* BigInt.swift */; }; + E3F4228EC93BA5A2A532C5C2008345EC /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB99C65DF248DDC1FCE31D03A2A7A186 /* CryptoSwift.framework */; }; + E455C18FE76D1EADCFA4C82C54BFB7EA /* Promise+Web3+Personal+Sign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5679352EE122A11E4785A35859961991 /* Promise+Web3+Personal+Sign.swift */; }; + E7053730E7E35E480920F0BE0503F623 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 207FF811F09993FB365AA707E41DDA3A /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E70631A32FDF893A7E48A74F0F431DED /* Web3+ERC820.swift in Sources */ = {isa = PBXBuildFile; fileRef = C37A91FABB0A2D51C28C52544407316C /* Web3+ERC820.swift */; }; + E80E4D1C933D35B0CE7CCB4458E93168 /* Starscream-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FD0D7AC5B9F0A11F3025F221B27D4CD /* Starscream-dummy.m */; }; + E90CE00037E376AA2B7C4B351050D608 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13E83CB052BB69E8C74EED6CE4C2B455 /* Promise+Web3+Contract+GetIndexedEvents.swift */; }; + E9238960EDEDF96BC8AC99FC0A490B9F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + EABB5BF30EDD8F749FE99C5B26DEA20B /* Web3+ERC721x.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79A63B98A4F07E0C74D4E4BC2382B303 /* Web3+ERC721x.swift */; }; + EB68D0EF4BC2841C5D20C8445057764B /* NativeTypesEncoding+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACF881D7ACCDDEC84571B364FE2DE330 /* NativeTypesEncoding+Extensions.swift */; }; + ECD4E3627667FD78779E203E96891BA9 /* Promise+Web3+Eth+Call.swift in Sources */ = {isa = PBXBuildFile; fileRef = 816CB1183D2BCC0E337394681C454A1A /* Promise+Web3+Eth+Call.swift */; }; + EDDC89B2192EE2CDFD1026AA619C5E8E /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1440078DEBCEF6039942D4CD156CA836 /* AnyPromise.swift */; }; + EF4B2B056B0ED49BCE895FA9B4F1F489 /* EthereumAddress.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B2684334CB4EC706DEEFE0A38DBB245 /* EthereumAddress.framework */; }; + EF4B88EB7EC9D93ADDB35B7DFE95D209 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + EF71B6FDDFA1835F1A2281440847B73C /* EthereumAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = D1FAD9AC3B72D90A0F780A8E523BA66F /* EthereumAddress.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EF95E218732C03C07D96D4FFE73585DA /* Web3+ERC1376.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A9F460475AEDEA9DB33EA317456AF75 /* Web3+ERC1376.swift */; }; + F045D2744594F480F0B14FF669BD868E /* ABIElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = F30094CC8CD0DCE8CC2D2DA45F826500 /* ABIElements.swift */; }; + F0CE1B737A7F6F7F82119388A336A651 /* RIPEMD160+StackOveflow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B6E74607A9082D511E2715DD5CDDFF9 /* RIPEMD160+StackOveflow.swift */; }; + F0F633687DB132D3ED565B7B8F85AB85 /* EIP67Code.swift in Sources */ = {isa = PBXBuildFile; fileRef = 183F80020D6B653C9AA163EB60172784 /* EIP67Code.swift */; }; + F100D79F7E1E90136251A7FF1AF2D53F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */; }; + F1145415BBEB38283572F9DA4B9BFB8C /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA9ED7D68B33753A42A5D0FBDE38D9DB /* Int+Extension.swift */; }; + F20D6430C0FE639406DDB40FBD07D129 /* Pods-web3swiftExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B535269581746ACE9EE89D7EAF64EDE /* Pods-web3swiftExample-dummy.m */; }; + F304CF6124B6E029995272154108E8A3 /* KeystoreManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1FB519BA08E5DAF449CB049583BCC4 /* KeystoreManager.swift */; }; + F3472BA73F530CB665A1514C0FF621C0 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B68DE8715B4DB28D0345AB571602A49 /* eckey.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F37524F31521C9EB8E9061EDBC5ACF84 /* Web3+ERC1643.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381921E142C3DEE404AC4C9B35EA0C24 /* Web3+ERC1643.swift */; }; + F447B143091330B7FA7A247CD99999D1 /* Web3+ERC1410.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0347D10EF04AC96C1463B85A265CF734 /* Web3+ERC1410.swift */; }; + F4628E61A2ABC3A636FE8BB6D34EE976 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACB02E8A6A2D995F7945AC8CD49E4F13 /* Promise+Web3+TxPool.swift */; }; + F47B5775965C082F647279EB6D6FCC20 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BE87089D5CBC2AAE67715CF8FA266E2 /* UInt64+Extension.swift */; }; + F662742AEF81DA5FEFA2D0EB5F48A8A8 /* Web3+ST20.swift in Sources */ = {isa = PBXBuildFile; fileRef = C01D591D5EA7C54D69D417DBB0EAB180 /* Web3+ST20.swift */; }; + F69D4C4B05E881C907E5E7B2CF317E15 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B3E6462EE69737A4DD2A8FF21DD92EAC /* field_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F8F08340D2D4EA06141BC0EE1CA2A993 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 840713AE63950179CDA7E0E0666B3FE8 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F92A6A004C1362B1B3CD4A09A3096F32 /* EthereumTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AECBEDC2B29EB5E4FE7C63BFE1E23F1 /* EthereumTransaction.swift */; }; + F9C6D7E2B609DBEF22EA34A012D20806 /* Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC2D612104EA93DE8FFFC93BE950EE8 /* Web3+TxPool.swift */; }; + FABB78D94F0C5192318CB51780C4D302 /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 307E43F0E39E10852F7614C717AA9E7A /* CBCMAC.swift */; }; + FB2B16D10750275868756D893AA963F2 /* Web3+Methods.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5489296DCD0423E23498087C4538E1DC /* Web3+Methods.swift */; }; + FB4BFC0EB20BDEF04F6EA7D60C961F5E /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = A7568A0402D3158454A85DE3B52149B5 /* num_gmp.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FBDEEF432C313BE1B9FCF019D9FEA473 /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51336AE6E4F580B8D502F100D05AD16F /* Words and Bits.swift */; }; + FD865B83616CC7EDC1055EA790130B66 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF55D43FD52E1A6206514638E5451D8 /* Box.swift */; }; + FDC600BED8EF81C08177600DA0A19256 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F199E06D69BED833699993CE5D46281 /* RandomBytesSequence.swift */; }; + FDCA12327BD093B64B77BE7B60529889 /* Web3+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE33E25BFF2A676DB0EE298D821F88DB /* Web3+Protocols.swift */; }; + FE04F55C7D2ED5CDB4281FF7ABE598E0 /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DD8A29A4D99433BE10EBB9F6E4BC0CC /* firstly.swift */; }; + FE220CC3EE3382E71D54EBDC744650CF /* Web3+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3977F7D70B2A5A1B799637B95F926A56 /* Web3+Instance.swift */; }; + FEB09606B26AF6EAF47160DC666E9AFE /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF28778D0C8FCA2C71AFDEB752FA7843 /* Strideable.swift */; }; + FEBFB203C7DF36216E71B3B6EAD1577E /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 52941199842321BB34B3D44C34F6E81B /* lax_der_privatekey_parsing.c */; }; + FEFD7E50B1326A10CB57C91E1EDE9E6A /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B6FCABDA33873D95FFEDD062BB38BE /* String+Extension.swift */; }; + FFED60F90F7F8DC33F83F873A1525E0F /* NSRegularExpressionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D8B8F10634699C38F23701092DA45E4 /* NSRegularExpressionExtension.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 078BF1DF3ACB457691AF40DF07987ECE /* PBXContainerItemProxy */ = { + 0F5D14C41927EFF7FB4E7097551E5F79 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 137411A4D3CCDCAE6EE1A79271E0889C; - remoteInfo = BigInt; + remoteGlobalIDString = 3D875D5B2A0B02BF6B6224B9A2A9F7B2; + remoteInfo = SwiftRLP; + }; + 122BDAEC542EB024996342CFEEB0132B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 99364D9FB07EF3FA5DFE1237001805EC; + remoteInfo = web3swift; }; - 0871B58B957319E5803181DB6310C9D9 /* PBXContainerItemProxy */ = { + 1E6B6D61F1650B805E2F9F8A57044F75 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6F5F8CED7C3379A0404E745819F8B311; + remoteGlobalIDString = 99313990C1D76A6D1D017868B6975CC8; remoteInfo = CryptoSwift; }; - 2BB8C2D8D708208AFE67D85DAFD72CC9 /* PBXContainerItemProxy */ = { + 26CC29C9B50A0D777F65972FBF8C0F6B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 888C7AD1D57FC2EBE4CF200F6BD2A842; + remoteGlobalIDString = 6FEC3F0567EB42CC234EFD7117C398D3; remoteInfo = EthereumABI; }; - 39482B44F79B6EE7854EFF1F2D1F3220 /* PBXContainerItemProxy */ = { + 2A2D979C8045D7EFCFADB25184A5AB89 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0ED0B491AE891D6CDC3963787F0E2DB4; - remoteInfo = scrypt; + remoteGlobalIDString = 01FB31BC868580C5272945EF4898FD10; + remoteInfo = EthereumAddress; }; - 49EEDCC34FEB88EEA65615E7A8110C7C /* PBXContainerItemProxy */ = { + 3422ACED8DA39CC9DD001E6A1956BE18 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B7B21C794593341834C7614B423C9C8A; - remoteInfo = SwiftRLP; + remoteGlobalIDString = 99313990C1D76A6D1D017868B6975CC8; + remoteInfo = CryptoSwift; }; - 4D6FC31C764576609CC511FFA544996F /* PBXContainerItemProxy */ = { + 4229A10574F611AD77A5E4BC8E554D6E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = DD6DF1A42DE8BB0017BCCD871EA0F04D; - remoteInfo = PromiseKit; + remoteGlobalIDString = 09DD83B7D075842A3A5105AD410BD38A; + remoteInfo = BigInt; }; - 4E9D74E7CDF6D61C608BA27D99B37C91 /* PBXContainerItemProxy */ = { + 44B5988268A8BE62EFAA336202D452FB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 70B9B02B65110648B14877481CCA7615; - remoteInfo = EthereumAddress; + remoteGlobalIDString = 377DAE4050D766B30C3A484B8525BB35; + remoteInfo = SipHash; }; - 525BA8733B304B49DB740366DDBA734A /* PBXContainerItemProxy */ = { + 455BE2E93DECCA8E125ADBA85B8F340D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 70B9B02B65110648B14877481CCA7615; - remoteInfo = EthereumAddress; + remoteGlobalIDString = 674FDFDEB40835621D833AF8EBA35016; + remoteInfo = secp256k1_swift; }; - 5A28E66F1F6078F3843ED6996137737F /* PBXContainerItemProxy */ = { + 733614E863CD6CBD9390B0396F05B033 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 70B9B02B65110648B14877481CCA7615; - remoteInfo = EthereumAddress; + remoteGlobalIDString = 9B78EE4AF6AE03E79D88886319853FF7; + remoteInfo = Starscream; }; - 5ED7085516CC4C38EC3D8A95CD2F66A6 /* PBXContainerItemProxy */ = { + 7D091C03F5DCD8C1C0B02F60E0250441 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 137411A4D3CCDCAE6EE1A79271E0889C; + remoteGlobalIDString = 09DD83B7D075842A3A5105AD410BD38A; remoteInfo = BigInt; }; - 6E2F65D510C1B1CCAB072F2EA027F15D /* PBXContainerItemProxy */ = { + 8BE5BBECBE186191951B19C8EF3FD50A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 888C7AD1D57FC2EBE4CF200F6BD2A842; + remoteGlobalIDString = 6FEC3F0567EB42CC234EFD7117C398D3; remoteInfo = EthereumABI; }; - 7840D2071B0BD04D24615CAC8745B9A9 /* PBXContainerItemProxy */ = { + 906B69A25DC901A2E16CD1D7B745C087 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 640B979328B6328F6325026CA79A1B22; - remoteInfo = secp256k1_swift; + remoteGlobalIDString = 377DAE4050D766B30C3A484B8525BB35; + remoteInfo = SipHash; }; - 819472C9CA5B12290E4B3D5D1BD88D51 /* PBXContainerItemProxy */ = { + 95CE4774E44D2FA7D98EB81C9ACAD8B0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6F5F8CED7C3379A0404E745819F8B311; + remoteGlobalIDString = 99313990C1D76A6D1D017868B6975CC8; remoteInfo = CryptoSwift; }; - 87FDCF4A0EA92BECA46C016EA459BEAE /* PBXContainerItemProxy */ = { + A20607AB13883955D051476872E52773 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 640B979328B6328F6325026CA79A1B22; - remoteInfo = secp256k1_swift; + remoteGlobalIDString = 01FB31BC868580C5272945EF4898FD10; + remoteInfo = EthereumAddress; }; - 94EDB502D6BC3D651C1D4E9B20E840B5 /* PBXContainerItemProxy */ = { + A612C6E4403F7617B6E4F34785F746C7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6F5F8CED7C3379A0404E745819F8B311; - remoteInfo = CryptoSwift; + remoteGlobalIDString = 01FB31BC868580C5272945EF4898FD10; + remoteInfo = EthereumAddress; }; - 95CE69833B7C10A627F1F97B568336B8 /* PBXContainerItemProxy */ = { + A7501CC72FDF1005747A3B8C8E1A7320 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0ED0B491AE891D6CDC3963787F0E2DB4; - remoteInfo = scrypt; + remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; + remoteInfo = PromiseKit; }; - A1F782D51A5AA0117251A7A9DAA8C25B /* PBXContainerItemProxy */ = { + B05B0B18B47E891D708F146F16F60782 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6385AA5DEB59BDFB6EC695A6F0524DA7; - remoteInfo = web3swift; + remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; + remoteInfo = PromiseKit; }; - BD97544266AEEE50206B558177DB9756 /* PBXContainerItemProxy */ = { + BA87D5437A150000A865A89F17DE4A87 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 137411A4D3CCDCAE6EE1A79271E0889C; + remoteGlobalIDString = 09DD83B7D075842A3A5105AD410BD38A; remoteInfo = BigInt; }; - C5958E9968F8CD1EBAAB778373D586E1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = B7B21C794593341834C7614B423C9C8A; - remoteInfo = SwiftRLP; - }; - C6C17D0086F8D9E70B8AF619657FF2BC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7FF8752D2607B0617A8EA59CB6F52DA7; - remoteInfo = SipHash; - }; - DA96D27179959DC79F99D9EE1AA60AA8 /* PBXContainerItemProxy */ = { + CDA4AC8E5D3E163086DB3940F73E2871 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6F5F8CED7C3379A0404E745819F8B311; - remoteInfo = CryptoSwift; + remoteGlobalIDString = 9B78EE4AF6AE03E79D88886319853FF7; + remoteInfo = Starscream; }; - DBD880B87E9DC4E7563E385D2DCC57EC /* PBXContainerItemProxy */ = { + D14968B7875CD11DDFBF8B7AA745A8DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = DD6DF1A42DE8BB0017BCCD871EA0F04D; - remoteInfo = PromiseKit; + remoteGlobalIDString = 3D875D5B2A0B02BF6B6224B9A2A9F7B2; + remoteInfo = SwiftRLP; }; - DEE978CB09E9ED72BBBC50BF4790740F /* PBXContainerItemProxy */ = { + D8FB5407B91F31E3B5A317F090589F32 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6F5F8CED7C3379A0404E745819F8B311; + remoteGlobalIDString = 99313990C1D76A6D1D017868B6975CC8; remoteInfo = CryptoSwift; }; - E4BE00A03DB6D1CE0B1840D2BC4765C4 /* PBXContainerItemProxy */ = { + DA1507C00D74D3ED04029F48E2D070D2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7FF8752D2607B0617A8EA59CB6F52DA7; - remoteInfo = SipHash; + remoteGlobalIDString = 674FDFDEB40835621D833AF8EBA35016; + remoteInfo = secp256k1_swift; }; - E9E12D4F2CEA31E8E4AE413FDF993C2D /* PBXContainerItemProxy */ = { + E8D2E563769EEAAC6D5992C7F8EF8D9A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 137411A4D3CCDCAE6EE1A79271E0889C; + remoteGlobalIDString = 09DD83B7D075842A3A5105AD410BD38A; remoteInfo = BigInt; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0067E4280866B4569D265E9F8C6294D4 /* UIViewPropertyAnimator+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewPropertyAnimator+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift"; sourceTree = ""; }; - 00E120CDD5DB9769DD2435516A1D4567 /* ABIExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIExtensions.swift; path = EthereumABI/Classes/ABIExtensions.swift; sourceTree = ""; }; - 010F596FBEF9CCC63191ABD3376144DD /* Promise+Web3+Eth+GetTransactionDetails.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetTransactionDetails.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionDetails.swift"; sourceTree = ""; }; - 03604607591154D9EFC0F58517C88BB4 /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; - 03FB5FA9008321DCD209AFD9C2CE3670 /* Web3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Web3.swift; path = web3swift/Web3/Classes/Web3.swift; sourceTree = ""; }; - 04BC19C035A8C39D5226D8BEB0149F0E /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; - 04FF7D42AF8710309C16345FB83ABD5B /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; - 05625082EB748971627BF6E1ABEE72BE /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; - 06016B2B87ACCBAB44FEDBBD9D102DE8 /* libsecp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "libsecp256k1-config.h"; path = "Classes/libsecp256k1-config.h"; sourceTree = ""; }; - 075236A3B5DC60B4370A0CCF672B8AEF /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = Classes/secp256k1/src/num.h; sourceTree = ""; }; - 075602E81E3D61E019C955BD6AE18C7A /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; - 099F776D5862FBF1C32451630511200D /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; - 0A26DC099A8624856C0E02348C24EF20 /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BigInt.modulemap; sourceTree = ""; }; - 0A4B692E5A925A941AA99C0BCA964506 /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; - 0B29CEBEB845EC347B96D7CF8EC1193E /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; - 0BF4714912851ED7D22D2EF0B37D9625 /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; - 0C0E2B8299A8D557266A0BFDE4075564 /* SwiftRLP-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-prefix.pch"; sourceTree = ""; }; - 0D68B54C72B7D5CE7C1E985C3B853442 /* Pods-web3swiftExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftExample.debug.xcconfig"; sourceTree = ""; }; - 0DC0180CECBE311366353C47A894156A /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; - 0DFB8B8BF7DABC99D98F847DEE91FA95 /* secp256k1_swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "secp256k1_swift-Info.plist"; sourceTree = ""; }; - 0E23F15DC6BEBFD7CAA793A040E31531 /* EthereumABI.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EthereumABI.modulemap; sourceTree = ""; }; - 0F31A6E839594AF147029FFDE446D65F /* SipHash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-dummy.m"; sourceTree = ""; }; - 0F64296999AC33A5090DFA571030C3B3 /* EthereumFilterEncodingExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumFilterEncodingExtensions.swift; path = web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift; sourceTree = ""; }; - 0F697DE9A9B9780448371273B4B4986B /* Web3+Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Contract.swift"; path = "web3swift/Web3/Classes/Web3+Contract.swift"; sourceTree = ""; }; - 0FCE2106A870C9CA8289F01F2E005C3A /* EthereumABI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = EthereumABI.framework; path = EthereumABI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1160128225B85906623514D7D7090ECB /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; - 131215941945D5345AF8A047A6629C21 /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; - 1400B4F7ABDE02B5070690E0E3F0F034 /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; - 1523249C10D0B6DDCE2D75CC807474FE /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/CoreImage.framework; sourceTree = DEVELOPER_DIR; }; - 152A06BD6C4ED16E8910C53F87083FE8 /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; - 155CFF09263570C89932D22E5B5D569D /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; - 157ED0FBF8A2E71BFAA26655DA1359CC /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; - 166AE9FC576B1A9469DA3090BD651D48 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; - 1681DF3FE5A4B672E29F13A64A64023E /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; - 168BEA0C8F8B3C8FA1F18A535A7B9160 /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; - 16AC0F8318A1676FBF02362F4595CDA5 /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; - 16B862B079586F6EBC6B4D190AC2686A /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; - 16D7549432B0837431D33DAA92B9633D /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; - 18496389CA5CA7BCFD42408FBE3EFA35 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; - 1860F5FD511E1CDC0321E2D6EBA3AFC5 /* Promise+Web3+Eth+GetBlockByNumber.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetBlockByNumber.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByNumber.swift"; sourceTree = ""; }; - 18C24CF8C724DE2F030E4429AD7EF3B8 /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; - 195F208CF3D7F63BCB562753EBCD8DA2 /* secp256k1_swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = secp256k1_swift.framework; path = secp256k1_swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1A02CE100739858E7B58E0BC830FC666 /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; - 1A1038DC1633B7F9F4C06BE77D4DE0CD /* BIP32HDNode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BIP32HDNode.swift; path = web3swift/KeystoreManager/Classes/BIP32HDNode.swift; sourceTree = ""; }; - 1BCF26ED236D1B8E24321ED226B25DF4 /* BloomFilter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BloomFilter.swift; path = web3swift/Transaction/Classes/BloomFilter.swift; sourceTree = ""; }; - 1CA6616160AC6F13FA7BCA2D9C4BB992 /* web3swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = web3swift.h; path = web3swift/web3swift.h; sourceTree = ""; }; - 1CEB1E0F5569F3E140EB5B421C414467 /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; - 1CF0705033B0A2728CE16D3AF008DD51 /* scrypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scrypt.h; path = scrypt/scrypt.h; sourceTree = ""; }; - 1E3FA1F8BFCCBE4D42BF07BA07CD266D /* secp256k1_swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = secp256k1_swift.modulemap; sourceTree = ""; }; - 1F8DBA32491646170BAF7A1ED104880B /* BufferStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BufferStorage.swift; path = scrypt/scrypt/BufferStorage.swift; sourceTree = ""; }; - 1F8EADC5334750EDCBC7BE9F4D4D5B3F /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; - 1FC700A80452B10ACF64DF1C457425C7 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; - 20F9F737EDFCFEF9830F0F4B621D83E4 /* Promise+Batching.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Batching.swift"; path = "web3swift/Promises/Classes/Promise+Batching.swift"; sourceTree = ""; }; - 212605BDAABCB644B1BE530E4FB54E28 /* Pods-web3swiftExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-web3swiftExample.modulemap"; sourceTree = ""; }; - 22044D50374EB3808D2F5A905DD1D63C /* BigInt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.xcconfig; sourceTree = ""; }; - 229F4D226F1E6B09333978F7A65F9389 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; - 22AB1F2D4F1253D1F55214A8B4A078B5 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; - 22F727E1920C23DF6FA25C828FF37AE0 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; - 24D4D47D06AA22BB74384BAB9BAD40F2 /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; - 25FC19565DA49D793DF9A348F223CB65 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; - 2614F5FD7FA2BFCEC145FF6C4B3A1D56 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; - 26C2B3575B317F9C06CC8F79AFD07293 /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; - 277E6BF4D08FCCC20EF73C9BA37B6AB8 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; - 27A601897D77B2B18E22FA26B5430F5B /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; - 294830F3AC6CB12044834E8F72282F23 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; - 29D1BA04747B640515764C450DA1279D /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; - 2A2FE2AA1ED08312BA552C811B50A0ED /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; - 2A30F7AD0E2CB204A73B0944A1D13857 /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; - 2A6500122B234FA6647C2568B72C2D9F /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; - 2AE7BC021750BDB389FD1880944E68FE /* scrypt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "scrypt-prefix.pch"; sourceTree = ""; }; - 2BFBB3A57DFC4A14798203F7DD419319 /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; - 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 2CEED24514490DF573FDE87A9F9F8971 /* PromiseKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PromiseKit-Info.plist"; sourceTree = ""; }; - 2D47BF61850EFDEED83A76DA6498C213 /* Cimpl.c */ = {isa = PBXFileReference; includeInIndex = 1; name = Cimpl.c; path = scrypt/Cimpl.c; sourceTree = ""; }; - 2D4E60A3BD0A901CAE33DA9F09585890 /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; - 3028289D562E89D58F6AB987E4AA0EDD /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; - 32380EA4D124B8A636BC9118466E6AAD /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; - 331413774F7D7F0757A5F0B9B2DAA4BC /* EIP67Code.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EIP67Code.swift; path = web3swift/Utils/Classes/EIP67Code.swift; sourceTree = ""; }; - 34300D9F450A76F1C0795BAB8BBCE946 /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; - 343E05569A3D9E6C883D808CAC28052F /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; - 354A0764BBE4CFAD623CB810FEC76817 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; - 35A75E22FE221D90EFEAB4998EBFE2C6 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; - 35B6B8F8751FD986339B26820E401B42 /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; - 35FEE3FDEE40F28DDC2613F215AEB8CB /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; - 36F8641D4C44BD3D0E08388287B61EB7 /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; - 3705B10251AF105DFD9C06CAD8BF008B /* RLP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RLP.swift; path = Classes/RLP.swift; sourceTree = ""; }; - 37074DF9E43F92D14CB23B688C72FD89 /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; - 37505D43721EBDF655CBC34F90544D5E /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; - 380373C357903D6101BBC00E60665458 /* Web3+MutatingTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+MutatingTransaction.swift"; path = "web3swift/Web3/Classes/Web3+MutatingTransaction.swift"; sourceTree = ""; }; - 385A9A999974E47DE373D35A9AC29663 /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; - 385D20AD0ACBC7A4B01C25373D9EFAD4 /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; - 388C6DA468CB9B1A2BD750A77262C56F /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; - 3966403CAFDAEF596DC3EBE24F85A758 /* EthereumAddress.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EthereumAddress.modulemap; sourceTree = ""; }; - 3C37C7E9D0EDF73545C404CD099C00A6 /* BigUInt+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BigUInt+Extensions.swift"; path = "web3swift/Convenience/Classes/BigUInt+Extensions.swift"; sourceTree = ""; }; - 3F1D07742B3A7F5A46E2A329DA441284 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; - 3F5A8DB4C575C89D51FB8509B3F37D66 /* BigInt-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "BigInt-Info.plist"; sourceTree = ""; }; - 3F60C33EFDC8C38C9856833234D8A26E /* Pods-web3swiftExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swiftExample-acknowledgements.markdown"; sourceTree = ""; }; - 3F9BFEEC4833708E9B4067DFD84C5DBB /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; - 3FBFE3F22B4E7AE72FCC6A2C5F9B20E8 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; - 4039FF96173F8D1FD541617AFC84F660 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "web3swift/Convenience/Classes/Data+Extension.swift"; sourceTree = ""; }; - 404FC9F4A1E9D404A14FDFD25794F248 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; - 4122BE1E9FD4A604314CE85B4CDFAEBF /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = scrypt/scrypt/Scrypt.swift; sourceTree = ""; }; - 4174025F0AA7FD9B02D3F2F5E4F617BC /* ABITypeParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABITypeParser.swift; path = EthereumABI/Classes/ABITypeParser.swift; sourceTree = ""; }; - 421A57EB83513643E294B2EABE8B0200 /* ABIElements.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIElements.swift; path = EthereumABI/Classes/ABIElements.swift; sourceTree = ""; }; - 42B057F2BE3C7A1BC0A9BED2F4BA8C41 /* SipHash-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SipHash-Info.plist"; sourceTree = ""; }; - 43C85B8AD6FC929A0DD4ED8A7F71D777 /* Web3+TxPool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+TxPool.swift"; path = "web3swift/Web3/Classes/Web3+TxPool.swift"; sourceTree = ""; }; - 44C36C457BDC5A424B73FED2BF2B0CF7 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 45AA16F4A39E2367C4A4059E1314661D /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = Classes/secp256k1/src/eckey.h; sourceTree = ""; }; - 45C266B7095DCF8E4E4847CC708EC1BA /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; - 4621B79FEA77C668B08A9E4B0CF0C7B6 /* scrypt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "scrypt-umbrella.h"; sourceTree = ""; }; - 4673A58E053194AE130B84DD19ADFC40 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; - 46C0D5E07A4C170FDD09AB0EB76EF331 /* Web3+Eventloop.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Eventloop.swift"; path = "web3swift/Web3/Classes/Web3+Eventloop.swift"; sourceTree = ""; }; - 47098DB41878FF379AEBC8644EC53E97 /* SwiftRLP-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftRLP-dummy.m"; sourceTree = ""; }; - 4754D5FD3244548E259E3E0F25D01E84 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = Classes/secp256k1/src/hash.h; sourceTree = ""; }; - 481105AB5C9354EBAAB3E816CFBF3D9A /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; - 482D19E42A30F218E678D351C13B155A /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; - 494227A474FF5A70499FC2D9B78A674E /* EthereumABI-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumABI-prefix.pch"; sourceTree = ""; }; - 4A706CB0950B86EBBB4A53A66D0BB57C /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; - 4B0FD4ABBB0CE03A9B8551B57E7B20F5 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; - 4BC345225A9FFFEDFD6BCCDA6BB4F076 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; - 4CF166364A9E5E97DD45519B5D546ABE /* EventFiltering.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EventFiltering.swift; path = web3swift/Contract/Classes/EventFiltering.swift; sourceTree = ""; }; - 4D7C4589F40A8060A568CB4849358370 /* EthereumAddress-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EthereumAddress-Info.plist"; sourceTree = ""; }; - 4E04CEFD47ECF7B1AA7B9BA50AF1D68E /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; - 4F8FBC6FA4567C651C24DACB88FAA458 /* Promise+Web3+Eth+GetBalance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetBalance.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift"; sourceTree = ""; }; - 4F90EA173730B99F47DB58B7C701FCE6 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; - 50ABF7F2053D09965350B67F7E0E76E2 /* Pods-web3swiftExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftExample.release.xcconfig"; sourceTree = ""; }; - 51B1F68A1905071C4890C6F9B2280237 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; - 525E38091E2E2E782C02FA0EEEDA2179 /* SipHash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SipHash.modulemap; sourceTree = ""; }; - 546F993BFB7CD1EB1D1DF4E918774017 /* web3swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3swift-prefix.pch"; sourceTree = ""; }; - 57DDA8DDDF0407F9774D0CD39E20307B /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; - 5AEAC26BB970A98BAA6CD7B30F5094D2 /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; - 5CADF98FCCC9B29F22C0815C40CFA3B2 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; - 5CB41387E485225E0BC8B079979EEF3D /* Pods-web3swiftExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swiftExample-umbrella.h"; sourceTree = ""; }; - 5DBCD77147B6CFE8E4D75C61EE88C171 /* Web3+HttpProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+HttpProvider.swift"; path = "web3swift/Web3/Classes/Web3+HttpProvider.swift"; sourceTree = ""; }; - 5E005CD6FAFA3B7D23F16DCFEE03883E /* Web3+Personal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Personal.swift"; path = "web3swift/Web3/Classes/Web3+Personal.swift"; sourceTree = ""; }; - 5F5CDE3B4FB757B3F0106FD88431B923 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; - 607E73BBF9CE339CE9237C758D8B09FC /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; - 612041911C9ABF085CC39D4CD9864737 /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; - 617463151A102A6AE3996BBA956F7E7B /* Web3+Options.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Options.swift"; path = "web3swift/Web3/Classes/Web3+Options.swift"; sourceTree = ""; }; - 62B3D5FA72C0FCAE1E2F6158F0F73411 /* CryptoSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "CryptoSwift-Info.plist"; sourceTree = ""; }; - 6376866618A41A278BF5C4477B074CD1 /* secp256k1_swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-umbrella.h"; sourceTree = ""; }; - 63FD588C06FA711CDCC9813DE8AAA0AF /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; - 640FA460736D514832EF0074EDBC3B08 /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; - 645B2C2B288B7EDC7BAAE3C5A2A09E04 /* ABIParsing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIParsing.swift; path = EthereumABI/Classes/ABIParsing.swift; sourceTree = ""; }; - 645D691F588C30A8463CBB40081960A8 /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; - 64E4ADB46AD6A716EBE5FEE6B3F98341 /* RIPEMD160+StackOveflow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "RIPEMD160+StackOveflow.swift"; path = "web3swift/Convenience/Classes/RIPEMD160+StackOveflow.swift"; sourceTree = ""; }; - 66FBB836159737A49CA20283E62CA819 /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; - 681530AB9C692077CCA2B03BF1DDED10 /* BIP32Keystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BIP32Keystore.swift; path = web3swift/KeystoreManager/Classes/BIP32Keystore.swift; sourceTree = ""; }; - 68623D000FFCEB2CC7E1017DE7B6EAAB /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; - 68E6E31894426B0E48756676D9FEA4D8 /* scrypt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = scrypt.framework; path = scrypt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 68FBA8773B17FF0BE969F589278D0761 /* Web3+Instance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Instance.swift"; path = "web3swift/Web3/Classes/Web3+Instance.swift"; sourceTree = ""; }; - 693AFA81068283C937D0CA94D38E4722 /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; - 69A7034547608D113E9F306249220251 /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = Classes/secp256k1/src/field.h; sourceTree = ""; }; - 6B3AACA619772B384FE61866B88EA981 /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; - 6C47EE1AA0C0CE661EBC27D485F20EA3 /* SwiftRLP-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-umbrella.h"; sourceTree = ""; }; - 6C63E5B7E9EA6F822D6C2F402AAC2856 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6C7A9472FF71EC33BE7131124C53835E /* Cimpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Cimpl.h; path = scrypt/Cimpl.h; sourceTree = ""; }; - 6CCF7466D93DF6DD36039CF7787829EA /* scrypt-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "scrypt-Info.plist"; sourceTree = ""; }; - 6D616168A7A23B7AB1995D8FCE9E3C53 /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; - 6E2D8D233951D90BE212C1683EDBE096 /* Promise+Web3+Eth+SendRawTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+SendRawTransaction.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift"; sourceTree = ""; }; - 6E507073C6A899B5150C313DA3E1E7FF /* Web3+Eth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Eth.swift"; path = "web3swift/Web3/Classes/Web3+Eth.swift"; sourceTree = ""; }; - 712C8CFFF313A75DD19030E239230234 /* Salsa.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Salsa.swift; path = scrypt/scrypt/Salsa.swift; sourceTree = ""; }; - 71B0B58F78D56703F9250DC12E414AD7 /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; - 721C4F03AEEF9F7B6768DD8E1133971D /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; - 724C44BB8A759DE7BA8C45425E26F27A /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; - 727727B1D330C3E96EEC5855430FB9E5 /* Promise+Web3+Personal+CreateAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Personal+CreateAccount.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift"; sourceTree = ""; }; - 72A31D2A6C2335199394826F5AB60411 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7411A68C8F8AC8841EA5B8E91256B11E /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; - 74569BCFAE1C489C9D0FE3248C5CED66 /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; - 7471D4ED5465C42EB4CEE0034421F62D /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; - 77783A545C644FB0696DAD1722E5944D /* EthereumAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumAddress.h; path = EthereumAddress/EthereumAddress.h; sourceTree = ""; }; - 77CA60485E13EAE74EE80CFC886BA2AF /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; - 780BEB0A3FE57594F0858A7EA833EC1A /* SwiftRLP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftRLP.framework; path = SwiftRLP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7892B6C936FFDF8FFBBA425C3F07ACE5 /* Web3swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Web3swift.framework; path = web3swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 79C644C44159127870FD19B2BECB6C9C /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; - 79CBDB796FB0F17282181E75EDA52E42 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; - 79E721B30BBA223BA90A171B31127B5A /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; - 7B19C8291B81ECFBA8C6A57213ADA700 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7B50F465279A418BE82FCA4EBD2177CB /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; - 7B5D413D46DFC82B6CBCBB8C5DE7CAFB /* Promise+Web3+Eth+EstimateGas.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+EstimateGas.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift"; sourceTree = ""; }; - 7C4C422A86A1DAE9DFC19D7BB256B774 /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; - 7CC86CBFE859D6D9E92CE62268D0C8BB /* BIP39+WordLists.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BIP39+WordLists.swift"; path = "web3swift/KeystoreManager/Classes/BIP39+WordLists.swift"; sourceTree = ""; }; - 7DEACF2F1C7BBF71EA318C326FC4FA52 /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; - 7E28680C25D59F4AB8FD5D60B2209576 /* secp256k1_swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1_swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8075D0204E7F5BE1CEA87D03F0556108 /* Promise+Web3+Personal+Sign.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Personal+Sign.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift"; sourceTree = ""; }; - 810C0B92B1AE41809192BF5012A4A523 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; - 8117AC67014669B1DCFA347AA29688C0 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; - 82D6B4BC9796460A18553C2F38C8AEE1 /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; - 82E1460DA79F21EF0A89758352102AA3 /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; - 87C916A767731ADE1518E52E1B6D032F /* Pods_web3swiftExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3swiftExample.framework; path = "Pods-web3swiftExample.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 87DC9E0219AEBCFD0C11561CB1F75C69 /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; - 886FFD1EB7FAC82F55796B76AF70F059 /* SipHash-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-umbrella.h"; sourceTree = ""; }; - 887360628FC3B77442F4026B0B7A51CD /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; - 88C864BCF6B7DF8F59711FB0F71F60BF /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; - 893235EAB21791B8848761F81F0B2A56 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 89BFDBCFBC87AB9A6017F91C16B27016 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; - 8A274CAE3C49CDADD2C8EDD0B6A2D5EC /* TransactionSigner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransactionSigner.swift; path = web3swift/Transaction/Classes/TransactionSigner.swift; sourceTree = ""; }; - 8A8DFF2DF324A4D832DD8653C502500D /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; - 8B27CD8CF6389981C93F9C70BB79806C /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; - 8B77A44FBD3FAC28057C1887CC92B27D /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; - 8C65590568B033C2CC9803F32A614CEA /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; - 8CAF5D39045C811128307EAFD468C89B /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; - 8DCCE88C733379B0F9674C1D490BB9A6 /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; - 8DD93FFA0B424475376B46830EEF26BF /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; - 8E2604B78547CAD1266D726FEE58D2C5 /* Promise+Web3+TxPool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+TxPool.swift"; path = "web3swift/Promises/Classes/Promise+Web3+TxPool.swift"; sourceTree = ""; }; - 8E47F8688C9AC60F086CAFF777392523 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; - 8F7AB407FF50CC1C82BC47E27132E3F0 /* Web3+Methods.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Methods.swift"; path = "web3swift/Web3/Classes/Web3+Methods.swift"; sourceTree = ""; }; - 900BF76676BA8D9C9EE025EFBFF7DB36 /* web3swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = web3swift.xcconfig; sourceTree = ""; }; - 905EF6316653669512380D6206D3F8DE /* Promise+Web3+Eth+GetBlockNumber.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetBlockNumber.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockNumber.swift"; sourceTree = ""; }; - 90DCB2D73690221D1C386B46FF12ACD8 /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; - 912562705A9D693EE4E79FC65116D991 /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; - 91C4C863E4EB75ABB3E8474227D40A73 /* EthereumContract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumContract.swift; path = web3swift/Contract/Classes/EthereumContract.swift; sourceTree = ""; }; - 92E84CE689EC1CA76E264E5261761179 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SipHash.framework; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 932B2C4CD9556E6318A094CDEA2E0E13 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = Classes/secp256k1/src/scalar.h; sourceTree = ""; }; - 93F9F961FF5E739D6A27BAE1B6B84255 /* IBAN.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IBAN.swift; path = web3swift/KeystoreManager/Classes/IBAN.swift; sourceTree = ""; }; - 941616C02C90CB37792EE5D074B65DA4 /* EthereumAddress.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = EthereumAddress.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 94A37DAF9BE9D2E3331448A566C065CE /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; - 974A7BFE8E92E050D2FF9124AA7DBCC9 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; - 97FD3BB1D4FDE3CB8C92B9757CADD731 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; - 9833899028708E6BF26F6D1610FE1997 /* Web3+EventParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+EventParser.swift"; path = "web3swift/Web3/Classes/Web3+EventParser.swift"; sourceTree = ""; }; - 98FDE7A709821277AE5CCEFE2CF7D0B4 /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; - 9AFC7ACBD0ADDDB3FA2271112BED97D2 /* web3swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "web3swift-Info.plist"; sourceTree = ""; }; - 9B3438A6ED71C95FBB9BB471E36AFE4D /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; - 9BC3E604A7828F857DEFB8E5A4792673 /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; - 9D67481EE660CC4427780A510CDB6254 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; - 9DBC29B166EFED583208F516850EA2A2 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; - 9E1A060CECDF25684D85667577DBA798 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; - 9E7B0F55D684C65453D559D9B4BDC75A /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "web3swift/Convenience/Classes/String+Extension.swift"; sourceTree = ""; }; - 9E8AA6274AA01FA7275884BBF0D6F55D /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; - 9F82B4DF8F6B62E706B8BDDEB0749787 /* secp256k1_swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1_swift.xcconfig; sourceTree = ""; }; - A15E042C8396D13ADB12383453C3B15C /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; - A1838E8D409817D754EDF58FCF91BFCB /* Promise+Web3+Personal+UnlockAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Personal+UnlockAccount.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift"; sourceTree = ""; }; - A19C447D7BD236EECA99DBCF8894565F /* SipHash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-prefix.pch"; sourceTree = ""; }; - A1A7DE903866EFAB229ECC3D1346434B /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CryptoSwift.modulemap; sourceTree = ""; }; - A21F7A460F24CED1DC6B614AF917C234 /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; - A222803A5470C0EA36B7E5CB379AA730 /* Pods-web3swiftExample-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swiftExample-Info.plist"; sourceTree = ""; }; - A29F00A814D897C1BE5AE6DE5E89C998 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = EthereumAddress/Classes/Extensions.swift; sourceTree = ""; }; - A35C0ED9C1391857C58C0CF40B765953 /* Web3+Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Utils.swift"; path = "web3swift/Web3/Classes/Web3+Utils.swift"; sourceTree = ""; }; - A3D1675AC5880CADBC5A85BEEA25FEA6 /* SwiftRLP-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftRLP-Info.plist"; sourceTree = ""; }; - A3E1DF0961FF3DA091383DEC4B479CD4 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; - A563044196C737C050B34DF39F82E85F /* ABIEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIEncoding.swift; path = EthereumABI/Classes/ABIEncoding.swift; sourceTree = ""; }; - A5A3BA2300413041BDAD20538CC2A0CC /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A82F53B0EA3D0D57AFD5CD4C318D0647 /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; - A8EA98CA2EC2343E64F97FE62866F72B /* ComparisonExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ComparisonExtensions.swift; path = web3swift/Contract/Classes/ComparisonExtensions.swift; sourceTree = ""; }; - A91B7CF43DB5A3F74C857AAED6F948BA /* ABIDecoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIDecoding.swift; path = EthereumABI/Classes/ABIDecoding.swift; sourceTree = ""; }; - A9C6FDA4C7AB83C6CB50D21313F5540F /* ContractProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContractProtocol.swift; path = web3swift/Contract/Classes/ContractProtocol.swift; sourceTree = ""; }; - AA756D6EB06FD36B25464492744519A3 /* EthereumABI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumABI.h; path = EthereumABI/EthereumABI.h; sourceTree = ""; }; - AA7F8881DBA20F9015834FD7A4CF547C /* ABIParameterTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIParameterTypes.swift; path = EthereumABI/Classes/ABIParameterTypes.swift; sourceTree = ""; }; - AA9960DB9976FF183310557C55A532A0 /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; - AADCA6CCD158303369C205F70D9E4590 /* KeystoreV3JSONStructure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeystoreV3JSONStructure.swift; path = web3swift/KeystoreManager/Classes/KeystoreV3JSONStructure.swift; sourceTree = ""; }; - ABA0BB0844791492402D5AB66E61BB24 /* web3swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3swift-umbrella.h"; sourceTree = ""; }; - ABEE70BA5A5BC35C34D6C5DA8EB13409 /* Web3+Infura.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Infura.swift"; path = "web3swift/Web3/Classes/Web3+Infura.swift"; sourceTree = ""; }; - ACCA271C75D4B21ED35646A5A4731E5E /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; - ACEACA1521FDFD79ABA9485C777E5887 /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; - AD42971B0221AEDB96DC65F82F3CC2DD /* EthereumAddress-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-prefix.pch"; sourceTree = ""; }; - ADD0134957F750B96160913F9E4240C6 /* scrypt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = scrypt.modulemap; sourceTree = ""; }; - AE647B348F1A393A971238BA674A6485 /* Web3+ReadingTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ReadingTransaction.swift"; path = "web3swift/Web3/Classes/Web3+ReadingTransaction.swift"; sourceTree = ""; }; - AF16F679ECE9C4841106CD599F60C4E2 /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; - AF2F5DCD8B1BC4533ADECDBCF836DB84 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; - B1079CE813B6ADE402DA1A75AC3BEF4C /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B109DA379FA9ECABADD3EE3B80DE29B8 /* Dictionary+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Dictionary+Extension.swift"; path = "web3swift/Convenience/Classes/Dictionary+Extension.swift"; sourceTree = ""; }; - B1E7E3D26AF128FB9F5B65F2975134E4 /* NSRegularExpressionExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSRegularExpressionExtension.swift; path = web3swift/Convenience/Classes/NSRegularExpressionExtension.swift; sourceTree = ""; }; - B2ACAB499A9507E7F5D0105E4A0D9769 /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = Classes/secp256k1/src/group.h; sourceTree = ""; }; - B2B058F1081CD1680F4F90724970E88A /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; - B2DC451DC974D25FE7B1FECCA9C6EF51 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; - B35498E6C67F20805E9F3004C2F64431 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; - B36AB396275697EEE1A5B13BA8A38FE3 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - B4C09212026736ACF8C3588C3DFFFBAC /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; - B4D9F2707B320173226689A2ED924509 /* Promise+HttpProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+HttpProvider.swift"; path = "web3swift/Promises/Classes/Promise+HttpProvider.swift"; sourceTree = ""; }; - B5659C3AB77D7D5B8A5D896D5D8A6CA6 /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; - B575CEB1C724F85E4A1857AA0042309A /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; - B58E7023F7E6C8655D6D9028C7AF2698 /* EthereumABI-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumABI-dummy.m"; sourceTree = ""; }; - B6C8DFD047D7C6E855F9CF2F1A3AD7B2 /* secp256k1_swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_swift-dummy.m"; sourceTree = ""; }; - B72048F832A9C75C2A81C9CBC769CD8D /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = Classes/secp256k1/src/scratch.h; sourceTree = ""; }; - B841E74E11C4190F2742A482D1624F6F /* EthereumAddress-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumAddress-dummy.m"; sourceTree = ""; }; - B93028ED0430293C54D4CC1E7348092E /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; - B973550AEC743886DEFC6C426DE82DAB /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; - B9E1EEF85DD107F933904E8D4BACCF31 /* EthereumABI-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EthereumABI-Info.plist"; sourceTree = ""; }; - BAF13C2624A2802FFFD9EC2F84F2A37F /* scrypt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = scrypt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BB48EE8796E94C776DE21E16EC425E02 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; - BB666C41E45C6ABAB0192295B1ECAC7E /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; - BC202ECB6EBC87A3FF623F01851811DB /* Web3+Protocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Protocols.swift"; path = "web3swift/Web3/Classes/Web3+Protocols.swift"; sourceTree = ""; }; - BCF8AF858508A3EC73D766B1CF48098F /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; - BD07049E8559AB824237ADD96BD4AC9B /* EthereumAddress-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-umbrella.h"; sourceTree = ""; }; - BD1EAA1F2E44F11F5F6032A518194EC4 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; - BE86F8153D27F10505EBD7D9EE3DC397 /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; - BFF0D31D5922EBAD0370E98046E7CC48 /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; - C0315A68D7F2B7AACA7AD8A42A20A8F3 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - C07DC3D70012BD62BDE7B7032EE7A09E /* Promise+Web3+Eth+GetAccounts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetAccounts.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift"; sourceTree = ""; }; - C0A645643D765879996A0FEFEB17AEB2 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; - C155FBFE5C0783AAC41449CB2DC87E51 /* scrypt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = scrypt.xcconfig; sourceTree = ""; }; - C2F73E4913951241E69AB369E29AA841 /* EthereumABI-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumABI-umbrella.h"; sourceTree = ""; }; - C3E5F4E53C7409FF85C72B92885F1280 /* EthereumAddress.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EthereumAddress.xcconfig; sourceTree = ""; }; - C4BEA212C4B71400038EE33CE9319F63 /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; - C5A89E2E2F70E548530DA60AF935479A /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; - C5CC3933EB505F78FB90467B4EFA6203 /* Promise+Web3+Contract+GetIndexedEvents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Contract+GetIndexedEvents.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Contract+GetIndexedEvents.swift"; sourceTree = ""; }; - C613070ACCF0136D2C14651C688498FF /* EthereumTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumTransaction.swift; path = web3swift/Transaction/Classes/EthereumTransaction.swift; sourceTree = ""; }; - C669F6C727F3A19F28202283CAF3CBD6 /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; - C6954609CD039F4F09E75EBC79203A7B /* BIP32KeystoreJSONStructure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BIP32KeystoreJSONStructure.swift; path = web3swift/KeystoreManager/Classes/BIP32KeystoreJSONStructure.swift; sourceTree = ""; }; - C71613C4CE6D47BE330CC73E165FEDC6 /* SwiftRLP.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftRLP.xcconfig; sourceTree = ""; }; - C7BA3CDDCDFEFD9BED027AD46F60FAC0 /* SwiftRLP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftRLP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C870B1A3D456FD4314DD4C0607A42610 /* SipHash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SipHash.xcconfig; sourceTree = ""; }; - C8F50F7F0D2F6591B93604E8BB87992A /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; - C9430EC53743B45700079032E4A105EC /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; - CB6ECCB5CD4592A97A0350BE32E726B5 /* EthereumKeystoreV3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumKeystoreV3.swift; path = web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift; sourceTree = ""; }; - CC9030EBE40E463BE51970F190211BDB /* Web3+JSONRPC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+JSONRPC.swift"; path = "web3swift/Web3/Classes/Web3+JSONRPC.swift"; sourceTree = ""; }; - CCC1EA2773146F4324EF5ED0B3A3EFE0 /* Promise+Web3+Eth+GetGasPrice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetGasPrice.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetGasPrice.swift"; sourceTree = ""; }; - CD3F88A45DE0134E5C0FCE9C79186C9F /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; - CD643FEB508293D31031F06D61BFEDC4 /* Promise+Web3+Eth+GetBlockByHash.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetBlockByHash.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByHash.swift"; sourceTree = ""; }; - CD71B2AA6261C81D5ABF5F0265397A1C /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; - D1E952E16B5F2C98AD684EBCDE120FB1 /* Base58.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Base58.swift; path = web3swift/Convenience/Classes/Base58.swift; sourceTree = ""; }; - D25C0FEDAE45115E5198FD4CD0052A48 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; - D31BE63B1625607EFBF7B6C4BD62A81F /* scrypt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "scrypt-dummy.m"; sourceTree = ""; }; - D35A4906E915E02BCCA9912DBD2D26C9 /* NativeTypesEncoding+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NativeTypesEncoding+Extensions.swift"; path = "web3swift/Convenience/Classes/NativeTypesEncoding+Extensions.swift"; sourceTree = ""; }; - D3D1AAC32C041B5712F196A61F5CA39D /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; - D45E969A3BDBBB4ECBB6299F26380AB1 /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; - D587E4DB61D38FF4A1CBEB61903470D9 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; - D78C0BC324759D084A8384179425BF47 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; - D7B39A4A3DA9EBB4C60E868C0C5CF2C2 /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; - D94B4FB5E11583412D053DB2C819F58C /* PlainKeystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PlainKeystore.swift; path = web3swift/KeystoreManager/Classes/PlainKeystore.swift; sourceTree = ""; }; - D97CB39BF8F2C831589612CB2ED71D90 /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; - D9CEEA6FBF391E65A68E60592882B642 /* Web3+Wallet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Wallet.swift"; path = "web3swift/HookedFunctions/Classes/Web3+Wallet.swift"; sourceTree = ""; }; - D9EC47F44C823E1171CF73606A494D29 /* KeystoreManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeystoreManager.swift; path = web3swift/KeystoreManager/Classes/KeystoreManager.swift; sourceTree = ""; }; - DA422749FB6CE4DA61C615258DDD6B8B /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; - DA539D1F3176FABFF9035EC2FDFD30B4 /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; - DA68C188563902BBADBF5288A07FA056 /* Pods-web3swiftExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swiftExample-frameworks.sh"; sourceTree = ""; }; - DB40B5423FA265392DE07B1A21090637 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; - DB7709D38F697152E97ECE038ACBA80E /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; - DBA7F751A89D1E1C5D62E2BADD1420C4 /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; - DBE9BF31616883FEBAE74AC685A421E1 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - DC529C712D847E1520FC99E66853D5E2 /* AbstractKeystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AbstractKeystore.swift; path = web3swift/KeystoreManager/Classes/AbstractKeystore.swift; sourceTree = ""; }; - DD4F0D58F76F4D676944EC3DD0AC648D /* secp256k1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = secp256k1.swift; path = Classes/secp256k1.swift; sourceTree = ""; }; - DE20423192DCFD6A61AC3EC0E1210470 /* Promise+Web3+Eth+GetTransactionCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetTransactionCount.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift"; sourceTree = ""; }; - DF5183A837EE103D3ED61CC8E3B718CE /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; - E067ABC95AB5A08F48E2887AC6ECDF59 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "web3swift/Convenience/Classes/Array+Extension.swift"; sourceTree = ""; }; - E0A18E92B2440CE03C08D553EF12E1AA /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; - E0D72FEDC647B6917B3AE77954B91EF9 /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; - E161AA24151D1227B11E7BFC7091272B /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; - E16927F5D553D8A1B33E94ACCADB17A3 /* Promise+Web3+Eth+GetTransactionReceipt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetTransactionReceipt.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionReceipt.swift"; sourceTree = ""; }; - E16B8BF7D2F429329E671B5BE4F1AC8A /* EthereumABI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = EthereumABI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E1DFB901CA995F41CFDED832B5F38D3F /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; - E1F617E29052F2A20A4DAF46197559BF /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; - E37C1C69C98C58ABCDCA9F4B01061D0F /* BIP39.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BIP39.swift; path = web3swift/KeystoreManager/Classes/BIP39.swift; sourceTree = ""; }; - E440C4B74B44A098160068C009BA588B /* Pods-web3swiftExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swiftExample-dummy.m"; sourceTree = ""; }; - E45FD0470EFD84FE77DAB6F17417FD48 /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; - E4F1E867DE919C0E595D36510EEFE1A6 /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; - E6B1FFA44C64B0B540B94FEEE1CD9B0F /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; - E8022C2DF6B86FA23296F8458F4E400B /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; - E87FE10BF7C41955C696DDC801AD6226 /* Pods-web3swiftExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swiftExample-acknowledgements.plist"; sourceTree = ""; }; - E9035FEAF1C6A112A846C1686B6AA6AC /* ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABI.swift; path = EthereumABI/Classes/ABI.swift; sourceTree = ""; }; - E9A23377D2BCFF84DA71D73288B88475 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - E9C42893B8A27DCD6134EC5FC2D07657 /* Promise+Web3+Eth+SendTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+SendTransaction.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift"; sourceTree = ""; }; - EA29F25C6AD9C57F2F030CC8D4401411 /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; - EAD47A57A6C82649BA700C02D205C57E /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; - EEA5EE21242C99256629F5CB60D2DB9B /* secp256k1_swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-prefix.pch"; sourceTree = ""; }; - F14FC9C9FAC7304FBF240BE3CFABC651 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; - F211AC62BA23FDE559ECA2DB16007CB5 /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = Classes/secp256k1/src/util.h; sourceTree = ""; }; - F25ACD34DFF6A5394BF0D9D4CE52C5C3 /* CryptoExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CryptoExtensions.swift; path = web3swift/Convenience/Classes/CryptoExtensions.swift; sourceTree = ""; }; - F2EAAD5F932A97EA7947E900D8C2CC52 /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; - F357548B3DD39378B080646816E6E6E9 /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumAddress.swift; path = EthereumAddress/Classes/EthereumAddress.swift; sourceTree = ""; }; - F3D67EF88FBE3D4B3938095FD5B0EF82 /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; - F40826DF7C345288BFCB50940E3316CF /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; - F52D61D44F96B6B6F0BC62D02E5235F3 /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; - F6BEB7BCD2FEE3A583BF68F7E5275487 /* web3swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = web3swift.modulemap; sourceTree = ""; }; - F6F09A34FF7ACDD387EF421282DCA54F /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; - F6FDF59FF5D7342988E8B93E48F3AADF /* Promise+Web3+Eth+Call.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+Call.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift"; sourceTree = ""; }; - F94161FCBB26A0CF4D7B4792E7CC6394 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; - F9574EEF332F3955B7C581226D05FE23 /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; - FB5D1B477007EA8B27F988C2783A2294 /* Web3+Structures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Structures.swift"; path = "web3swift/Web3/Classes/Web3+Structures.swift"; sourceTree = ""; }; - FBECF12FAA0EF5E875B62B00A7B4DA50 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; - FBFD45FE4B26112E398EA7FD68047322 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; - FC8ECF2C2B981EAF227B97F9A951A7A0 /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; - FCB3C4C3B8E9D105D6C89E3C89F25474 /* web3swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "web3swift-dummy.m"; sourceTree = ""; }; - FCC16B752DB521904FDC01E24FB27FEC /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; - FCF992981B15E8A639208AFD0BC42E16 /* EthereumABI.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EthereumABI.xcconfig; sourceTree = ""; }; - FD7ED36C282A0828EE45325CACB45C56 /* EthereumAddress.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = EthereumAddress.framework; path = EthereumAddress.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FD94AFA068C1AA0B75B12B723463561E /* SwiftRLP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftRLP.h; path = SwiftRLP/SwiftRLP.h; sourceTree = ""; }; - FFE876E58D1EE05160879870CEFC7966 /* SwiftRLP.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftRLP.modulemap; sourceTree = ""; }; + 00AD9F67AA03DBAA91D8B55E8874023D /* BloomFilter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BloomFilter.swift; path = web3swift/Transaction/Classes/BloomFilter.swift; sourceTree = ""; }; + 01128B279E0D9C232AA316F18EA8D83F /* Web3+Eth+Websocket.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Eth+Websocket.swift"; path = "web3swift/Web3/Classes/Web3+Eth+Websocket.swift"; sourceTree = ""; }; + 023FF709B57E86B5145F82B021B235C5 /* EthereumAddress-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-umbrella.h"; sourceTree = ""; }; + 0347D10EF04AC96C1463B85A265CF734 /* Web3+ERC1410.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC1410.swift"; path = "web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift"; sourceTree = ""; }; + 0369A41FE6EC08408FA9CA787CE8EE26 /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; + 037E7B90D8ED1BA75234ED2CD9D6C550 /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; + 03807B2A7B52DD398BBA81C614D9159E /* web3swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "web3swift-dummy.m"; sourceTree = ""; }; + 03A7E1A019FA794592EDC36801071AC1 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; + 03BA18BDDAC0A893C9CA6A589621413A /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 041CC61E3D1010D65B6AC7BDA1106530 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; + 041F9F28F415CCD2D8317C605A040DB7 /* AbstractKeystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AbstractKeystore.swift; path = web3swift/KeystoreManager/Classes/AbstractKeystore.swift; sourceTree = ""; }; + 05D334BF77A83E9911EBABAD390F3EB1 /* PlainKeystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PlainKeystore.swift; path = web3swift/KeystoreManager/Classes/PlainKeystore.swift; sourceTree = ""; }; + 085B496DBB476C7DD1B269E04FCFDA56 /* SwiftRLP-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftRLP-Info.plist"; sourceTree = ""; }; + 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 08EBA89E4EF087F03A6A6C3CA2CB4C91 /* Web3+Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Contract.swift"; path = "web3swift/Web3/Classes/Web3+Contract.swift"; sourceTree = ""; }; + 0A7A55C8706508E1E83AE9750F193C1C /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = Classes/secp256k1/src/scratch.h; sourceTree = ""; }; + 0BC31C87FCB06841CEFFBE945A33999D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 0C48C05239F6ED9936C07B3EC1FD663E /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; + 0CE423A9F6874D5718AEBBC3F10AC3FA /* Pods-web3swiftExample-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swiftExample-Info.plist"; sourceTree = ""; }; + 0D30B86D55FF6D988C14645E212A03B0 /* IBAN.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IBAN.swift; path = web3swift/KeystoreManager/Classes/IBAN.swift; sourceTree = ""; }; + 0D8B8F10634699C38F23701092DA45E4 /* NSRegularExpressionExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSRegularExpressionExtension.swift; path = web3swift/Convenience/Classes/NSRegularExpressionExtension.swift; sourceTree = ""; }; + 0E22005ED4B7A9BACC15853954A2A499 /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; + 0E37F44D3AE0C3799F7FDD44C22BC351 /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; + 0E5771939E550A5BFDF047698B0B381A /* Promise+Web3+Eth+EstimateGas.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+EstimateGas.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift"; sourceTree = ""; }; + 105A61AFAC962D7CD24E3F394396A628 /* Web3+Eth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Eth.swift"; path = "web3swift/Web3/Classes/Web3+Eth.swift"; sourceTree = ""; }; + 110394450127E5CBF8DCCEEC36125A6A /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; + 111828BD2E1392F25A53108D791D926F /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; + 111E62908255FA628399B6D0A60BD4FD /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; + 11209CB934557C390F9C7BEB1FD06896 /* secp256k1_swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1_swift.xcconfig; sourceTree = ""; }; + 11CE75408CB57DDCD17E318DE453D56C /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; + 127CE34FA6ED8F87D1559E289DC81806 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; + 13E83CB052BB69E8C74EED6CE4C2B455 /* Promise+Web3+Contract+GetIndexedEvents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Contract+GetIndexedEvents.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Contract+GetIndexedEvents.swift"; sourceTree = ""; }; + 1440078DEBCEF6039942D4CD156CA836 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; + 14907E9E8F614DA44E2DC8785BC8EEFB /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; + 151E204DA89E40BBC626666BDFD8086E /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 152631B2AC83D0E7DFC3CAE8DB858993 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; + 154FBE294611B511C37A4ED891A2ADD5 /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; + 155AC28C8A507F51439BD380BD4F9EBE /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; + 16A028531890ABAF370C07DECECEFA9A /* Web3+Options.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Options.swift"; path = "web3swift/Web3/Classes/Web3+Options.swift"; sourceTree = ""; }; + 183F80020D6B653C9AA163EB60172784 /* EIP67Code.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EIP67Code.swift; path = web3swift/Utils/Classes/EIP67Code.swift; sourceTree = ""; }; + 185F4D997295129FC3B6DF6540161887 /* SipHash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-dummy.m"; sourceTree = ""; }; + 187A5E15B05A9B147AE7A0F885C7200C /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; + 18E2E477B483D30C6674733417033C16 /* RLP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RLP.swift; path = Classes/RLP.swift; sourceTree = ""; }; + 18E3D910B3B82E797993D474CFC71714 /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; + 194CA9D19F3A81A23D93DCAF5B9BE54A /* EthereumFilterEncodingExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumFilterEncodingExtensions.swift; path = web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift; sourceTree = ""; }; + 1B103F7E3D0E413375E008114901E7F3 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; + 1BE0C6BB35B7338337CC792C8011E8E6 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; + 1BF2884177C800D4D0A4A5F233098468 /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; + 1E4138C2495719AB1B7D0332DFD90EC6 /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; + 207FF811F09993FB365AA707E41DDA3A /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; + 20F0F90A5824FD95E24BA89E99F8AE37 /* SipHash-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SipHash-Info.plist"; sourceTree = ""; }; + 2152BF84C80A93B19DC080C9ACA6AA14 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = Classes/secp256k1/src/hash.h; sourceTree = ""; }; + 217F43A5FE26A9B4AB61005432855F46 /* SwiftRLP.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftRLP.modulemap; sourceTree = ""; }; + 22C5A94118F97EE5942F802F3697FC43 /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; + 249413324A68284771C2F1F1DD246666 /* Web3+BrowserFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+BrowserFunctions.swift"; path = "web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift"; sourceTree = ""; }; + 24C6B95649014607F2915DE3DBEF4E6E /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = Classes/secp256k1/src/num.h; sourceTree = ""; }; + 24FF1E099D5C1CD2C3B4495C02CC3BBE /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; + 25111C441DAC466B26E01891989A1AA9 /* BIP32HDNode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BIP32HDNode.swift; path = web3swift/KeystoreManager/Classes/BIP32HDNode.swift; sourceTree = ""; }; + 25F0C7876CA1DA522A25BD0A93924B8B /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; + 25FD75371B807F2D440F8FBD44115FF7 /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; + 26DF097B4C6E873C96CFB513E5B8EF9D /* ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABI.swift; path = EthereumABI/Classes/ABI.swift; sourceTree = ""; }; + 279C81008196EC06BF97D52FBC72C36A /* Promise+Web3+Eth+GetTransactionCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetTransactionCount.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift"; sourceTree = ""; }; + 297FE35AD5B9C2666558663768FBD269 /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; + 29AFBCBBACB9ED202BE9F76F1811500C /* EthereumABI-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EthereumABI-Info.plist"; sourceTree = ""; }; + 2A3DBFE49993A10768C9E49994A5EB9F /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; + 2A880522AE506B0AF4BE47370B6B79CB /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; + 2ADA92C2BA781EF1D562263ECE0EFB44 /* Promise+Batching.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Batching.swift"; path = "web3swift/Promises/Classes/Promise+Batching.swift"; sourceTree = ""; }; + 2B7903AA9DC0255E5B38B4C7F118AF00 /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; + 2BB9DBF67E5ACD64E567151CCF4C8078 /* EthereumAddress-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-prefix.pch"; sourceTree = ""; }; + 2CAD7B7651257EAA4ADB417492224FD9 /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; + 2D68A0C01D3620A5BEE69C7FEAAB7B4D /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; + 2DF55D43FD52E1A6206514638E5451D8 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; + 2E0D3D128B9B8E9CDA7FDEAA66A6FC3D /* Web3+ERC721.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC721.swift"; path = "web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift"; sourceTree = ""; }; + 2EA3A555CDD6453F5EBDDC83D2282DD4 /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; + 2F0F6B3F667E6C4B9AE1EFA39495CF82 /* TransactionSigner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransactionSigner.swift; path = web3swift/Transaction/Classes/TransactionSigner.swift; sourceTree = ""; }; + 2F3654A5FFACBE11A8A040D32B584DA7 /* SipHash-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-umbrella.h"; sourceTree = ""; }; + 2F8C0D993DCA33A1CACE355EE970D0E2 /* secp256k1_swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_swift-dummy.m"; sourceTree = ""; }; + 2FADC8AA5E66AC91B035868A375827D5 /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; + 307E43F0E39E10852F7614C717AA9E7A /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; + 30C6D398453783EE23669AC2D1D73A59 /* SipHash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SipHash.modulemap; sourceTree = ""; }; + 312324E2886FB061BA10D963FD7A41A1 /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; + 318275089CE5164F855BFDF864084EE7 /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; + 34C952D47C4A429911E1F5A0285A580F /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; + 363C7CAE4A696FB485713F900C50BD8E /* web3swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = web3swift.h; path = web3swift/web3swift.h; sourceTree = ""; }; + 368FB68985DB579B669C42584F1A1F72 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; + 36A3E204EA9CF5A6F646DC4CE948D976 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; + 36D8B3BD95DD5A44165E1966A4E1E9E0 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; + 3725F8D66F7749EDDBE97934290414B3 /* SwiftRLP-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftRLP-dummy.m"; sourceTree = ""; }; + 37C2605D90A3DDC2EAEC512FE68E727F /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; + 380C7EAA6D084E75E133A8BCBCC14D35 /* KeystoreV3JSONStructure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeystoreV3JSONStructure.swift; path = web3swift/KeystoreManager/Classes/KeystoreV3JSONStructure.swift; sourceTree = ""; }; + 381921E142C3DEE404AC4C9B35EA0C24 /* Web3+ERC1643.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC1643.swift"; path = "web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift"; sourceTree = ""; }; + 385538F5EA5F8E7D1A093D1AEB1A8C0C /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; + 38D4E56B5E76F0815DDB23862812AD69 /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; + 396B8E6C99FB3E5DD98D80FB6653B257 /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; + 3977F7D70B2A5A1B799637B95F926A56 /* Web3+Instance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Instance.swift"; path = "web3swift/Web3/Classes/Web3+Instance.swift"; sourceTree = ""; }; + 39ED500D4A66AD511F77C19E3A67B4C8 /* BIP39.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BIP39.swift; path = web3swift/KeystoreManager/Classes/BIP39.swift; sourceTree = ""; }; + 3A17861D5B7ACD7778C33A8118F906C0 /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; + 3A87AC0BF0E81073854E188B84BBDED4 /* BIP39+WordLists.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BIP39+WordLists.swift"; path = "web3swift/KeystoreManager/Classes/BIP39+WordLists.swift"; sourceTree = ""; }; + 3B02B70AF6569F794B325DEF86DE4FCE /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; + 3B68DE8715B4DB28D0345AB571602A49 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = Classes/secp256k1/src/eckey.h; sourceTree = ""; }; + 3B84A6499FA065A0524CE43C0EC5C624 /* ABIDecoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIDecoding.swift; path = EthereumABI/Classes/ABIDecoding.swift; sourceTree = ""; }; + 3BE87089D5CBC2AAE67715CF8FA266E2 /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; + 3E09FC593DD82756F1BB30987FCBA3CF /* Web3+ERC1400.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC1400.swift"; path = "web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift"; sourceTree = ""; }; + 3E2473598287A2AED3A4949F99CE5C99 /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3EE106F99AB9588712126C149FFFCCB6 /* Web3+ERC20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC20.swift"; path = "web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift"; sourceTree = ""; }; + 3F199E06D69BED833699993CE5D46281 /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; + 3FC6398B7A91945F57F6C49E80FDFF3A /* Web3+Structures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Structures.swift"; path = "web3swift/Web3/Classes/Web3+Structures.swift"; sourceTree = ""; }; + 403DC7FCDAAD3AC18F7D19940A4387EF /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; + 405936053125DEA78A495958B5B9927C /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; + 41453B796970559110DF331E26172E95 /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; + 41DFDB56EDBE11E1628DC294255473FC /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumAddress.swift; path = EthereumAddress/Classes/EthereumAddress.swift; sourceTree = ""; }; + 43C23DCEA349F5119D02161DB3A2F248 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 43FCA81048BE1E6EDD10DD5A09AFC71E /* Promise+Web3+Eth+GetTransactionReceipt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetTransactionReceipt.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionReceipt.swift"; sourceTree = ""; }; + 4423633FB237B5BB7AF32A7954919463 /* Promise+Web3+Personal+CreateAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Personal+CreateAccount.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift"; sourceTree = ""; }; + 44C05784A6396962ABADE3CB63C7A925 /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; + 4615763F358BA325ACF973353CD2E5BB /* SwiftRLP-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-prefix.pch"; sourceTree = ""; }; + 461CF0D1D7233ADF3327A55D5C5C6347 /* Web3+Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Utils.swift"; path = "web3swift/Web3/Classes/Web3+Utils.swift"; sourceTree = ""; }; + 46B9866EC0627510630500E8D61406C6 /* web3swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3swift-umbrella.h"; sourceTree = ""; }; + 47453013A4C06295E09A85ABC5DD101E /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; + 4767CE84618D0797956306818F093606 /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = Classes/secp256k1/src/field.h; sourceTree = ""; }; + 495ADF5344211C91FDC965CF5303C592 /* secp256k1_swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "secp256k1_swift-Info.plist"; sourceTree = ""; }; + 4AE49EC095DE1E773A34210ED7C9BDC9 /* Promise+Web3+Eth+GetAccounts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetAccounts.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift"; sourceTree = ""; }; + 4B5645216773F21B1489099DB3EDE72E /* BigInt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.xcconfig; sourceTree = ""; }; + 4C54F0951D60C6F876148B8781CABCCA /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; + 4DD8A29A4D99433BE10EBB9F6E4BC0CC /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; + 4E1FB519BA08E5DAF449CB049583BCC4 /* KeystoreManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeystoreManager.swift; path = web3swift/KeystoreManager/Classes/KeystoreManager.swift; sourceTree = ""; }; + 4F58F8097BCD731DB6AEE7E8D987A611 /* Promise+Web3+Eth+GetTransactionDetails.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetTransactionDetails.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionDetails.swift"; sourceTree = ""; }; + 50A3EF2BAA8640478F2DAF7D0C9A4075 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; + 51199B2789656F7E1BCA7DDBD744EC0B /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; + 51336AE6E4F580B8D502F100D05AD16F /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; + 5143C2B024F1CC2D6A8CD65DCF0CE711 /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; + 51C9DD170C7BBA3B6D3CBF04C54C180E /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; + 52941199842321BB34B3D44C34F6E81B /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; + 52F054DE4FE4614D93C7848BE307E8F5 /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; + 5309AF23566A6EC930189B7F7E9FA755 /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; + 53752B019C358EA03419BF823E501FEA /* Pods-web3swiftExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swiftExample-acknowledgements.markdown"; sourceTree = ""; }; + 53DB5ED1E242022F0EC54EF41F33D167 /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = Classes/secp256k1/src/util.h; sourceTree = ""; }; + 5489296DCD0423E23498087C4538E1DC /* Web3+Methods.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Methods.swift"; path = "web3swift/Web3/Classes/Web3+Methods.swift"; sourceTree = ""; }; + 5489609F31B6309C2F681A604BA8681D /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; + 55770AD6FFFA1595F0BA78E39870A2A6 /* Web3+ERC1594.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC1594.swift"; path = "web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift"; sourceTree = ""; }; + 557BBD78923448CCB17512968E336941 /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; + 55ABBA489DECB9D68B97E652EA223798 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; + 5679352EE122A11E4785A35859961991 /* Promise+Web3+Personal+Sign.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Personal+Sign.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift"; sourceTree = ""; }; + 57E1508B3AE78143C99D09B1910F7471 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; + 57FDE2B6D6AC65BD61440714697AB0E2 /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; + 586A2E20A359514DBF452FDD02807493 /* SSLSecurity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLSecurity.swift; path = Sources/Starscream/SSLSecurity.swift; sourceTree = ""; }; + 5AECBEDC2B29EB5E4FE7C63BFE1E23F1 /* EthereumTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumTransaction.swift; path = web3swift/Transaction/Classes/EthereumTransaction.swift; sourceTree = ""; }; + 5B047B9565B4F87320AC4BD2745BD099 /* EthereumABI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = EthereumABI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5B76287A97F1D7DCF1A90139BAECD97E /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; + 5B943A8657BFAF48E9F2F4F1E3E2F543 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; + 5BB11A33D37953982594F0A4DAE1B087 /* EthereumKeystoreV3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumKeystoreV3.swift; path = web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift; sourceTree = ""; }; + 5BFC87E38D1F5804BE355509D4CFC0DF /* Pods-web3swiftExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swiftExample-umbrella.h"; sourceTree = ""; }; + 5C648DB22D16FEC5FFA55F38E73C5ED1 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SipHash.framework; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5CBAE5C7A018C513821FF23A227C3B41 /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; + 5D2DB9499C8C203F2AA7345E283D63F0 /* SipHash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SipHash.xcconfig; sourceTree = ""; }; + 5DE399FA931EB8FF8EBDD439922E9DF0 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; + 610F5B2F64A19723D6767604A8AF660B /* secp256k1_swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = secp256k1_swift.framework; path = secp256k1_swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6117965527D1009FE20A946C6694F6C6 /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; + 612CA839D5B97DA037B60F55543ECA1A /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; + 61DF0D0D9F38CD7E0C4634AE40C1E3D8 /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; + 622F11D4881071566066F35534A37A69 /* EthereumABI-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumABI-dummy.m"; sourceTree = ""; }; + 62E6024723E8B18887F52F234C7FFDE7 /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; + 64D440F54CECE935D3F4ADC427EEE5CA /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; + 65B68BCBEA2A49C214C45E571D3B8784 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; + 6609BC693C2981E22DDA6BC3AFF4C1EE /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; + 67E569605DBBD1754B4C6C4725277729 /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; + 6975A21C72658554DC246ADB90824CB7 /* web3swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "web3swift-Info.plist"; sourceTree = ""; }; + 697EBA7EFCADD90100A87D335D6DF76D /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; + 6A02820FAF7C58526D6827739E4D806B /* WebSocket.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = Sources/Starscream/WebSocket.swift; sourceTree = ""; }; + 6A9F460475AEDEA9DB33EA317456AF75 /* Web3+ERC1376.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC1376.swift"; path = "web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift"; sourceTree = ""; }; + 6AA706569284A0C57DBD0DEB25EA91FE /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; + 6ABCD8D6A83571E5D316165C5C7BAD0F /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; + 6B7804074E220497AF1B780BD219A34E /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Starscream.framework; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6C06FBB9FD8842477EB753D801D3228F /* Web3+JSONRPC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+JSONRPC.swift"; path = "web3swift/Web3/Classes/Web3+JSONRPC.swift"; sourceTree = ""; }; + 6C49F1C9F208C0F7B392CB57B70C7A37 /* Pods-web3swiftExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-web3swiftExample.modulemap"; sourceTree = ""; }; + 6D9F5069A0BD2E4EDDF30740E5A06FAE /* SSLClientCertificate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLClientCertificate.swift; path = Sources/Starscream/SSLClientCertificate.swift; sourceTree = ""; }; + 6EAF69FDF2A763839F4F67A787AA0401 /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; + 6EFC6ED32EFA173BF4707A638FDF43BD /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; + 6FD0D7AC5B9F0A11F3025F221B27D4CD /* Starscream-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Starscream-dummy.m"; sourceTree = ""; }; + 7298E7B1EFB94F71B97BF18841929F2B /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; + 72CD2EF06C8B53FFAAD23C1105AEF940 /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; + 72F0A143D24A413EB5CAA1E356DF797A /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; + 739E8ABFB940FFF4FA5070A4B3C594AD /* EthereumAddress.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EthereumAddress.modulemap; sourceTree = ""; }; + 7520141500C15323EA4BB462348B9564 /* Starscream.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Starscream.xcconfig; sourceTree = ""; }; + 76A4AD422A171B027CD9382EE9F3C088 /* CryptoExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CryptoExtensions.swift; path = web3swift/Convenience/Classes/CryptoExtensions.swift; sourceTree = ""; }; + 794072845D4768298AE01BB6FE482CCC /* EthereumABI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = EthereumABI.framework; path = EthereumABI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 79A63B98A4F07E0C74D4E4BC2382B303 /* Web3+ERC721x.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC721x.swift"; path = "web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift"; sourceTree = ""; }; + 79C61A58686B27952DD069E1ECF7D303 /* SwiftRLP.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftRLP.xcconfig; sourceTree = ""; }; + 7A2AAA080CDE548F7FC9C6472C9117A5 /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; + 7A7DB9D5C92CC227BFE7A019F2C06C88 /* Web3+Personal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Personal.swift"; path = "web3swift/Web3/Classes/Web3+Personal.swift"; sourceTree = ""; }; + 7B6E74607A9082D511E2715DD5CDDFF9 /* RIPEMD160+StackOveflow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "RIPEMD160+StackOveflow.swift"; path = "web3swift/Convenience/Classes/RIPEMD160+StackOveflow.swift"; sourceTree = ""; }; + 7BAA04F2A5B0AFBA2BECB3E7363F3AC2 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; + 7C8AD803BA9C548885C8AAAC9812B73D /* Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Compression.swift; path = Sources/Starscream/Compression.swift; sourceTree = ""; }; + 7D72E154FD99D305BB0B1982450D0344 /* EthereumAddress-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EthereumAddress-Info.plist"; sourceTree = ""; }; + 7DE4D1208163A862D87DFAAB9ED0B6E9 /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; + 7FAC9CA18FBDAACAB22476B23374AB36 /* libsecp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "libsecp256k1-config.h"; path = "Classes/libsecp256k1-config.h"; sourceTree = ""; }; + 8068716961C67C6302F060FA0992DA9C /* BIP32KeystoreJSONStructure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BIP32KeystoreJSONStructure.swift; path = web3swift/KeystoreManager/Classes/BIP32KeystoreJSONStructure.swift; sourceTree = ""; }; + 806B1ECC842DB771A758818B3634535D /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; + 816CB1183D2BCC0E337394681C454A1A /* Promise+Web3+Eth+Call.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+Call.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift"; sourceTree = ""; }; + 81C66B0B08AF5D1C7E50E6C9FA5563D5 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; + 83E56F1D2469FFE3F5381113861A7500 /* EthereumContract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumContract.swift; path = web3swift/Contract/Classes/EthereumContract.swift; sourceTree = ""; }; + 840713AE63950179CDA7E0E0666B3FE8 /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; + 84FD7D5349DECD6F57D3776531439A4E /* Promise+HttpProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+HttpProvider.swift"; path = "web3swift/Promises/Classes/Promise+HttpProvider.swift"; sourceTree = ""; }; + 8589B5FA79D43F7D506021BE3BF49E82 /* secp256k1_swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-umbrella.h"; sourceTree = ""; }; + 8676628BE0FD7AE803FCEDC64DEFBB12 /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CryptoSwift.modulemap; sourceTree = ""; }; + 86C9BD89A449DFB19ADD2B6976A30CC7 /* ABIEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIEncoding.swift; path = EthereumABI/Classes/ABIEncoding.swift; sourceTree = ""; }; + 87601F0E5B299447C7A9C0252EEA9AB7 /* ABIParameterTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIParameterTypes.swift; path = EthereumABI/Classes/ABIParameterTypes.swift; sourceTree = ""; }; + 894AA8563DB203A203012C701CCDCA61 /* EthereumABI.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EthereumABI.modulemap; sourceTree = ""; }; + 897918ACF136C2411B5B66EA3B1F0BAB /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; + 89D17D0DE626A746CE48891A9E26C5A6 /* Web3+Wallet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Wallet.swift"; path = "web3swift/HookedFunctions/Classes/Web3+Wallet.swift"; sourceTree = ""; }; + 89DA7D0608E2C6E4F30C91CB552ADD93 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; + 8A3BEDEE49568F7351847A61B63D3B8A /* web3swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = web3swift.modulemap; sourceTree = ""; }; + 8B2684334CB4EC706DEEFE0A38DBB245 /* EthereumAddress.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = EthereumAddress.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8CF1D32CB9BC81934F1ED3A1A20FB5C7 /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; + 8D722FE65FAFAE40028C720E052F978E /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; + 8DEB69606E93A93B181961FAF6BAB02C /* Web3+ERC888.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC888.swift"; path = "web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift"; sourceTree = ""; }; + 8E0165ACBE7F33E4BFAE66C793746886 /* Pods-web3swiftExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftExample.release.xcconfig"; sourceTree = ""; }; + 905FE140AFE9E2D1D34DFF4DF70B19D0 /* Web3+WebsocketProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+WebsocketProvider.swift"; path = "web3swift/Web3/Classes/Web3+WebsocketProvider.swift"; sourceTree = ""; }; + 90B138E26CE6079A11EBCC7397EFBB95 /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; + 914AA6DCC629CD7BF9E0AB7B0018B373 /* secp256k1_swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = secp256k1_swift.modulemap; sourceTree = ""; }; + 917DD6006F6D77DD4E4F694702AC8476 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; + 91F66BBB0A278B91532A69BFAEB7BC5B /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; + 9236E71B3BC4A82CCCB3A8A7B6B493C4 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; + 94F82F7841D7037DB9711DE738D2F787 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; + 95436BEBA7470F0DDC350E6317D1DBC6 /* Web3+SecurityToken.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+SecurityToken.swift"; path = "web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift"; sourceTree = ""; }; + 96A2B8AA46D939C787EA02A0339E578D /* BigInt-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "BigInt-Info.plist"; sourceTree = ""; }; + 96C2C44054DE32101526E99B9658C89D /* Pods-web3swiftExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swiftExample-frameworks.sh"; sourceTree = ""; }; + 96C333B968D10726F7F27F0080B544C7 /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; + 97942B9490EAB38F1D44476AAB2C757C /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; + 97CFD9093CD5433F30DC536102C9FB69 /* ABIExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIExtensions.swift; path = EthereumABI/Classes/ABIExtensions.swift; sourceTree = ""; }; + 99EC6BF69BACDC179D63343077FB8CC3 /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; + 9A1C2A2926FC74CAF77DBD8323DE0FBE /* secp256k1_swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-prefix.pch"; sourceTree = ""; }; + 9A624EBF9928B501D3FCB7063BE5134A /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; + 9ACEB954A399D989AF78D6DA6229BD4B /* Starscream-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-prefix.pch"; sourceTree = ""; }; + 9B535269581746ACE9EE89D7EAF64EDE /* Pods-web3swiftExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swiftExample-dummy.m"; sourceTree = ""; }; + 9BE885550B5668557EECC8CAAAB18D77 /* Web3+EventParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+EventParser.swift"; path = "web3swift/Web3/Classes/Web3+EventParser.swift"; sourceTree = ""; }; + 9CD313245E3D762D6C0E82E0D8ED78FC /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9D998083FA5CCCF7EBE11B134EB20404 /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; + 9D9DFEE46F96369F7F23945C015338BB /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; + 9EDE959AAC0240C86F4452D57E1D6194 /* Promise+Web3+Eth+GetGasPrice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetGasPrice.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetGasPrice.swift"; sourceTree = ""; }; + 9EE51633337DCE928949C190652FF224 /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; + 9F4296392E9A72F7CE18DB0948F55833 /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BigInt.modulemap; sourceTree = ""; }; + A040A172FFEA67777847EAE37A5F335C /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; + A22FA816BFB7BEB4C5CEEC98FA609841 /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; + A3032ACA182EB8CBEFB6EBAE487AADD1 /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; + A425D221E163EBFEA8B65715D42B4A91 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/CoreImage.framework; sourceTree = DEVELOPER_DIR; }; + A57714BF3D28F84B3282FD4E0DC08067 /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; + A61B4B48C5269A8484FC3715B75AE277 /* Starscream-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Starscream-Info.plist"; sourceTree = ""; }; + A72F0169D086F56E0583F2FC87090068 /* SwiftRLP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftRLP.h; path = SwiftRLP/SwiftRLP.h; sourceTree = ""; }; + A7568A0402D3158454A85DE3B52149B5 /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; + A7E00A5CB0347D5EEF2EE16A1EE7AF79 /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; + A812B34BD625FF46F7F8CEFD87A9853B /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; + A812FBC3A42E16E11ECBFA15D3878CAD /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; + A85B1F9FF37274E35577DB8BC3228DD5 /* Web3swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Web3swift.framework; path = web3swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A9825FE2555E0AC5A75D452770DB4B65 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A98B647033331AC4C08615DB995A615A /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; + A9FC0914E7065E79AD1618473FC13070 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; + AA15A806485AD56785C00F606BF15E41 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AA1D2D03C1B7E7FBB721F21A151C7B36 /* ABITypeParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABITypeParser.swift; path = EthereumABI/Classes/ABITypeParser.swift; sourceTree = ""; }; + AAB7C80AC8C35B50D927596D426125BC /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; + AB3DE4A102C821D85EC63637EABAADBF /* Dictionary+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Dictionary+Extension.swift"; path = "web3swift/Convenience/Classes/Dictionary+Extension.swift"; sourceTree = ""; }; + AC47AF77749D0026E3EF3A401D57144F /* Promise+Web3+Eth+GetBlockByHash.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetBlockByHash.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByHash.swift"; sourceTree = ""; }; + AC4FFA0A353CD7959D1B53C0699E9A49 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; + AC9A8D265F34E698FE7B5B2EB20BCEBF /* EthereumAddress.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = EthereumAddress.framework; path = EthereumAddress.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ACB02E8A6A2D995F7945AC8CD49E4F13 /* Promise+Web3+TxPool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+TxPool.swift"; path = "web3swift/Promises/Classes/Promise+Web3+TxPool.swift"; sourceTree = ""; }; + ACF881D7ACCDDEC84571B364FE2DE330 /* NativeTypesEncoding+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NativeTypesEncoding+Extensions.swift"; path = "web3swift/Convenience/Classes/NativeTypesEncoding+Extensions.swift"; sourceTree = ""; }; + AD4D8F7FF2160E49F85C9A87BA31ED93 /* Pods-web3swiftExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swiftExample-acknowledgements.plist"; sourceTree = ""; }; + AD9094C3262B9A88750EDE5EC8893309 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; + AE990037630914DF9DD1EBF428107663 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; + AEE3975D29B871EB71794A90B9F8308A /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; + B15D33A6EAEE1F68CAB2F9F5AD8C4378 /* Web3+Eventloop.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Eventloop.swift"; path = "web3swift/Web3/Classes/Web3+Eventloop.swift"; sourceTree = ""; }; + B2B9064EC3BE1A9C6EB75E912ED4BB46 /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; + B36AF3B04F90E0A8066962CC4C70B77C /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; + B3E6462EE69737A4DD2A8FF21DD92EAC /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; + B4C2F35038636BD2A176E453D53C5392 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; + B5847C26F200A6C51FD16D43A80B740C /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; + B5A3C6B43595B2DF2B5C879521268C07 /* Web3+ERC1633.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC1633.swift"; path = "web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift"; sourceTree = ""; }; + B6CCA1EEE130F872890BF3BD21E3EF50 /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; + B6F4F23D936E9C244310DC674062B2C8 /* EthereumABI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumABI.h; path = EthereumABI/EthereumABI.h; sourceTree = ""; }; + B738DB5B488759B200DE7109430D3708 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; + B74C432CDEBD12EFB8DA0B74D4C0B08D /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = Classes/secp256k1/src/scalar.h; sourceTree = ""; }; + B8091B2F3E27BF5E3A15457CDA62EEAB /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; + B82C5DE8A785E6269DB003104752AA6B /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; + B85016ADFE09DC9B1E004271C55B8B2A /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; + B930C05EEE398B8731B39BB587F6BAC3 /* Web3+ERC1644.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC1644.swift"; path = "web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift"; sourceTree = ""; }; + B93BFDD3FE393838BF136DC96D3AA25F /* SwiftRLP-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-umbrella.h"; sourceTree = ""; }; + B99A6B6A6FD88742A22B6FD8ABC68799 /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; + BA235879D4DBDA4C65651854023BE0E8 /* Starscream-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-umbrella.h"; sourceTree = ""; }; + BA96EF12CD0380F6329120CFCEC98883 /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; + BA9ED7D68B33753A42A5D0FBDE38D9DB /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; + BB99C65DF248DDC1FCE31D03A2A7A186 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BBE863715A30A04646B3EAC1ABD367DA /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; + BDC01204D56D1E7E53AE7CE1408143AD /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; + BDFEC4814E5117A5F0A48ACF87F69323 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; + BE33E25BFF2A676DB0EE298D821F88DB /* Web3+Protocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+Protocols.swift"; path = "web3swift/Web3/Classes/Web3+Protocols.swift"; sourceTree = ""; }; + C00BF9D4768C430B003D4018E0D09F23 /* SipHash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-prefix.pch"; sourceTree = ""; }; + C01A35536C1A25D92FDAD75FE546D05A /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; + C01D591D5EA7C54D69D417DBB0EAB180 /* Web3+ST20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ST20.swift"; path = "web3swift/PrecompiledContracts/ST20/Web3+ST20.swift"; sourceTree = ""; }; + C027BB8E8CE779B62A5ACD309612C324 /* Promise+Web3+Eth+GetBalance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetBalance.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift"; sourceTree = ""; }; + C11B6001AD77EE83DCB8105F7BD82B9C /* Promise+Web3+Eth+SendRawTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+SendRawTransaction.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift"; sourceTree = ""; }; + C1BF9D584A61B086B24585C72CE51A52 /* Promise+Web3+Eth+SendTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+SendTransaction.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift"; sourceTree = ""; }; + C1ED0CC08B26CA2596B61EFD55B2E74F /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; + C294BB1CF898FEACCA694CE1C2FCA378 /* CryptoSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "CryptoSwift-Info.plist"; sourceTree = ""; }; + C333383AAA8E072BC5B712339F021BE2 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C37A91FABB0A2D51C28C52544407316C /* Web3+ERC820.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC820.swift"; path = "web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift"; sourceTree = ""; }; + C47BA6A1082EC7355BE221F69144578E /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; + C568EB183FBB755447359C38525A008C /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; + C64AC8AA3E75B66A1B1554F954F9C05A /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; + C762DF6F4DCC7075D5A20D509892CAD8 /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; + C77292C272A0C8D55C6DED90E0935DAE /* Promise+Web3+Personal+UnlockAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Personal+UnlockAccount.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift"; sourceTree = ""; }; + C927CFEAD2B7A02878A3629E72FAE9E0 /* Web3+HttpProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+HttpProvider.swift"; path = "web3swift/Web3/Classes/Web3+HttpProvider.swift"; sourceTree = ""; }; + C97F6AB82A0E60079063541F299DBD9F /* SwiftRLP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftRLP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CAF0D960A41C502FD66DC06982600219 /* secp256k1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = secp256k1.swift; path = Classes/secp256k1.swift; sourceTree = ""; }; + CBCDDE9E5C8C4D7CE7707928C6F21FF8 /* SwiftRLP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftRLP.framework; path = SwiftRLP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CBDF0C353A047CE42C219C152C68A1CF /* EthereumABI-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumABI-umbrella.h"; sourceTree = ""; }; + CD154EA3D19C13CA86EC21B415CAB05E /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; + CD7A206E7BC2F6EEEDF54ECE76E60715 /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; + CDBCA4EB75EABAE369BD0A5E42BBBBD6 /* PromiseKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PromiseKit-Info.plist"; sourceTree = ""; }; + CF4179EDA60DF15E84FF7031142B345A /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; + CF7941AF97680548B0BD0C1DD2C544FA /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; + CFC6C386C9A8340C0F9092603654D35D /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = Sources/CryptoSwift/Scrypt.swift; sourceTree = ""; }; + CFED2C714EFDBF8761B657F2379B4993 /* UIViewPropertyAnimator+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewPropertyAnimator+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift"; sourceTree = ""; }; + D1FAD9AC3B72D90A0F780A8E523BA66F /* EthereumAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumAddress.h; path = EthereumAddress/EthereumAddress.h; sourceTree = ""; }; + D2A1A54D7D533D3A7714DCDFC368A9C8 /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; + D2C0222A66151B5B68E982A7761953C1 /* Web3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Web3.swift; path = web3swift/Web3/Classes/Web3.swift; sourceTree = ""; }; + D35B316D7BFF89AD8711ECBF42C687A8 /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; + D3A6B6BBCF87FA0F35636A03EFD3D365 /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; + D441A193362D82ECCA57314CDFB8C8A4 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; + D444D90A5F33EBC7DC0C528387C29E21 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "web3swift/Convenience/Classes/Data+Extension.swift"; sourceTree = ""; }; + D6F3EAF9A21316F32A846121C5A29C5F /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; + D8572B1E5B2DDC7E8EC266A5FB4B7B3E /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; + D8C91CD35036A0608CA6AA2CE00B8C86 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; + D91310BEE9B9CE3ED9A365B16E5A443A /* EthereumABI-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumABI-prefix.pch"; sourceTree = ""; }; + D920DBF4639E6BC5184AF5322C1EF718 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; + DA01EF9685BBDCA64A3561400110661F /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = Classes/secp256k1/src/group.h; sourceTree = ""; }; + DA056E66B02BCFCAB2F667A64DD52323 /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; + DBD43F88971059B766F3A19F87BEFA57 /* Base58.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Base58.swift; path = web3swift/Convenience/Classes/Base58.swift; sourceTree = ""; }; + DBEAC2574E1726C133526EDE33F11EDF /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; + DC6CB21FEEC0C0AB8E1FB1B2A4F1B4A8 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; + DDA7AFCFDD5B6D2CAE89028C203CDFCC /* BIP32Keystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BIP32Keystore.swift; path = web3swift/KeystoreManager/Classes/BIP32Keystore.swift; sourceTree = ""; }; + DDEAD18C061E3D1F667B436202D8F711 /* Web3+MutatingTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+MutatingTransaction.swift"; path = "web3swift/Web3/Classes/Web3+MutatingTransaction.swift"; sourceTree = ""; }; + DFD279F3E8B5C6D5EC1D7E97B1C35EE9 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; + DFEBD29CE5E90435A009304519CA3C67 /* web3swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = web3swift.xcconfig; sourceTree = ""; }; + E06652239DFF119EFF3E81EBD7F8A2EC /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; + E09AB4EF394FD735F6F29BEC0C88016F /* Pods-web3swiftExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftExample.debug.xcconfig"; sourceTree = ""; }; + E36CBD6DA982F652B9E00122F3970967 /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; + E493F524C0CBD60F149396128F96E432 /* Web3+ERC1155.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC1155.swift"; path = "web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift"; sourceTree = ""; }; + E78CAEAA47869AECF36B3846129E2962 /* EthereumABI.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EthereumABI.xcconfig; sourceTree = ""; }; + E7FE5E037A9626EBD430EA40C2697613 /* EventFiltering.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EventFiltering.swift; path = web3swift/Contract/Classes/EventFiltering.swift; sourceTree = ""; }; + E90FBB935144B110815A586CEEB51A0A /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; + EA505320CA18CCC147004CBB5097B049 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; + EB41575E9C6C8175A129B42F2D0E4A19 /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; + EB496234A1CD0207ED440D93CD922589 /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; + ECD88A7B6B6E3F25850F1957891DB6A8 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; + ECFA90A318474969AD8C5D1A2DAD6D0A /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; + EDF60BB5F5D544A9B2BA4857654D2153 /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; + EE700E8BC85FBEC333D170049413CC0E /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; + EE91A3B39D3C21B86D3DCB2A26B599EC /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; + EE9535C4DB976B3816901E33D1B905FA /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = EthereumAddress/Classes/Extensions.swift; sourceTree = ""; }; + EF28778D0C8FCA2C71AFDEB752FA7843 /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; + EF379C6E7234555DCD350A39886DA3CD /* ContractProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContractProtocol.swift; path = web3swift/Contract/Classes/ContractProtocol.swift; sourceTree = ""; }; + EFA68B2E611CDB2576D8CEFC3394A39A /* Web3+ReadingTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ReadingTransaction.swift"; path = "web3swift/Web3/Classes/Web3+ReadingTransaction.swift"; sourceTree = ""; }; + F0AEC7065DC7A0F8148F2CD5ECC07A4A /* Web3+ERC777.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC777.swift"; path = "web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift"; sourceTree = ""; }; + F0B650B4EEC9B0F9E323FE4ADD5DD916 /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; + F149B755513EA2D5853526907167D881 /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; + F1B6FCABDA33873D95FFEDD062BB38BE /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "web3swift/Convenience/Classes/String+Extension.swift"; sourceTree = ""; }; + F1ED44070832AFCF673AD05E77E88921 /* Web3+ERC165.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+ERC165.swift"; path = "web3swift/PrecompiledContracts/ERC165/Web3+ERC165.swift"; sourceTree = ""; }; + F29D6A9677C6B8663CA6E02D8E7C7A0F /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; + F2D27DD2D65C3C0C2C6E8F156D15CF85 /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; + F30094CC8CD0DCE8CC2D2DA45F826500 /* ABIElements.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIElements.swift; path = EthereumABI/Classes/ABIElements.swift; sourceTree = ""; }; + F31F770883EF864A1F37BCB7957A5434 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; + F37EB3E2ED86D20827342533B53E287E /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; + F3DE380E7E30E2DA63FF55FAB600B3EF /* BigUInt+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BigUInt+Extensions.swift"; path = "web3swift/Convenience/Classes/BigUInt+Extensions.swift"; sourceTree = ""; }; + F4429E4B96BA10BA786285923C0613A0 /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; + F53052E8D17344F009382DCB1F8417D2 /* web3swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3swift-prefix.pch"; sourceTree = ""; }; + F5767D1D9C884A9ACA6735647B0A3CFC /* EthereumAddress-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumAddress-dummy.m"; sourceTree = ""; }; + F5ACF9F2CD8131267094BD2B909B5832 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; + F5C1F6C41E1AF09051D403236102FE3F /* Starscream.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Starscream.modulemap; sourceTree = ""; }; + F5E999FAD1A123E4CE79BC495D03CA13 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; + F662D5A0A16E6C9DEACA3767A9836AD5 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; + F6C930A526E4E70E54230B535BC30CC3 /* EthereumAddress.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EthereumAddress.xcconfig; sourceTree = ""; }; + F82FA521CE7B8B61BB83B7E5A5FD3356 /* Promise+Web3+Eth+GetBlockByNumber.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetBlockByNumber.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByNumber.swift"; sourceTree = ""; }; + F83526C9C26936D7D292900E3A69B0E9 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; + F854DE682020809745DBAF00AA272D44 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; + F8E0EFF29CA29705D10D9C5E74B8F54F /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; + F9E1271D8C69173254FFC3331D7BCB9C /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; + FAC2D612104EA93DE8FFFC93BE950EE8 /* Web3+TxPool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+TxPool.swift"; path = "web3swift/Web3/Classes/Web3+TxPool.swift"; sourceTree = ""; }; + FBE1A99C5F06FA601EB3BA6AF8E12823 /* ComparisonExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ComparisonExtensions.swift; path = web3swift/Contract/Classes/ComparisonExtensions.swift; sourceTree = ""; }; + FCFF2DF693A9CC8B4583390AACCBE8F8 /* Web3+InfuraProviders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Web3+InfuraProviders.swift"; path = "web3swift/Web3/Classes/Web3+InfuraProviders.swift"; sourceTree = ""; }; + FD3D917F4E61D9C7A71DF2F8391AC711 /* Pods_web3swiftExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3swiftExample.framework; path = "Pods-web3swiftExample.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + FD498B1C7771A8EC269929D12D223C2A /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "web3swift/Convenience/Classes/Array+Extension.swift"; sourceTree = ""; }; + FDE0E947B8B0B536536B0429E4FA0E7E /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; + FE030C7B7D6307F5FFD7E0945AC6A435 /* ABIParsing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIParsing.swift; path = EthereumABI/Classes/ABIParsing.swift; sourceTree = ""; }; + FE56D0600B05B3361D823F1E58EEF49E /* secp256k1_swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1_swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FEE1BA7062D1EC65A45F4E7EF675902F /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; + FF8883EA88DED60F86BE6134BD372740 /* Promise+Web3+Eth+GetBlockNumber.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Web3+Eth+GetBlockNumber.swift"; path = "web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockNumber.swift"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 043A44B6F07B17B9FDB237C80C547215 /* Frameworks */ = { + 107F2B8B2BB232B6A489EBA2E0B6084E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C03A5E7CDA94D1EEFAA95BD7C8AA8A80 /* Foundation.framework in Frameworks */, - C14B28E1B085DB351DDFC83187893EAD /* SipHash.framework in Frameworks */, + 2140225AE207D36FF589524E449C1224 /* BigInt.framework in Frameworks */, + 257572F4EA8931B2C23143A5EDCB598A /* CryptoSwift.framework in Frameworks */, + 3346491AC2B168554DC419B3A4C09B5C /* EthereumAddress.framework in Frameworks */, + F100D79F7E1E90136251A7FF1AF2D53F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 30D68B77A2DAB060755632E5E528C760 /* Frameworks */ = { + 112619710F78B1BA140D6AC8F22DCB56 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 23916C64C98204C928896ABA4BE1DAE6 /* Foundation.framework in Frameworks */, + 0A00A1489D4041380B2BABC394E6162A /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3EB472E2EE778BA2800B34DBF4BA6E58 /* Frameworks */ = { + 2AE8DE5043A66DC2BA51EFB1422166F1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 486AE96A069EC0BAA1E35FE79194A25E /* BigInt.framework in Frameworks */, - FA024A288AA4357EB04E48AF9BCE53D1 /* CryptoSwift.framework in Frameworks */, - AFD68E6B13C8C94F2AE939D73A1FBBC0 /* EthereumAddress.framework in Frameworks */, - BB2EBA041C1D99F0E24A16187D135DD1 /* Foundation.framework in Frameworks */, + 094AED8757D57B70266CC6326BD2B82E /* BigInt.framework in Frameworks */, + 0DE1147C430399AF8061B2D854EC258D /* CoreImage.framework in Frameworks */, + E3F4228EC93BA5A2A532C5C2008345EC /* CryptoSwift.framework in Frameworks */, + 9B81C7A4CDE9223B7FA7050D350F6717 /* EthereumABI.framework in Frameworks */, + EF4B2B056B0ED49BCE895FA9B4F1F489 /* EthereumAddress.framework in Frameworks */, + 914BAC2514F778501813AFD518A5CB41 /* Foundation.framework in Frameworks */, + DDC2A4FB1026D94A53ED10C11FCD2BFB /* PromiseKit.framework in Frameworks */, + 0D615632DF3864D8EA29E9EB64D677D9 /* secp256k1_swift.framework in Frameworks */, + 3770408B2EE5B3B1799CA7CEDA7C851B /* Starscream.framework in Frameworks */, + D1240F566CB496AAD86F2CC24FD69C52 /* SwiftRLP.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 578DFD9660782B537DF2F07E1FD46259 /* Frameworks */ = { + 4ECAFB0023F06080FA8370FF60CDB9EC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B792D575CEA453A698E0D7C8E61388DA /* Foundation.framework in Frameworks */, - 50AFD0EF968A999FEA7BEE127440BB48 /* UIKit.framework in Frameworks */, + 0E5B7BF2486947C9DC8A8AD780D639AE /* Foundation.framework in Frameworks */, + A1D670E70275FF79ED7AEAEBF737B87D /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 65AC3C45CA627758B1050C16C4D97DA5 /* Frameworks */ = { + 65AFBD9FBBFDA3060C552B1AF411C38B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BDCB2C296BD731AD509810D023652C78 /* BigInt.framework in Frameworks */, - 2D53A0E8262E8D0AC71AB6341961A9F3 /* CoreImage.framework in Frameworks */, - 25C1D1DA3E2730A7983A6414FC4656FB /* CryptoSwift.framework in Frameworks */, - D07B6C6C612285018A6657649C285DB4 /* EthereumABI.framework in Frameworks */, - 4E4587C763B65AFD2E81737172773A92 /* EthereumAddress.framework in Frameworks */, - A82046A82CD3575966EAA968491B3FF1 /* Foundation.framework in Frameworks */, - 8B0EB0888995D3195D41D8FEF525C966 /* PromiseKit.framework in Frameworks */, - 92CB3B3B6277FD43A6CCF4B510FBCFC1 /* scrypt.framework in Frameworks */, - 0FFEF56AD88BA2B49BF3F4C06AE60C90 /* secp256k1_swift.framework in Frameworks */, - A7CB1BD8A467E5F5C0D1334A63FDFEA1 /* SwiftRLP.framework in Frameworks */, + 908DB48E8066721EACB8520E3687D5AA /* Foundation.framework in Frameworks */, + 9F882C0FB4AA408854857E533402C38F /* SipHash.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8E196E012D90266194B01740F1F181E4 /* Frameworks */ = { + 6BB9A8BBE8BF0F0E7101FD6456EB11BC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A232346CDD9B638A73E31F9B0EEC63A6 /* Foundation.framework in Frameworks */, + 6B024D672476053EF3B183605E8A79A7 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97B4064DB3E6E4051F5AB0CC6A0C858C /* Frameworks */ = { + 94371186B5072EFFB554EA1D7BB458DC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7199AB4B0415FC2D3FD6E5331A35B839 /* Foundation.framework in Frameworks */, + BA8738D271DCCDF455DA1E37E71F3AC8 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - C51A836D82921EFA9484264358165DE4 /* Frameworks */ = { + CC6684736CAAE9DAAE548EA40DA8FBF5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 94B766B2AB6086601374287BB084205F /* BigInt.framework in Frameworks */, - DA0E5E2EF44B023411F64FD606A05C46 /* Foundation.framework in Frameworks */, + B41C8B1A80608C396602AE22DD70E98E /* BigInt.framework in Frameworks */, + 334FCEDC2F11D14DD09D08A7A39A7941 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D1D2E3112C8952F649A1AA6C2A244398 /* Frameworks */ = { + CD34337F16E8A7771A15E889ED90DD17 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 07E55C4B3E245C156E30DF5CAB44BB2A /* Foundation.framework in Frameworks */, + 14E6967BAA5118080D57AF8734C82A37 /* CryptoSwift.framework in Frameworks */, + E9238960EDEDF96BC8AC99FC0A490B9F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F88A903EB36D7AF6FC3A163B862AEE5B /* Frameworks */ = { + D0732865FFD62AA97DEC4081D92242B8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 19EEEF4225421C0F5F4AD79A1DD4A7B0 /* CryptoSwift.framework in Frameworks */, - 521929B74C540A89354F6B479324C9DA /* Foundation.framework in Frameworks */, + C35F2921C13E7D6F6DF5921A231E4A55 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FD219DA880ECB1264A9E2956C0B80BF2 /* Frameworks */ = { + D37E7809213C1571A04ED19ED9D5BD77 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3EE92296A5FCE627C62A030E30676D49 /* CryptoSwift.framework in Frameworks */, - 8DCA8BBC469BA4112698AB969F25247A /* Foundation.framework in Frameworks */, + EF4B88EB7EC9D93ADDB35B7DFE95D209 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 13B89FCD8A2E022572A3233867D6DAA1 /* secp256k1_swift */ = { + 0AD69B1072C51156535B08BE359862EE /* web3swift */ = { isa = PBXGroup; children = ( - 5CADF98FCCC9B29F22C0815C40CFA3B2 /* basic-config.h */, - 168BEA0C8F8B3C8FA1F18A535A7B9160 /* ecdsa.h */, - 90DCB2D73690221D1C386B46FF12ACD8 /* ecdsa_impl.h */, - 45AA16F4A39E2367C4A4059E1314661D /* eckey.h */, - 099F776D5862FBF1C32451630511200D /* eckey_impl.h */, - 6B3AACA619772B384FE61866B88EA981 /* ecmult.h */, - F40826DF7C345288BFCB50940E3316CF /* ecmult_const.h */, - 36F8641D4C44BD3D0E08388287B61EB7 /* ecmult_const_impl.h */, - 8C65590568B033C2CC9803F32A614CEA /* ecmult_gen.h */, - 98FDE7A709821277AE5CCEFE2CF7D0B4 /* ecmult_gen_impl.h */, - E161AA24151D1227B11E7BFC7091272B /* ecmult_impl.h */, - 69A7034547608D113E9F306249220251 /* field.h */, - 8CAF5D39045C811128307EAFD468C89B /* field_10x26.h */, - 3F9BFEEC4833708E9B4067DFD84C5DBB /* field_10x26_impl.h */, - BCF8AF858508A3EC73D766B1CF48098F /* field_5x52.h */, - 74569BCFAE1C489C9D0FE3248C5CED66 /* field_5x52_asm_impl.h */, - 7B50F465279A418BE82FCA4EBD2177CB /* field_5x52_impl.h */, - 16AC0F8318A1676FBF02362F4595CDA5 /* field_5x52_int128_impl.h */, - 1A02CE100739858E7B58E0BC830FC666 /* field_impl.h */, - B2ACAB499A9507E7F5D0105E4A0D9769 /* group.h */, - 45C266B7095DCF8E4E4847CC708EC1BA /* group_impl.h */, - 4754D5FD3244548E259E3E0F25D01E84 /* hash.h */, - 404FC9F4A1E9D404A14FDFD25794F248 /* hash_impl.h */, - DBA7F751A89D1E1C5D62E2BADD1420C4 /* lax_der_parsing.c */, - 82D6B4BC9796460A18553C2F38C8AEE1 /* lax_der_parsing.h */, - 166AE9FC576B1A9469DA3090BD651D48 /* lax_der_privatekey_parsing.c */, - D78C0BC324759D084A8384179425BF47 /* lax_der_privatekey_parsing.h */, - 06016B2B87ACCBAB44FEDBBD9D102DE8 /* libsecp256k1-config.h */, - F6F09A34FF7ACDD387EF421282DCA54F /* main_impl.h */, - 810C0B92B1AE41809192BF5012A4A523 /* main_impl.h */, - 075236A3B5DC60B4370A0CCF672B8AEF /* num.h */, - D3D1AAC32C041B5712F196A61F5CA39D /* num_gmp.h */, - E4F1E867DE919C0E595D36510EEFE1A6 /* num_gmp_impl.h */, - 7C4C422A86A1DAE9DFC19D7BB256B774 /* num_impl.h */, - 932B2C4CD9556E6318A094CDEA2E0E13 /* scalar.h */, - C4BEA212C4B71400038EE33CE9319F63 /* scalar_4x64.h */, - 3028289D562E89D58F6AB987E4AA0EDD /* scalar_4x64_impl.h */, - A15E042C8396D13ADB12383453C3B15C /* scalar_8x32.h */, - 887360628FC3B77442F4026B0B7A51CD /* scalar_8x32_impl.h */, - 18C24CF8C724DE2F030E4429AD7EF3B8 /* scalar_impl.h */, - 724C44BB8A759DE7BA8C45425E26F27A /* scalar_low.h */, - 9B3438A6ED71C95FBB9BB471E36AFE4D /* scalar_low_impl.h */, - B72048F832A9C75C2A81C9CBC769CD8D /* scratch.h */, - 05625082EB748971627BF6E1ABEE72BE /* scratch_impl.h */, - 4673A58E053194AE130B84DD19ADFC40 /* secp256k1.c */, - 22AB1F2D4F1253D1F55214A8B4A078B5 /* secp256k1.h */, - DD4F0D58F76F4D676944EC3DD0AC648D /* secp256k1.swift */, - ACCA271C75D4B21ED35646A5A4731E5E /* secp256k1_ecdh.h */, - D45E969A3BDBBB4ECBB6299F26380AB1 /* secp256k1_recovery.h */, - F211AC62BA23FDE559ECA2DB16007CB5 /* util.h */, - B40F0123C9DC9C6FEB3F45C2DF44D3B2 /* Support Files */, + 041F9F28F415CCD2D8317C605A040DB7 /* AbstractKeystore.swift */, + FD498B1C7771A8EC269929D12D223C2A /* Array+Extension.swift */, + DBD43F88971059B766F3A19F87BEFA57 /* Base58.swift */, + F3DE380E7E30E2DA63FF55FAB600B3EF /* BigUInt+Extensions.swift */, + 25111C441DAC466B26E01891989A1AA9 /* BIP32HDNode.swift */, + DDA7AFCFDD5B6D2CAE89028C203CDFCC /* BIP32Keystore.swift */, + 8068716961C67C6302F060FA0992DA9C /* BIP32KeystoreJSONStructure.swift */, + 39ED500D4A66AD511F77C19E3A67B4C8 /* BIP39.swift */, + 3A87AC0BF0E81073854E188B84BBDED4 /* BIP39+WordLists.swift */, + 00AD9F67AA03DBAA91D8B55E8874023D /* BloomFilter.swift */, + FBE1A99C5F06FA601EB3BA6AF8E12823 /* ComparisonExtensions.swift */, + EF379C6E7234555DCD350A39886DA3CD /* ContractProtocol.swift */, + 76A4AD422A171B027CD9382EE9F3C088 /* CryptoExtensions.swift */, + D444D90A5F33EBC7DC0C528387C29E21 /* Data+Extension.swift */, + AB3DE4A102C821D85EC63637EABAADBF /* Dictionary+Extension.swift */, + 183F80020D6B653C9AA163EB60172784 /* EIP67Code.swift */, + 83E56F1D2469FFE3F5381113861A7500 /* EthereumContract.swift */, + 194CA9D19F3A81A23D93DCAF5B9BE54A /* EthereumFilterEncodingExtensions.swift */, + 5BB11A33D37953982594F0A4DAE1B087 /* EthereumKeystoreV3.swift */, + 5AECBEDC2B29EB5E4FE7C63BFE1E23F1 /* EthereumTransaction.swift */, + E7FE5E037A9626EBD430EA40C2697613 /* EventFiltering.swift */, + 0D30B86D55FF6D988C14645E212A03B0 /* IBAN.swift */, + 4E1FB519BA08E5DAF449CB049583BCC4 /* KeystoreManager.swift */, + 380C7EAA6D084E75E133A8BCBCC14D35 /* KeystoreV3JSONStructure.swift */, + ACF881D7ACCDDEC84571B364FE2DE330 /* NativeTypesEncoding+Extensions.swift */, + 0D8B8F10634699C38F23701092DA45E4 /* NSRegularExpressionExtension.swift */, + 05D334BF77A83E9911EBABAD390F3EB1 /* PlainKeystore.swift */, + 2ADA92C2BA781EF1D562263ECE0EFB44 /* Promise+Batching.swift */, + 84FD7D5349DECD6F57D3776531439A4E /* Promise+HttpProvider.swift */, + 13E83CB052BB69E8C74EED6CE4C2B455 /* Promise+Web3+Contract+GetIndexedEvents.swift */, + 816CB1183D2BCC0E337394681C454A1A /* Promise+Web3+Eth+Call.swift */, + 0E5771939E550A5BFDF047698B0B381A /* Promise+Web3+Eth+EstimateGas.swift */, + 4AE49EC095DE1E773A34210ED7C9BDC9 /* Promise+Web3+Eth+GetAccounts.swift */, + C027BB8E8CE779B62A5ACD309612C324 /* Promise+Web3+Eth+GetBalance.swift */, + AC47AF77749D0026E3EF3A401D57144F /* Promise+Web3+Eth+GetBlockByHash.swift */, + F82FA521CE7B8B61BB83B7E5A5FD3356 /* Promise+Web3+Eth+GetBlockByNumber.swift */, + FF8883EA88DED60F86BE6134BD372740 /* Promise+Web3+Eth+GetBlockNumber.swift */, + 9EDE959AAC0240C86F4452D57E1D6194 /* Promise+Web3+Eth+GetGasPrice.swift */, + 279C81008196EC06BF97D52FBC72C36A /* Promise+Web3+Eth+GetTransactionCount.swift */, + 4F58F8097BCD731DB6AEE7E8D987A611 /* Promise+Web3+Eth+GetTransactionDetails.swift */, + 43FCA81048BE1E6EDD10DD5A09AFC71E /* Promise+Web3+Eth+GetTransactionReceipt.swift */, + C11B6001AD77EE83DCB8105F7BD82B9C /* Promise+Web3+Eth+SendRawTransaction.swift */, + C1BF9D584A61B086B24585C72CE51A52 /* Promise+Web3+Eth+SendTransaction.swift */, + 4423633FB237B5BB7AF32A7954919463 /* Promise+Web3+Personal+CreateAccount.swift */, + 5679352EE122A11E4785A35859961991 /* Promise+Web3+Personal+Sign.swift */, + C77292C272A0C8D55C6DED90E0935DAE /* Promise+Web3+Personal+UnlockAccount.swift */, + ACB02E8A6A2D995F7945AC8CD49E4F13 /* Promise+Web3+TxPool.swift */, + 7B6E74607A9082D511E2715DD5CDDFF9 /* RIPEMD160+StackOveflow.swift */, + F1B6FCABDA33873D95FFEDD062BB38BE /* String+Extension.swift */, + 2F0F6B3F667E6C4B9AE1EFA39495CF82 /* TransactionSigner.swift */, + D2C0222A66151B5B68E982A7761953C1 /* Web3.swift */, + 249413324A68284771C2F1F1DD246666 /* Web3+BrowserFunctions.swift */, + 08EBA89E4EF087F03A6A6C3CA2CB4C91 /* Web3+Contract.swift */, + E493F524C0CBD60F149396128F96E432 /* Web3+ERC1155.swift */, + 6A9F460475AEDEA9DB33EA317456AF75 /* Web3+ERC1376.swift */, + 3E09FC593DD82756F1BB30987FCBA3CF /* Web3+ERC1400.swift */, + 0347D10EF04AC96C1463B85A265CF734 /* Web3+ERC1410.swift */, + 55770AD6FFFA1595F0BA78E39870A2A6 /* Web3+ERC1594.swift */, + B5A3C6B43595B2DF2B5C879521268C07 /* Web3+ERC1633.swift */, + 381921E142C3DEE404AC4C9B35EA0C24 /* Web3+ERC1643.swift */, + B930C05EEE398B8731B39BB587F6BAC3 /* Web3+ERC1644.swift */, + F1ED44070832AFCF673AD05E77E88921 /* Web3+ERC165.swift */, + 3EE106F99AB9588712126C149FFFCCB6 /* Web3+ERC20.swift */, + 2E0D3D128B9B8E9CDA7FDEAA66A6FC3D /* Web3+ERC721.swift */, + 79A63B98A4F07E0C74D4E4BC2382B303 /* Web3+ERC721x.swift */, + F0AEC7065DC7A0F8148F2CD5ECC07A4A /* Web3+ERC777.swift */, + C37A91FABB0A2D51C28C52544407316C /* Web3+ERC820.swift */, + 8DEB69606E93A93B181961FAF6BAB02C /* Web3+ERC888.swift */, + 105A61AFAC962D7CD24E3F394396A628 /* Web3+Eth.swift */, + 01128B279E0D9C232AA316F18EA8D83F /* Web3+Eth+Websocket.swift */, + B15D33A6EAEE1F68CAB2F9F5AD8C4378 /* Web3+Eventloop.swift */, + 9BE885550B5668557EECC8CAAAB18D77 /* Web3+EventParser.swift */, + C927CFEAD2B7A02878A3629E72FAE9E0 /* Web3+HttpProvider.swift */, + FCFF2DF693A9CC8B4583390AACCBE8F8 /* Web3+InfuraProviders.swift */, + 3977F7D70B2A5A1B799637B95F926A56 /* Web3+Instance.swift */, + 6C06FBB9FD8842477EB753D801D3228F /* Web3+JSONRPC.swift */, + 5489296DCD0423E23498087C4538E1DC /* Web3+Methods.swift */, + DDEAD18C061E3D1F667B436202D8F711 /* Web3+MutatingTransaction.swift */, + 16A028531890ABAF370C07DECECEFA9A /* Web3+Options.swift */, + 7A7DB9D5C92CC227BFE7A019F2C06C88 /* Web3+Personal.swift */, + BE33E25BFF2A676DB0EE298D821F88DB /* Web3+Protocols.swift */, + EFA68B2E611CDB2576D8CEFC3394A39A /* Web3+ReadingTransaction.swift */, + 95436BEBA7470F0DDC350E6317D1DBC6 /* Web3+SecurityToken.swift */, + C01D591D5EA7C54D69D417DBB0EAB180 /* Web3+ST20.swift */, + 3FC6398B7A91945F57F6C49E80FDFF3A /* Web3+Structures.swift */, + FAC2D612104EA93DE8FFFC93BE950EE8 /* Web3+TxPool.swift */, + 461CF0D1D7233ADF3327A55D5C5C6347 /* Web3+Utils.swift */, + 89D17D0DE626A746CE48891A9E26C5A6 /* Web3+Wallet.swift */, + 905FE140AFE9E2D1D34DFF4DF70B19D0 /* Web3+WebsocketProvider.swift */, + 363C7CAE4A696FB485713F900C50BD8E /* web3swift.h */, + C194FAFEBD0A35247AF9E579DF49CF17 /* Support Files */, ); - name = secp256k1_swift; - path = secp256k1_swift; - sourceTree = ""; - }; - 156028A87E2A2ECF3EF26CE7526C5550 /* scrypt */ = { - isa = PBXGroup; - children = ( - 1F8DBA32491646170BAF7A1ED104880B /* BufferStorage.swift */, - 2D47BF61850EFDEED83A76DA6498C213 /* Cimpl.c */, - 6C7A9472FF71EC33BE7131124C53835E /* Cimpl.h */, - 712C8CFFF313A75DD19030E239230234 /* Salsa.swift */, - 1CF0705033B0A2728CE16D3AF008DD51 /* scrypt.h */, - 4122BE1E9FD4A604314CE85B4CDFAEBF /* Scrypt.swift */, - 93CD8E17641E019A6658DE6E52039401 /* Support Files */, - ); - name = scrypt; - path = scrypt; + name = web3swift; + path = web3swift; sourceTree = ""; }; - 1E142BF8C1328CA6AC5A555BC5456AE4 /* Support Files */ = { + 113002ACBEDC6601E96EE02BE82322B7 /* Targets Support Files */ = { isa = PBXGroup; children = ( - F6BEB7BCD2FEE3A583BF68F7E5275487 /* web3swift.modulemap */, - 900BF76676BA8D9C9EE025EFBFF7DB36 /* web3swift.xcconfig */, - FCB3C4C3B8E9D105D6C89E3C89F25474 /* web3swift-dummy.m */, - 9AFC7ACBD0ADDDB3FA2271112BED97D2 /* web3swift-Info.plist */, - 546F993BFB7CD1EB1D1DF4E918774017 /* web3swift-prefix.pch */, - ABA0BB0844791492402D5AB66E61BB24 /* web3swift-umbrella.h */, + 501C8518D5FF71B9F9B4BBE4901CBC9C /* Pods-web3swiftExample */, ); - name = "Support Files"; - path = "../Target Support Files/web3swift"; + name = "Targets Support Files"; sourceTree = ""; }; - 2A98901778463113541B279F195C7758 /* SwiftRLP */ = { + 176C539052D0DCEB6AC036549EAB4EDF /* secp256k1_swift */ = { isa = PBXGroup; children = ( - 3705B10251AF105DFD9C06CAD8BF008B /* RLP.swift */, - FD94AFA068C1AA0B75B12B723463561E /* SwiftRLP.h */, - 48C295615829CD90A1E669F428B31E4A /* Support Files */, + C47BA6A1082EC7355BE221F69144578E /* basic-config.h */, + DBEAC2574E1726C133526EDE33F11EDF /* ecdsa.h */, + 6ABCD8D6A83571E5D316165C5C7BAD0F /* ecdsa_impl.h */, + 3B68DE8715B4DB28D0345AB571602A49 /* eckey.h */, + BBE863715A30A04646B3EAC1ABD367DA /* eckey_impl.h */, + BA96EF12CD0380F6329120CFCEC98883 /* ecmult.h */, + D3A6B6BBCF87FA0F35636A03EFD3D365 /* ecmult_const.h */, + EB41575E9C6C8175A129B42F2D0E4A19 /* ecmult_const_impl.h */, + E06652239DFF119EFF3E81EBD7F8A2EC /* ecmult_gen.h */, + FEE1BA7062D1EC65A45F4E7EF675902F /* ecmult_gen_impl.h */, + 2EA3A555CDD6453F5EBDDC83D2282DD4 /* ecmult_impl.h */, + 4767CE84618D0797956306818F093606 /* field.h */, + DC6CB21FEEC0C0AB8E1FB1B2A4F1B4A8 /* field_10x26.h */, + 91F66BBB0A278B91532A69BFAEB7BC5B /* field_10x26_impl.h */, + 0E22005ED4B7A9BACC15853954A2A499 /* field_5x52.h */, + 897918ACF136C2411B5B66EA3B1F0BAB /* field_5x52_asm_impl.h */, + 111828BD2E1392F25A53108D791D926F /* field_5x52_impl.h */, + 51199B2789656F7E1BCA7DDBD744EC0B /* field_5x52_int128_impl.h */, + B3E6462EE69737A4DD2A8FF21DD92EAC /* field_impl.h */, + DA01EF9685BBDCA64A3561400110661F /* group.h */, + 110394450127E5CBF8DCCEEC36125A6A /* group_impl.h */, + 2152BF84C80A93B19DC080C9ACA6AA14 /* hash.h */, + 155AC28C8A507F51439BD380BD4F9EBE /* hash_impl.h */, + 57FDE2B6D6AC65BD61440714697AB0E2 /* lax_der_parsing.c */, + 312324E2886FB061BA10D963FD7A41A1 /* lax_der_parsing.h */, + 52941199842321BB34B3D44C34F6E81B /* lax_der_privatekey_parsing.c */, + 207FF811F09993FB365AA707E41DDA3A /* lax_der_privatekey_parsing.h */, + 7FAC9CA18FBDAACAB22476B23374AB36 /* libsecp256k1-config.h */, + ECD88A7B6B6E3F25850F1957891DB6A8 /* main_impl.h */, + 37C2605D90A3DDC2EAEC512FE68E727F /* main_impl.h */, + 24C6B95649014607F2915DE3DBEF4E6E /* num.h */, + A7568A0402D3158454A85DE3B52149B5 /* num_gmp.h */, + 8CF1D32CB9BC81934F1ED3A1A20FB5C7 /* num_gmp_impl.h */, + 6EFC6ED32EFA173BF4707A638FDF43BD /* num_impl.h */, + B74C432CDEBD12EFB8DA0B74D4C0B08D /* scalar.h */, + 1BF2884177C800D4D0A4A5F233098468 /* scalar_4x64.h */, + 72CD2EF06C8B53FFAAD23C1105AEF940 /* scalar_4x64_impl.h */, + 9EE51633337DCE928949C190652FF224 /* scalar_8x32.h */, + B99A6B6A6FD88742A22B6FD8ABC68799 /* scalar_8x32_impl.h */, + F9E1271D8C69173254FFC3331D7BCB9C /* scalar_impl.h */, + A3032ACA182EB8CBEFB6EBAE487AADD1 /* scalar_low.h */, + B82C5DE8A785E6269DB003104752AA6B /* scalar_low_impl.h */, + 0A7A55C8706508E1E83AE9750F193C1C /* scratch.h */, + B36AF3B04F90E0A8066962CC4C70B77C /* scratch_impl.h */, + 2D68A0C01D3620A5BEE69C7FEAAB7B4D /* secp256k1.c */, + DFD279F3E8B5C6D5EC1D7E97B1C35EE9 /* secp256k1.h */, + CAF0D960A41C502FD66DC06982600219 /* secp256k1.swift */, + 25F0C7876CA1DA522A25BD0A93924B8B /* secp256k1_ecdh.h */, + 840713AE63950179CDA7E0E0666B3FE8 /* secp256k1_recovery.h */, + 53DB5ED1E242022F0EC54EF41F33D167 /* util.h */, + BDEEA55C74073E909F9A8B6577962E8C /* Support Files */, ); - name = SwiftRLP; - path = SwiftRLP; + name = secp256k1_swift; + path = secp256k1_swift; sourceTree = ""; }; - 2B9CE0B991C87B26E9797739336B8A6C /* Support Files */ = { + 209979C32E7FBD13552CB5D9B73DE7A9 /* Pods */ = { isa = PBXGroup; children = ( - A1A7DE903866EFAB229ECC3D1346434B /* CryptoSwift.modulemap */, - 1160128225B85906623514D7D7090ECB /* CryptoSwift.xcconfig */, - B575CEB1C724F85E4A1857AA0042309A /* CryptoSwift-dummy.m */, - 62B3D5FA72C0FCAE1E2F6158F0F73411 /* CryptoSwift-Info.plist */, - D7B39A4A3DA9EBB4C60E868C0C5CF2C2 /* CryptoSwift-prefix.pch */, - 912562705A9D693EE4E79FC65116D991 /* CryptoSwift-umbrella.h */, + A7583FF58BA6D284E6643A8F7770E45D /* BigInt */, + B0595020760322B53A53B5B85FF0E3AA /* CryptoSwift */, + E2F5D54E4AB6375840523EDBA1BDA4A9 /* EthereumABI */, + 97B0684DEE0B00E472CE968535CA9ED1 /* EthereumAddress */, + 72F167C2F8F0951705F1DC72D39227BE /* PromiseKit */, + 176C539052D0DCEB6AC036549EAB4EDF /* secp256k1_swift */, + AEF0FC508630081FE56DE6E404D166D8 /* SipHash */, + C4FD88D77A5754117AC16A477C78D237 /* Starscream */, + DBD99B90E4D3190A27F719AD5EE14769 /* SwiftRLP */, + 0AD69B1072C51156535B08BE359862EE /* web3swift */, ); - name = "Support Files"; - path = "../Target Support Files/CryptoSwift"; + name = Pods; sourceTree = ""; }; - 451E5E26E84731ECA728D5EBED1DF276 /* web3swift */ = { + 222259E05FBEDF14A1D2EF877BE389AF /* Foundation */ = { isa = PBXGroup; children = ( - DC529C712D847E1520FC99E66853D5E2 /* AbstractKeystore.swift */, - E067ABC95AB5A08F48E2887AC6ECDF59 /* Array+Extension.swift */, - D1E952E16B5F2C98AD684EBCDE120FB1 /* Base58.swift */, - 3C37C7E9D0EDF73545C404CD099C00A6 /* BigUInt+Extensions.swift */, - 1A1038DC1633B7F9F4C06BE77D4DE0CD /* BIP32HDNode.swift */, - 681530AB9C692077CCA2B03BF1DDED10 /* BIP32Keystore.swift */, - C6954609CD039F4F09E75EBC79203A7B /* BIP32KeystoreJSONStructure.swift */, - E37C1C69C98C58ABCDCA9F4B01061D0F /* BIP39.swift */, - 7CC86CBFE859D6D9E92CE62268D0C8BB /* BIP39+WordLists.swift */, - 1BCF26ED236D1B8E24321ED226B25DF4 /* BloomFilter.swift */, - A8EA98CA2EC2343E64F97FE62866F72B /* ComparisonExtensions.swift */, - A9C6FDA4C7AB83C6CB50D21313F5540F /* ContractProtocol.swift */, - F25ACD34DFF6A5394BF0D9D4CE52C5C3 /* CryptoExtensions.swift */, - 4039FF96173F8D1FD541617AFC84F660 /* Data+Extension.swift */, - B109DA379FA9ECABADD3EE3B80DE29B8 /* Dictionary+Extension.swift */, - 331413774F7D7F0757A5F0B9B2DAA4BC /* EIP67Code.swift */, - 91C4C863E4EB75ABB3E8474227D40A73 /* EthereumContract.swift */, - 0F64296999AC33A5090DFA571030C3B3 /* EthereumFilterEncodingExtensions.swift */, - CB6ECCB5CD4592A97A0350BE32E726B5 /* EthereumKeystoreV3.swift */, - C613070ACCF0136D2C14651C688498FF /* EthereumTransaction.swift */, - 4CF166364A9E5E97DD45519B5D546ABE /* EventFiltering.swift */, - 93F9F961FF5E739D6A27BAE1B6B84255 /* IBAN.swift */, - D9EC47F44C823E1171CF73606A494D29 /* KeystoreManager.swift */, - AADCA6CCD158303369C205F70D9E4590 /* KeystoreV3JSONStructure.swift */, - D35A4906E915E02BCCA9912DBD2D26C9 /* NativeTypesEncoding+Extensions.swift */, - B1E7E3D26AF128FB9F5B65F2975134E4 /* NSRegularExpressionExtension.swift */, - D94B4FB5E11583412D053DB2C819F58C /* PlainKeystore.swift */, - 20F9F737EDFCFEF9830F0F4B621D83E4 /* Promise+Batching.swift */, - B4D9F2707B320173226689A2ED924509 /* Promise+HttpProvider.swift */, - C5CC3933EB505F78FB90467B4EFA6203 /* Promise+Web3+Contract+GetIndexedEvents.swift */, - F6FDF59FF5D7342988E8B93E48F3AADF /* Promise+Web3+Eth+Call.swift */, - 7B5D413D46DFC82B6CBCBB8C5DE7CAFB /* Promise+Web3+Eth+EstimateGas.swift */, - C07DC3D70012BD62BDE7B7032EE7A09E /* Promise+Web3+Eth+GetAccounts.swift */, - 4F8FBC6FA4567C651C24DACB88FAA458 /* Promise+Web3+Eth+GetBalance.swift */, - CD643FEB508293D31031F06D61BFEDC4 /* Promise+Web3+Eth+GetBlockByHash.swift */, - 1860F5FD511E1CDC0321E2D6EBA3AFC5 /* Promise+Web3+Eth+GetBlockByNumber.swift */, - 905EF6316653669512380D6206D3F8DE /* Promise+Web3+Eth+GetBlockNumber.swift */, - CCC1EA2773146F4324EF5ED0B3A3EFE0 /* Promise+Web3+Eth+GetGasPrice.swift */, - DE20423192DCFD6A61AC3EC0E1210470 /* Promise+Web3+Eth+GetTransactionCount.swift */, - 010F596FBEF9CCC63191ABD3376144DD /* Promise+Web3+Eth+GetTransactionDetails.swift */, - E16927F5D553D8A1B33E94ACCADB17A3 /* Promise+Web3+Eth+GetTransactionReceipt.swift */, - 6E2D8D233951D90BE212C1683EDBE096 /* Promise+Web3+Eth+SendRawTransaction.swift */, - E9C42893B8A27DCD6134EC5FC2D07657 /* Promise+Web3+Eth+SendTransaction.swift */, - 727727B1D330C3E96EEC5855430FB9E5 /* Promise+Web3+Personal+CreateAccount.swift */, - 8075D0204E7F5BE1CEA87D03F0556108 /* Promise+Web3+Personal+Sign.swift */, - A1838E8D409817D754EDF58FCF91BFCB /* Promise+Web3+Personal+UnlockAccount.swift */, - 8E2604B78547CAD1266D726FEE58D2C5 /* Promise+Web3+TxPool.swift */, - 64E4ADB46AD6A716EBE5FEE6B3F98341 /* RIPEMD160+StackOveflow.swift */, - 9E7B0F55D684C65453D559D9B4BDC75A /* String+Extension.swift */, - 8A274CAE3C49CDADD2C8EDD0B6A2D5EC /* TransactionSigner.swift */, - 03FB5FA9008321DCD209AFD9C2CE3670 /* Web3.swift */, - 0F697DE9A9B9780448371273B4B4986B /* Web3+Contract.swift */, - 6E507073C6A899B5150C313DA3E1E7FF /* Web3+Eth.swift */, - 46C0D5E07A4C170FDD09AB0EB76EF331 /* Web3+Eventloop.swift */, - 9833899028708E6BF26F6D1610FE1997 /* Web3+EventParser.swift */, - 5DBCD77147B6CFE8E4D75C61EE88C171 /* Web3+HttpProvider.swift */, - ABEE70BA5A5BC35C34D6C5DA8EB13409 /* Web3+Infura.swift */, - 68FBA8773B17FF0BE969F589278D0761 /* Web3+Instance.swift */, - CC9030EBE40E463BE51970F190211BDB /* Web3+JSONRPC.swift */, - 8F7AB407FF50CC1C82BC47E27132E3F0 /* Web3+Methods.swift */, - 380373C357903D6101BBC00E60665458 /* Web3+MutatingTransaction.swift */, - 617463151A102A6AE3996BBA956F7E7B /* Web3+Options.swift */, - 5E005CD6FAFA3B7D23F16DCFEE03883E /* Web3+Personal.swift */, - BC202ECB6EBC87A3FF623F01851811DB /* Web3+Protocols.swift */, - AE647B348F1A393A971238BA674A6485 /* Web3+ReadingTransaction.swift */, - FB5D1B477007EA8B27F988C2783A2294 /* Web3+Structures.swift */, - 43C85B8AD6FC929A0DD4ED8A7F71D777 /* Web3+TxPool.swift */, - A35C0ED9C1391857C58C0CF40B765953 /* Web3+Utils.swift */, - D9CEEA6FBF391E65A68E60592882B642 /* Web3+Wallet.swift */, - 1CA6616160AC6F13FA7BCA2D9C4BB992 /* web3swift.h */, - 1E142BF8C1328CA6AC5A555BC5456AE4 /* Support Files */, + 24FF1E099D5C1CD2C3B4495C02CC3BBE /* afterlife.swift */, + 403DC7FCDAAD3AC18F7D19940A4387EF /* NSNotificationCenter+AnyPromise.h */, + DA056E66B02BCFCAB2F667A64DD52323 /* NSNotificationCenter+AnyPromise.m */, + 34C952D47C4A429911E1F5A0285A580F /* NSNotificationCenter+Promise.swift */, + 6609BC693C2981E22DDA6BC3AFF4C1EE /* NSObject+Promise.swift */, + 5143C2B024F1CC2D6A8CD65DCF0CE711 /* NSTask+AnyPromise.h */, + 806B1ECC842DB771A758818B3634535D /* NSTask+AnyPromise.m */, + 0E37F44D3AE0C3799F7FDD44C22BC351 /* NSURLSession+AnyPromise.h */, + 97942B9490EAB38F1D44476AAB2C757C /* NSURLSession+AnyPromise.m */, + 38D4E56B5E76F0815DDB23862812AD69 /* NSURLSession+Promise.swift */, + 0369A41FE6EC08408FA9CA787CE8EE26 /* PMKFoundation.h */, + C1ED0CC08B26CA2596B61EFD55B2E74F /* Process+Promise.swift */, ); - name = web3swift; - path = web3swift; + name = Foundation; sourceTree = ""; }; - 48C295615829CD90A1E669F428B31E4A /* Support Files */ = { + 2C29F4CDA41D852BAB165733A044ED04 /* Products */ = { isa = PBXGroup; children = ( - FFE876E58D1EE05160879870CEFC7966 /* SwiftRLP.modulemap */, - C71613C4CE6D47BE330CC73E165FEDC6 /* SwiftRLP.xcconfig */, - 47098DB41878FF379AEBC8644EC53E97 /* SwiftRLP-dummy.m */, - A3D1675AC5880CADBC5A85BEEA25FEA6 /* SwiftRLP-Info.plist */, - 0C0E2B8299A8D557266A0BFDE4075564 /* SwiftRLP-prefix.pch */, - 6C47EE1AA0C0CE661EBC27D485F20EA3 /* SwiftRLP-umbrella.h */, + AA15A806485AD56785C00F606BF15E41 /* BigInt.framework */, + 43C23DCEA349F5119D02161DB3A2F248 /* CryptoSwift.framework */, + 794072845D4768298AE01BB6FE482CCC /* EthereumABI.framework */, + AC9A8D265F34E698FE7B5B2EB20BCEBF /* EthereumAddress.framework */, + FD3D917F4E61D9C7A71DF2F8391AC711 /* Pods_web3swiftExample.framework */, + A9825FE2555E0AC5A75D452770DB4B65 /* PromiseKit.framework */, + 610F5B2F64A19723D6767604A8AF660B /* secp256k1_swift.framework */, + 5C648DB22D16FEC5FFA55F38E73C5ED1 /* SipHash.framework */, + 6B7804074E220497AF1B780BD219A34E /* Starscream.framework */, + CBCDDE9E5C8C4D7CE7707928C6F21FF8 /* SwiftRLP.framework */, + A85B1F9FF37274E35577DB8BC3228DD5 /* Web3swift.framework */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftRLP"; + name = Products; sourceTree = ""; }; - 566EE770C47CF62C66CE98772C974B91 /* Pods */ = { + 38BBADD4A62F1E6E784946D69687DFD9 /* iOS */ = { isa = PBXGroup; children = ( - 8A3093C26A8EDD229F38F6B4FAFDDE58 /* BigInt */, - 9C4DB70411CDB99C0640965FF70AAD10 /* CryptoSwift */, - 885494EA0A353D8564623BB7CB4A1C8F /* EthereumABI */, - 6EE357E261347A2A326950A8CB1DCFB8 /* EthereumAddress */, - 71F7E87501D8CFC0ADEBAC36590A2181 /* PromiseKit */, - 156028A87E2A2ECF3EF26CE7526C5550 /* scrypt */, - 13B89FCD8A2E022572A3233867D6DAA1 /* secp256k1_swift */, - 711B866CACAD493AD2D04E67BF3A872F /* SipHash */, - 2A98901778463113541B279F195C7758 /* SwiftRLP */, - 451E5E26E84731ECA728D5EBED1DF276 /* web3swift */, + A425D221E163EBFEA8B65715D42B4A91 /* CoreImage.framework */, + 08D2BD9382311D58B3AE07D4EFB3007A /* Foundation.framework */, + 0BC31C87FCB06841CEFFBE945A33999D /* UIKit.framework */, ); - name = Pods; + name = iOS; sourceTree = ""; }; - 68D1B13E7ACEC4FBBFF130BADA9C0A1B /* Products */ = { + 486D87B949704EBAEEA8961EAC612010 /* Support Files */ = { isa = PBXGroup; children = ( - A5A3BA2300413041BDAD20538CC2A0CC /* BigInt.framework */, - 893235EAB21791B8848761F81F0B2A56 /* CryptoSwift.framework */, - 0FCE2106A870C9CA8289F01F2E005C3A /* EthereumABI.framework */, - FD7ED36C282A0828EE45325CACB45C56 /* EthereumAddress.framework */, - 87C916A767731ADE1518E52E1B6D032F /* Pods_web3swiftExample.framework */, - 7B19C8291B81ECFBA8C6A57213ADA700 /* PromiseKit.framework */, - 68E6E31894426B0E48756676D9FEA4D8 /* scrypt.framework */, - 195F208CF3D7F63BCB562753EBCD8DA2 /* secp256k1_swift.framework */, - 92E84CE689EC1CA76E264E5261761179 /* SipHash.framework */, - 780BEB0A3FE57594F0858A7EA833EC1A /* SwiftRLP.framework */, - 7892B6C936FFDF8FFBBA425C3F07ACE5 /* Web3swift.framework */, + 217F43A5FE26A9B4AB61005432855F46 /* SwiftRLP.modulemap */, + 79C61A58686B27952DD069E1ECF7D303 /* SwiftRLP.xcconfig */, + 3725F8D66F7749EDDBE97934290414B3 /* SwiftRLP-dummy.m */, + 085B496DBB476C7DD1B269E04FCFDA56 /* SwiftRLP-Info.plist */, + 4615763F358BA325ACF973353CD2E5BB /* SwiftRLP-prefix.pch */, + B93BFDD3FE393838BF136DC96D3AA25F /* SwiftRLP-umbrella.h */, ); - name = Products; + name = "Support Files"; + path = "../Target Support Files/SwiftRLP"; sourceTree = ""; }; - 6CEEE4DDC2C0BFBD0C9410CC0E352034 /* Support Files */ = { + 501C8518D5FF71B9F9B4BBE4901CBC9C /* Pods-web3swiftExample */ = { isa = PBXGroup; children = ( - 525E38091E2E2E782C02FA0EEEDA2179 /* SipHash.modulemap */, - C870B1A3D456FD4314DD4C0607A42610 /* SipHash.xcconfig */, - 0F31A6E839594AF147029FFDE446D65F /* SipHash-dummy.m */, - 42B057F2BE3C7A1BC0A9BED2F4BA8C41 /* SipHash-Info.plist */, - A19C447D7BD236EECA99DBCF8894565F /* SipHash-prefix.pch */, - 886FFD1EB7FAC82F55796B76AF70F059 /* SipHash-umbrella.h */, + 6C49F1C9F208C0F7B392CB57B70C7A37 /* Pods-web3swiftExample.modulemap */, + 53752B019C358EA03419BF823E501FEA /* Pods-web3swiftExample-acknowledgements.markdown */, + AD4D8F7FF2160E49F85C9A87BA31ED93 /* Pods-web3swiftExample-acknowledgements.plist */, + 9B535269581746ACE9EE89D7EAF64EDE /* Pods-web3swiftExample-dummy.m */, + 96C2C44054DE32101526E99B9658C89D /* Pods-web3swiftExample-frameworks.sh */, + 0CE423A9F6874D5718AEBBC3F10AC3FA /* Pods-web3swiftExample-Info.plist */, + 5BFC87E38D1F5804BE355509D4CFC0DF /* Pods-web3swiftExample-umbrella.h */, + E09AB4EF394FD735F6F29BEC0C88016F /* Pods-web3swiftExample.debug.xcconfig */, + 8E0165ACBE7F33E4BFAE66C793746886 /* Pods-web3swiftExample.release.xcconfig */, ); - name = "Support Files"; - path = "../Target Support Files/SipHash"; + name = "Pods-web3swiftExample"; + path = "Target Support Files/Pods-web3swiftExample"; sourceTree = ""; }; - 6EE357E261347A2A326950A8CB1DCFB8 /* EthereumAddress */ = { + 59E0A75D1C4F6DB8C74AACDA21283994 /* UIKit */ = { isa = PBXGroup; children = ( - 77783A545C644FB0696DAD1722E5944D /* EthereumAddress.h */, - F357548B3DD39378B080646816E6E6E9 /* EthereumAddress.swift */, - A29F00A814D897C1BE5AE6DE5E89C998 /* Extensions.swift */, - B11B364D911E9487A929B8CA5C21BB80 /* Support Files */, + CD7A206E7BC2F6EEEDF54ECE76E60715 /* PMKUIKit.h */, + A57714BF3D28F84B3282FD4E0DC08067 /* UIView+AnyPromise.h */, + AEE3975D29B871EB71794A90B9F8308A /* UIView+AnyPromise.m */, + 037E7B90D8ED1BA75234ED2CD9D6C550 /* UIView+Promise.swift */, + 67E569605DBBD1754B4C6C4725277729 /* UIViewController+AnyPromise.h */, + 297FE35AD5B9C2666558663768FBD269 /* UIViewController+AnyPromise.m */, + CFED2C714EFDBF8761B657F2379B4993 /* UIViewPropertyAnimator+Promise.swift */, ); - name = EthereumAddress; - path = EthereumAddress; + name = UIKit; sourceTree = ""; }; - 711B866CACAD493AD2D04E67BF3A872F /* SipHash */ = { + 6741D76B0FF7EA193F24EECC538F14E9 /* Frameworks */ = { isa = PBXGroup; children = ( - 9BC3E604A7828F857DEFB8E5A4792673 /* Primitive Types.swift */, - 24D4D47D06AA22BB74384BAB9BAD40F2 /* RandomUInt64.swift */, - 37505D43721EBDF655CBC34F90544D5E /* SipHashable.swift */, - E0A18E92B2440CE03C08D553EF12E1AA /* SipHasher.swift */, - 6CEEE4DDC2C0BFBD0C9410CC0E352034 /* Support Files */, + 03BA18BDDAC0A893C9CA6A589621413A /* BigInt.framework */, + BB99C65DF248DDC1FCE31D03A2A7A186 /* CryptoSwift.framework */, + 5B047B9565B4F87320AC4BD2745BD099 /* EthereumABI.framework */, + 8B2684334CB4EC706DEEFE0A38DBB245 /* EthereumAddress.framework */, + 151E204DA89E40BBC626666BDFD8086E /* PromiseKit.framework */, + FE56D0600B05B3361D823F1E58EEF49E /* secp256k1_swift.framework */, + C333383AAA8E072BC5B712339F021BE2 /* SipHash.framework */, + 3E2473598287A2AED3A4949F99CE5C99 /* Starscream.framework */, + C97F6AB82A0E60079063541F299DBD9F /* SwiftRLP.framework */, + 38BBADD4A62F1E6E784946D69687DFD9 /* iOS */, ); - name = SipHash; - path = SipHash; + name = Frameworks; sourceTree = ""; }; - 71F7E87501D8CFC0ADEBAC36590A2181 /* PromiseKit */ = { + 72F167C2F8F0951705F1DC72D39227BE /* PromiseKit */ = { isa = PBXGroup; children = ( - 733C31B46A8A3F4E41A463B05E8B8FE4 /* CorePromise */, - B12B7C782A5F4D4BC0D7F4BA389DBBD9 /* Foundation */, - DD49D7A3E017049BF4628CE18A72703A /* Support Files */, - 801E9F7ACFC103048CD42CF93DF273A4 /* UIKit */, + 75AEB10B3874387E2428D868B625556B /* CorePromise */, + 222259E05FBEDF14A1D2EF877BE389AF /* Foundation */, + C36BC32CE476ACAFBE4CAA2243B3E96B /* Support Files */, + 59E0A75D1C4F6DB8C74AACDA21283994 /* UIKit */, ); name = PromiseKit; path = PromiseKit; sourceTree = ""; }; - 733C31B46A8A3F4E41A463B05E8B8FE4 /* CorePromise */ = { + 75AEB10B3874387E2428D868B625556B /* CorePromise */ = { isa = PBXGroup; children = ( - 79CBDB796FB0F17282181E75EDA52E42 /* after.m */, - A3E1DF0961FF3DA091383DEC4B479CD4 /* after.swift */, - 1FC700A80452B10ACF64DF1C457425C7 /* AnyPromise.h */, - 974A7BFE8E92E050D2FF9124AA7DBCC9 /* AnyPromise.m */, - 9DBC29B166EFED583208F516850EA2A2 /* AnyPromise.swift */, - 27A601897D77B2B18E22FA26B5430F5B /* Box.swift */, - 66FBB836159737A49CA20283E62CA819 /* Catchable.swift */, - 277E6BF4D08FCCC20EF73C9BA37B6AB8 /* Configuration.swift */, - 32380EA4D124B8A636BC9118466E6AAD /* CustomStringConvertible.swift */, - 04FF7D42AF8710309C16345FB83ABD5B /* Deprecations.swift */, - 693AFA81068283C937D0CA94D38E4722 /* dispatch_promise.m */, - C0315A68D7F2B7AACA7AD8A42A20A8F3 /* Error.swift */, - E6B1FFA44C64B0B540B94FEEE1CD9B0F /* firstly.swift */, - 4A706CB0950B86EBBB4A53A66D0BB57C /* fwd.h */, - 88C864BCF6B7DF8F59711FB0F71F60BF /* Guarantee.swift */, - 3FBFE3F22B4E7AE72FCC6A2C5F9B20E8 /* hang.m */, - AF16F679ECE9C4841106CD599F60C4E2 /* hang.swift */, - 9E1A060CECDF25684D85667577DBA798 /* join.m */, - 0B29CEBEB845EC347B96D7CF8EC1193E /* Promise.swift */, - 1400B4F7ABDE02B5070690E0E3F0F034 /* PromiseKit.h */, - E1F617E29052F2A20A4DAF46197559BF /* race.m */, - B4C09212026736ACF8C3588C3DFFFBAC /* race.swift */, - 87DC9E0219AEBCFD0C11561CB1F75C69 /* Resolver.swift */, - 2BFBB3A57DFC4A14798203F7DD419319 /* Thenable.swift */, - DBE9BF31616883FEBAE74AC685A421E1 /* when.m */, - C669F6C727F3A19F28202283CAF3CBD6 /* when.swift */, + E90FBB935144B110815A586CEEB51A0A /* after.m */, + 36A3E204EA9CF5A6F646DC4CE948D976 /* after.swift */, + 57E1508B3AE78143C99D09B1910F7471 /* AnyPromise.h */, + 55ABBA489DECB9D68B97E652EA223798 /* AnyPromise.m */, + 1440078DEBCEF6039942D4CD156CA836 /* AnyPromise.swift */, + 2DF55D43FD52E1A6206514638E5451D8 /* Box.swift */, + D2A1A54D7D533D3A7714DCDFC368A9C8 /* Catchable.swift */, + CF4179EDA60DF15E84FF7031142B345A /* Configuration.swift */, + 5489609F31B6309C2F681A604BA8681D /* CustomStringConvertible.swift */, + B8091B2F3E27BF5E3A15457CDA62EEAB /* Deprecations.swift */, + B6CCA1EEE130F872890BF3BD21E3EF50 /* dispatch_promise.m */, + 2A880522AE506B0AF4BE47370B6B79CB /* Error.swift */, + 4DD8A29A4D99433BE10EBB9F6E4BC0CC /* firstly.swift */, + 51C9DD170C7BBA3B6D3CBF04C54C180E /* fwd.h */, + 4C54F0951D60C6F876148B8781CABCCA /* Guarantee.swift */, + 36D8B3BD95DD5A44165E1966A4E1E9E0 /* hang.m */, + EE91A3B39D3C21B86D3DCB2A26B599EC /* hang.swift */, + EA505320CA18CCC147004CBB5097B049 /* join.m */, + A7E00A5CB0347D5EEF2EE16A1EE7AF79 /* Promise.swift */, + F37EB3E2ED86D20827342533B53E287E /* PromiseKit.h */, + 396B8E6C99FB3E5DD98D80FB6653B257 /* race.m */, + D441A193362D82ECCA57314CDFB8C8A4 /* race.swift */, + F149B755513EA2D5853526907167D881 /* Resolver.swift */, + 25FD75371B807F2D440F8FBD44115FF7 /* Thenable.swift */, + AC4FFA0A353CD7959D1B53C0699E9A49 /* when.m */, + 22C5A94118F97EE5942F802F3697FC43 /* when.swift */, ); name = CorePromise; sourceTree = ""; }; - 7876869AA79AFDD4D8ED5A3466B54853 /* Targets Support Files */ = { + 97B0684DEE0B00E472CE968535CA9ED1 /* EthereumAddress */ = { isa = PBXGroup; children = ( - 92FD85D74F4A9F4F7BE14DAB1B15C925 /* Pods-web3swiftExample */, + D1FAD9AC3B72D90A0F780A8E523BA66F /* EthereumAddress.h */, + 41DFDB56EDBE11E1628DC294255473FC /* EthereumAddress.swift */, + EE9535C4DB976B3816901E33D1B905FA /* Extensions.swift */, + C068B09BF98A9748C7A7CB39755D5942 /* Support Files */, ); - name = "Targets Support Files"; + name = EthereumAddress; + path = EthereumAddress; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + A13AFA372133397D0113593937C862FB /* Support Files */ = { isa = PBXGroup; children = ( - B36AB396275697EEE1A5B13BA8A38FE3 /* Podfile */, - C022EC755760AE685F4C8C9446A520F9 /* Frameworks */, - 566EE770C47CF62C66CE98772C974B91 /* Pods */, - 68D1B13E7ACEC4FBBFF130BADA9C0A1B /* Products */, - 7876869AA79AFDD4D8ED5A3466B54853 /* Targets Support Files */, + 8676628BE0FD7AE803FCEDC64DEFBB12 /* CryptoSwift.modulemap */, + 2A3DBFE49993A10768C9E49994A5EB9F /* CryptoSwift.xcconfig */, + 5B76287A97F1D7DCF1A90139BAECD97E /* CryptoSwift-dummy.m */, + C294BB1CF898FEACCA694CE1C2FCA378 /* CryptoSwift-Info.plist */, + 1E4138C2495719AB1B7D0332DFD90EC6 /* CryptoSwift-prefix.pch */, + CF7941AF97680548B0BD0C1DD2C544FA /* CryptoSwift-umbrella.h */, ); + name = "Support Files"; + path = "../Target Support Files/CryptoSwift"; sourceTree = ""; }; - 801E9F7ACFC103048CD42CF93DF273A4 /* UIKit */ = { + A7583FF58BA6D284E6643A8F7770E45D /* BigInt */ = { isa = PBXGroup; children = ( - 8B27CD8CF6389981C93F9C70BB79806C /* PMKUIKit.h */, - 5AEAC26BB970A98BAA6CD7B30F5094D2 /* UIView+AnyPromise.h */, - FC8ECF2C2B981EAF227B97F9A951A7A0 /* UIView+AnyPromise.m */, - 16D7549432B0837431D33DAA92B9633D /* UIView+Promise.swift */, - 640FA460736D514832EF0074EDBC3B08 /* UIViewController+AnyPromise.h */, - F2EAAD5F932A97EA7947E900D8C2CC52 /* UIViewController+AnyPromise.m */, - 0067E4280866B4569D265E9F8C6294D4 /* UIViewPropertyAnimator+Promise.swift */, + 41453B796970559110DF331E26172E95 /* Addition.swift */, + 557BBD78923448CCB17512968E336941 /* BigInt.swift */, + 187A5E15B05A9B147AE7A0F885C7200C /* BigUInt.swift */, + 61DF0D0D9F38CD7E0C4634AE40C1E3D8 /* Bitwise Ops.swift */, + D920DBF4639E6BC5184AF5322C1EF718 /* Codable.swift */, + A98B647033331AC4C08615DB995A615A /* Comparable.swift */, + 44C05784A6396962ABADE3CB63C7A925 /* Data Conversion.swift */, + 154FBE294611B511C37A4ED891A2ADD5 /* Division.swift */, + 405936053125DEA78A495958B5B9927C /* Exponentiation.swift */, + 96C333B968D10726F7F27F0080B544C7 /* Floating Point Conversion.swift */, + C01A35536C1A25D92FDAD75FE546D05A /* GCD.swift */, + 368FB68985DB579B669C42584F1A1F72 /* Hashable.swift */, + 90B138E26CE6079A11EBCC7397EFBB95 /* Integer Conversion.swift */, + AE990037630914DF9DD1EBF428107663 /* Multiplication.swift */, + AAB7C80AC8C35B50D927596D426125BC /* Prime Test.swift */, + 81C66B0B08AF5D1C7E50E6C9FA5563D5 /* Random.swift */, + 7A2AAA080CDE548F7FC9C6472C9117A5 /* Shifts.swift */, + F0B650B4EEC9B0F9E323FE4ADD5DD916 /* Square Root.swift */, + EF28778D0C8FCA2C71AFDEB752FA7843 /* Strideable.swift */, + A040A172FFEA67777847EAE37A5F335C /* String Conversion.swift */, + C762DF6F4DCC7075D5A20D509892CAD8 /* Subtraction.swift */, + 51336AE6E4F580B8D502F100D05AD16F /* Words and Bits.swift */, + EAA1FF5DC76BF7E43D4F618FD7ED64FF /* Support Files */, ); - name = UIKit; + name = BigInt; + path = BigInt; sourceTree = ""; }; - 885494EA0A353D8564623BB7CB4A1C8F /* EthereumABI */ = { + AEF0FC508630081FE56DE6E404D166D8 /* SipHash */ = { isa = PBXGroup; children = ( - E9035FEAF1C6A112A846C1686B6AA6AC /* ABI.swift */, - A91B7CF43DB5A3F74C857AAED6F948BA /* ABIDecoding.swift */, - 421A57EB83513643E294B2EABE8B0200 /* ABIElements.swift */, - A563044196C737C050B34DF39F82E85F /* ABIEncoding.swift */, - 00E120CDD5DB9769DD2435516A1D4567 /* ABIExtensions.swift */, - AA7F8881DBA20F9015834FD7A4CF547C /* ABIParameterTypes.swift */, - 645B2C2B288B7EDC7BAAE3C5A2A09E04 /* ABIParsing.swift */, - 4174025F0AA7FD9B02D3F2F5E4F617BC /* ABITypeParser.swift */, - AA756D6EB06FD36B25464492744519A3 /* EthereumABI.h */, - FCE332AAEB30DAAD3224D662949A4CD5 /* Support Files */, + 99EC6BF69BACDC179D63343077FB8CC3 /* Primitive Types.swift */, + 18E3D910B3B82E797993D474CFC71714 /* RandomUInt64.swift */, + 9D998083FA5CCCF7EBE11B134EB20404 /* SipHashable.swift */, + 697EBA7EFCADD90100A87D335D6DF76D /* SipHasher.swift */, + E1179438CAE7CEECDE4C1D7D6B4E0449 /* Support Files */, ); - name = EthereumABI; - path = EthereumABI; + name = SipHash; + path = SipHash; sourceTree = ""; }; - 8A3093C26A8EDD229F38F6B4FAFDDE58 /* BigInt */ = { + B0595020760322B53A53B5B85FF0E3AA /* CryptoSwift */ = { isa = PBXGroup; children = ( - EA29F25C6AD9C57F2F030CC8D4401411 /* Addition.swift */, - DA422749FB6CE4DA61C615258DDD6B8B /* BigInt.swift */, - 37074DF9E43F92D14CB23B688C72FD89 /* BigUInt.swift */, - 8B77A44FBD3FAC28057C1887CC92B27D /* Bitwise Ops.swift */, - 3F1D07742B3A7F5A46E2A329DA441284 /* Codable.swift */, - EAD47A57A6C82649BA700C02D205C57E /* Comparable.swift */, - 607E73BBF9CE339CE9237C758D8B09FC /* Data Conversion.swift */, - 721C4F03AEEF9F7B6768DD8E1133971D /* Division.swift */, - 9D67481EE660CC4427780A510CDB6254 /* Exponentiation.swift */, - 82E1460DA79F21EF0A89758352102AA3 /* Floating Point Conversion.swift */, - ACEACA1521FDFD79ABA9485C777E5887 /* GCD.swift */, - F14FC9C9FAC7304FBF240BE3CFABC651 /* Hashable.swift */, - 79E721B30BBA223BA90A171B31127B5A /* Integer Conversion.swift */, - 8E47F8688C9AC60F086CAFF777392523 /* Multiplication.swift */, - 35B6B8F8751FD986339B26820E401B42 /* Prime Test.swift */, - 4B0FD4ABBB0CE03A9B8551B57E7B20F5 /* Random.swift */, - 2A30F7AD0E2CB204A73B0944A1D13857 /* Shifts.swift */, - C8F50F7F0D2F6591B93604E8BB87992A /* Square Root.swift */, - A21F7A460F24CED1DC6B614AF917C234 /* Strideable.swift */, - 612041911C9ABF085CC39D4CD9864737 /* String Conversion.swift */, - E1DFB901CA995F41CFDED832B5F38D3F /* Subtraction.swift */, - 04BC19C035A8C39D5226D8BEB0149F0E /* Words and Bits.swift */, - E13F39FA586DCA7D9A1C4CBDF5D4B26E /* Support Files */, + 7BAA04F2A5B0AFBA2BECB3E7363F3AC2 /* AEAD.swift */, + 5B943A8657BFAF48E9F2F4F1E3E2F543 /* AEADChaCha20Poly1305.swift */, + 612CA839D5B97DA037B60F55543ECA1A /* AES.swift */, + 94F82F7841D7037DB9711DE738D2F787 /* AES+Foundation.swift */, + 8D722FE65FAFAE40028C720E052F978E /* AES.Cryptors.swift */, + 03A7E1A019FA794592EDC36801071AC1 /* Array+Extension.swift */, + 111E62908255FA628399B6D0A60BD4FD /* Array+Foundation.swift */, + B2B9064EC3BE1A9C6EB75E912ED4BB46 /* Authenticator.swift */, + F662D5A0A16E6C9DEACA3767A9836AD5 /* BatchedCollection.swift */, + 52F054DE4FE4614D93C7848BE307E8F5 /* Bit.swift */, + BDFEC4814E5117A5F0A48ACF87F69323 /* BlockCipher.swift */, + 385538F5EA5F8E7D1A093D1AEB1A8C0C /* BlockDecryptor.swift */, + C568EB183FBB755447359C38525A008C /* BlockEncryptor.swift */, + 152631B2AC83D0E7DFC3CAE8DB858993 /* BlockMode.swift */, + 50A3EF2BAA8640478F2DAF7D0C9A4075 /* BlockModeOptions.swift */, + F8E0EFF29CA29705D10D9C5E74B8F54F /* Blowfish.swift */, + 0C48C05239F6ED9936C07B3EC1FD663E /* Blowfish+Foundation.swift */, + CD154EA3D19C13CA86EC21B415CAB05E /* CBC.swift */, + 307E43F0E39E10852F7614C717AA9E7A /* CBCMAC.swift */, + E36CBD6DA982F652B9E00122F3970967 /* CCM.swift */, + C64AC8AA3E75B66A1B1554F954F9C05A /* CFB.swift */, + AD9094C3262B9A88750EDE5EC8893309 /* ChaCha20.swift */, + 11CE75408CB57DDCD17E318DE453D56C /* ChaCha20+Foundation.swift */, + 1B103F7E3D0E413375E008114901E7F3 /* Checksum.swift */, + 041CC61E3D1010D65B6AC7BDA1106530 /* Cipher.swift */, + EE700E8BC85FBEC333D170049413CC0E /* CipherModeWorker.swift */, + 89DA7D0608E2C6E4F30C91CB552ADD93 /* CMAC.swift */, + 2CAD7B7651257EAA4ADB417492224FD9 /* Collection+Extension.swift */, + 1BE0C6BB35B7338337CC792C8011E8E6 /* CompactMap.swift */, + EDF60BB5F5D544A9B2BA4857654D2153 /* Cryptor.swift */, + BDC01204D56D1E7E53AE7CE1408143AD /* Cryptors.swift */, + 2FADC8AA5E66AC91B035868A375827D5 /* CTR.swift */, + 9236E71B3BC4A82CCCB3A8A7B6B493C4 /* Data+Extension.swift */, + 127CE34FA6ED8F87D1559E289DC81806 /* Digest.swift */, + 64D440F54CECE935D3F4ADC427EEE5CA /* DigestType.swift */, + F4429E4B96BA10BA786285923C0613A0 /* ECB.swift */, + F29D6A9677C6B8663CA6E02D8E7C7A0F /* GCM.swift */, + 47453013A4C06295E09A85ABC5DD101E /* Generics.swift */, + 5309AF23566A6EC930189B7F7E9FA755 /* HKDF.swift */, + 7298E7B1EFB94F71B97BF18841929F2B /* HMAC.swift */, + B5847C26F200A6C51FD16D43A80B740C /* HMAC+Foundation.swift */, + BA9ED7D68B33753A42A5D0FBDE38D9DB /* Int+Extension.swift */, + 6AA706569284A0C57DBD0DEB25EA91FE /* MD5.swift */, + F854DE682020809745DBAF00AA272D44 /* NoPadding.swift */, + F5ACF9F2CD8131267094BD2B909B5832 /* OFB.swift */, + 14907E9E8F614DA44E2DC8785BC8EEFB /* Operators.swift */, + 2B7903AA9DC0255E5B38B4C7F118AF00 /* Padding.swift */, + ECFA90A318474969AD8C5D1A2DAD6D0A /* PBKDF1.swift */, + B4C2F35038636BD2A176E453D53C5392 /* PBKDF2.swift */, + 318275089CE5164F855BFDF864084EE7 /* PCBC.swift */, + D8572B1E5B2DDC7E8EC266A5FB4B7B3E /* PKCS5.swift */, + 3B02B70AF6569F794B325DEF86DE4FCE /* PKCS7.swift */, + 7DE4D1208163A862D87DFAAB9ED0B6E9 /* PKCS7Padding.swift */, + FDE0E947B8B0B536536B0429E4FA0E7E /* Poly1305.swift */, + A812B34BD625FF46F7F8CEFD87A9853B /* Rabbit.swift */, + F2D27DD2D65C3C0C2C6E8F156D15CF85 /* Rabbit+Foundation.swift */, + 3F199E06D69BED833699993CE5D46281 /* RandomBytesSequence.swift */, + CFC6C386C9A8340C0F9092603654D35D /* Scrypt.swift */, + 9A624EBF9928B501D3FCB7063BE5134A /* SecureBytes.swift */, + D8C91CD35036A0608CA6AA2CE00B8C86 /* SHA1.swift */, + 9D9DFEE46F96369F7F23945C015338BB /* SHA2.swift */, + A812FBC3A42E16E11ECBFA15D3878CAD /* SHA3.swift */, + D35B316D7BFF89AD8711ECBF42C687A8 /* StreamDecryptor.swift */, + 62E6024723E8B18887F52F234C7FFDE7 /* StreamEncryptor.swift */, + 9CD313245E3D762D6C0E82E0D8ED78FC /* String+Extension.swift */, + D6F3EAF9A21316F32A846121C5A29C5F /* String+FoundationExtension.swift */, + 6EAF69FDF2A763839F4F67A787AA0401 /* UInt128.swift */, + 6117965527D1009FE20A946C6694F6C6 /* UInt16+Extension.swift */, + F31F770883EF864A1F37BCB7957A5434 /* UInt32+Extension.swift */, + 3BE87089D5CBC2AAE67715CF8FA266E2 /* UInt64+Extension.swift */, + 3A17861D5B7ACD7778C33A8118F906C0 /* UInt8+Extension.swift */, + A9FC0914E7065E79AD1618473FC13070 /* Updatable.swift */, + 917DD6006F6D77DD4E4F694702AC8476 /* Utils.swift */, + B85016ADFE09DC9B1E004271C55B8B2A /* Utils+Foundation.swift */, + 5CBAE5C7A018C513821FF23A227C3B41 /* ZeroPadding.swift */, + A13AFA372133397D0113593937C862FB /* Support Files */, ); - name = BigInt; - path = BigInt; + name = CryptoSwift; + path = CryptoSwift; sourceTree = ""; }; - 92FD85D74F4A9F4F7BE14DAB1B15C925 /* Pods-web3swiftExample */ = { + B5EA86789DAE1BA840F3A0F6A5EFAA4E /* Support Files */ = { isa = PBXGroup; children = ( - 212605BDAABCB644B1BE530E4FB54E28 /* Pods-web3swiftExample.modulemap */, - 3F60C33EFDC8C38C9856833234D8A26E /* Pods-web3swiftExample-acknowledgements.markdown */, - E87FE10BF7C41955C696DDC801AD6226 /* Pods-web3swiftExample-acknowledgements.plist */, - E440C4B74B44A098160068C009BA588B /* Pods-web3swiftExample-dummy.m */, - DA68C188563902BBADBF5288A07FA056 /* Pods-web3swiftExample-frameworks.sh */, - A222803A5470C0EA36B7E5CB379AA730 /* Pods-web3swiftExample-Info.plist */, - 5CB41387E485225E0BC8B079979EEF3D /* Pods-web3swiftExample-umbrella.h */, - 0D68B54C72B7D5CE7C1E985C3B853442 /* Pods-web3swiftExample.debug.xcconfig */, - 50ABF7F2053D09965350B67F7E0E76E2 /* Pods-web3swiftExample.release.xcconfig */, + 894AA8563DB203A203012C701CCDCA61 /* EthereumABI.modulemap */, + E78CAEAA47869AECF36B3846129E2962 /* EthereumABI.xcconfig */, + 622F11D4881071566066F35534A37A69 /* EthereumABI-dummy.m */, + 29AFBCBBACB9ED202BE9F76F1811500C /* EthereumABI-Info.plist */, + D91310BEE9B9CE3ED9A365B16E5A443A /* EthereumABI-prefix.pch */, + CBDF0C353A047CE42C219C152C68A1CF /* EthereumABI-umbrella.h */, ); - name = "Pods-web3swiftExample"; - path = "Target Support Files/Pods-web3swiftExample"; + name = "Support Files"; + path = "../Target Support Files/EthereumABI"; sourceTree = ""; }; - 93CD8E17641E019A6658DE6E52039401 /* Support Files */ = { + BDEEA55C74073E909F9A8B6577962E8C /* Support Files */ = { isa = PBXGroup; children = ( - ADD0134957F750B96160913F9E4240C6 /* scrypt.modulemap */, - C155FBFE5C0783AAC41449CB2DC87E51 /* scrypt.xcconfig */, - D31BE63B1625607EFBF7B6C4BD62A81F /* scrypt-dummy.m */, - 6CCF7466D93DF6DD36039CF7787829EA /* scrypt-Info.plist */, - 2AE7BC021750BDB389FD1880944E68FE /* scrypt-prefix.pch */, - 4621B79FEA77C668B08A9E4B0CF0C7B6 /* scrypt-umbrella.h */, + 914AA6DCC629CD7BF9E0AB7B0018B373 /* secp256k1_swift.modulemap */, + 11209CB934557C390F9C7BEB1FD06896 /* secp256k1_swift.xcconfig */, + 2F8C0D993DCA33A1CACE355EE970D0E2 /* secp256k1_swift-dummy.m */, + 495ADF5344211C91FDC965CF5303C592 /* secp256k1_swift-Info.plist */, + 9A1C2A2926FC74CAF77DBD8323DE0FBE /* secp256k1_swift-prefix.pch */, + 8589B5FA79D43F7D506021BE3BF49E82 /* secp256k1_swift-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/scrypt"; + path = "../Target Support Files/secp256k1_swift"; sourceTree = ""; }; - 9C4DB70411CDB99C0640965FF70AAD10 /* CryptoSwift */ = { + C068B09BF98A9748C7A7CB39755D5942 /* Support Files */ = { isa = PBXGroup; children = ( - C0A645643D765879996A0FEFEB17AEB2 /* AEAD.swift */, - DF5183A837EE103D3ED61CC8E3B718CE /* AEADChaCha20Poly1305.swift */, - 9E8AA6274AA01FA7275884BBF0D6F55D /* AES.swift */, - 4BC345225A9FFFEDFD6BCCDA6BB4F076 /* AES+Foundation.swift */, - CD71B2AA6261C81D5ABF5F0265397A1C /* AES.Cryptors.swift */, - C9430EC53743B45700079032E4A105EC /* Array+Extension.swift */, - 385D20AD0ACBC7A4B01C25373D9EFAD4 /* Array+Foundation.swift */, - 1681DF3FE5A4B672E29F13A64A64023E /* Authenticator.swift */, - 25FC19565DA49D793DF9A348F223CB65 /* BatchedCollection.swift */, - 71B0B58F78D56703F9250DC12E414AD7 /* Bit.swift */, - 5F5CDE3B4FB757B3F0106FD88431B923 /* BlockCipher.swift */, - 8DCCE88C733379B0F9674C1D490BB9A6 /* BlockDecryptor.swift */, - 1F8EADC5334750EDCBC7BE9F4D4D5B3F /* BlockEncryptor.swift */, - 68623D000FFCEB2CC7E1017DE7B6EAAB /* BlockMode.swift */, - 35FEE3FDEE40F28DDC2613F215AEB8CB /* BlockModeOptions.swift */, - BD1EAA1F2E44F11F5F6032A518194EC4 /* Blowfish.swift */, - 343E05569A3D9E6C883D808CAC28052F /* Blowfish+Foundation.swift */, - FCC16B752DB521904FDC01E24FB27FEC /* CBC.swift */, - E8022C2DF6B86FA23296F8458F4E400B /* CBCMAC.swift */, - 7DEACF2F1C7BBF71EA318C326FC4FA52 /* CCM.swift */, - 57DDA8DDDF0407F9774D0CD39E20307B /* CFB.swift */, - 89BFDBCFBC87AB9A6017F91C16B27016 /* ChaCha20.swift */, - DB7709D38F697152E97ECE038ACBA80E /* ChaCha20+Foundation.swift */, - B2B058F1081CD1680F4F90724970E88A /* Checksum.swift */, - 97FD3BB1D4FDE3CB8C92B9757CADD731 /* Cipher.swift */, - E0D72FEDC647B6917B3AE77954B91EF9 /* CipherModeWorker.swift */, - 51B1F68A1905071C4890C6F9B2280237 /* CMAC.swift */, - BE86F8153D27F10505EBD7D9EE3DC397 /* Collection+Extension.swift */, - 22F727E1920C23DF6FA25C828FF37AE0 /* CompactMap.swift */, - F3D67EF88FBE3D4B3938095FD5B0EF82 /* Cryptor.swift */, - 8117AC67014669B1DCFA347AA29688C0 /* Cryptors.swift */, - 34300D9F450A76F1C0795BAB8BBCE946 /* CTR.swift */, - 2614F5FD7FA2BFCEC145FF6C4B3A1D56 /* Data+Extension.swift */, - BB48EE8796E94C776DE21E16EC425E02 /* Digest.swift */, - D25C0FEDAE45115E5198FD4CD0052A48 /* DigestType.swift */, - CD3F88A45DE0134E5C0FCE9C79186C9F /* ECB.swift */, - 6D616168A7A23B7AB1995D8FCE9E3C53 /* GCM.swift */, - 131215941945D5345AF8A047A6629C21 /* Generics.swift */, - B5659C3AB77D7D5B8A5D896D5D8A6CA6 /* HKDF.swift */, - B93028ED0430293C54D4CC1E7348092E /* HMAC.swift */, - 2D4E60A3BD0A901CAE33DA9F09585890 /* HMAC+Foundation.swift */, - 26C2B3575B317F9C06CC8F79AFD07293 /* Int+Extension.swift */, - 4E04CEFD47ECF7B1AA7B9BA50AF1D68E /* MD5.swift */, - 4F90EA173730B99F47DB58B7C701FCE6 /* NoPadding.swift */, - 075602E81E3D61E019C955BD6AE18C7A /* OFB.swift */, - 155CFF09263570C89932D22E5B5D569D /* Operators.swift */, - D97CB39BF8F2C831589612CB2ED71D90 /* Padding.swift */, - 29D1BA04747B640515764C450DA1279D /* PBKDF1.swift */, - 354A0764BBE4CFAD623CB810FEC76817 /* PBKDF2.swift */, - A82F53B0EA3D0D57AFD5CD4C318D0647 /* PCBC.swift */, - 63FD588C06FA711CDCC9813DE8AAA0AF /* PKCS5.swift */, - FBECF12FAA0EF5E875B62B00A7B4DA50 /* PKCS7.swift */, - BFF0D31D5922EBAD0370E98046E7CC48 /* PKCS7Padding.swift */, - 229F4D226F1E6B09333978F7A65F9389 /* Poly1305.swift */, - 645D691F588C30A8463CBB40081960A8 /* Rabbit.swift */, - 79C644C44159127870FD19B2BECB6C9C /* Rabbit+Foundation.swift */, - 7471D4ED5465C42EB4CEE0034421F62D /* RandomBytesSequence.swift */, - B2DC451DC974D25FE7B1FECCA9C6EF51 /* SecureBytes.swift */, - 35A75E22FE221D90EFEAB4998EBFE2C6 /* SHA1.swift */, - F9574EEF332F3955B7C581226D05FE23 /* SHA2.swift */, - AF2F5DCD8B1BC4533ADECDBCF836DB84 /* SHA3.swift */, - 94A37DAF9BE9D2E3331448A566C065CE /* StreamDecryptor.swift */, - 2A2FE2AA1ED08312BA552C811B50A0ED /* StreamEncryptor.swift */, - DB40B5423FA265392DE07B1A21090637 /* String+Extension.swift */, - F94161FCBB26A0CF4D7B4792E7CC6394 /* String+FoundationExtension.swift */, - AA9960DB9976FF183310557C55A532A0 /* UInt128.swift */, - C5A89E2E2F70E548530DA60AF935479A /* UInt16+Extension.swift */, - 2A6500122B234FA6647C2568B72C2D9F /* UInt32+Extension.swift */, - 0DC0180CECBE311366353C47A894156A /* UInt64+Extension.swift */, - 385A9A999974E47DE373D35A9AC29663 /* UInt8+Extension.swift */, - 482D19E42A30F218E678D351C13B155A /* Updatable.swift */, - FBFD45FE4B26112E398EA7FD68047322 /* Utils.swift */, - E45FD0470EFD84FE77DAB6F17417FD48 /* Utils+Foundation.swift */, - 157ED0FBF8A2E71BFAA26655DA1359CC /* ZeroPadding.swift */, - 2B9CE0B991C87B26E9797739336B8A6C /* Support Files */, + 739E8ABFB940FFF4FA5070A4B3C594AD /* EthereumAddress.modulemap */, + F6C930A526E4E70E54230B535BC30CC3 /* EthereumAddress.xcconfig */, + F5767D1D9C884A9ACA6735647B0A3CFC /* EthereumAddress-dummy.m */, + 7D72E154FD99D305BB0B1982450D0344 /* EthereumAddress-Info.plist */, + 2BB9DBF67E5ACD64E567151CCF4C8078 /* EthereumAddress-prefix.pch */, + 023FF709B57E86B5145F82B021B235C5 /* EthereumAddress-umbrella.h */, ); - name = CryptoSwift; - path = CryptoSwift; + name = "Support Files"; + path = "../Target Support Files/EthereumAddress"; sourceTree = ""; }; - B11B364D911E9487A929B8CA5C21BB80 /* Support Files */ = { + C194FAFEBD0A35247AF9E579DF49CF17 /* Support Files */ = { isa = PBXGroup; children = ( - 3966403CAFDAEF596DC3EBE24F85A758 /* EthereumAddress.modulemap */, - C3E5F4E53C7409FF85C72B92885F1280 /* EthereumAddress.xcconfig */, - B841E74E11C4190F2742A482D1624F6F /* EthereumAddress-dummy.m */, - 4D7C4589F40A8060A568CB4849358370 /* EthereumAddress-Info.plist */, - AD42971B0221AEDB96DC65F82F3CC2DD /* EthereumAddress-prefix.pch */, - BD07049E8559AB824237ADD96BD4AC9B /* EthereumAddress-umbrella.h */, + 8A3BEDEE49568F7351847A61B63D3B8A /* web3swift.modulemap */, + DFEBD29CE5E90435A009304519CA3C67 /* web3swift.xcconfig */, + 03807B2A7B52DD398BBA81C614D9159E /* web3swift-dummy.m */, + 6975A21C72658554DC246ADB90824CB7 /* web3swift-Info.plist */, + F53052E8D17344F009382DCB1F8417D2 /* web3swift-prefix.pch */, + 46B9866EC0627510630500E8D61406C6 /* web3swift-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/EthereumAddress"; + path = "../Target Support Files/web3swift"; sourceTree = ""; }; - B12B7C782A5F4D4BC0D7F4BA389DBBD9 /* Foundation */ = { + C36BC32CE476ACAFBE4CAA2243B3E96B /* Support Files */ = { isa = PBXGroup; children = ( - 152A06BD6C4ED16E8910C53F87083FE8 /* afterlife.swift */, - 8A8DFF2DF324A4D832DD8653C502500D /* NSNotificationCenter+AnyPromise.h */, - F52D61D44F96B6B6F0BC62D02E5235F3 /* NSNotificationCenter+AnyPromise.m */, - 388C6DA468CB9B1A2BD750A77262C56F /* NSNotificationCenter+Promise.swift */, - 16B862B079586F6EBC6B4D190AC2686A /* NSObject+Promise.swift */, - DA539D1F3176FABFF9035EC2FDFD30B4 /* NSTask+AnyPromise.h */, - 481105AB5C9354EBAAB3E816CFBF3D9A /* NSTask+AnyPromise.m */, - B973550AEC743886DEFC6C426DE82DAB /* NSURLSession+AnyPromise.h */, - 0A4B692E5A925A941AA99C0BCA964506 /* NSURLSession+AnyPromise.m */, - BB666C41E45C6ABAB0192295B1ECAC7E /* NSURLSession+Promise.swift */, - 0BF4714912851ED7D22D2EF0B37D9625 /* PMKFoundation.h */, - 1CEB1E0F5569F3E140EB5B421C414467 /* Process+Promise.swift */, + F83526C9C26936D7D292900E3A69B0E9 /* PromiseKit.modulemap */, + F5E999FAD1A123E4CE79BC495D03CA13 /* PromiseKit.xcconfig */, + B738DB5B488759B200DE7109430D3708 /* PromiseKit-dummy.m */, + CDBCA4EB75EABAE369BD0A5E42BBBBD6 /* PromiseKit-Info.plist */, + 5DE399FA931EB8FF8EBDD439922E9DF0 /* PromiseKit-prefix.pch */, + 65B68BCBEA2A49C214C45E571D3B8784 /* PromiseKit-umbrella.h */, ); - name = Foundation; + name = "Support Files"; + path = "../Target Support Files/PromiseKit"; + sourceTree = ""; + }; + C4FD88D77A5754117AC16A477C78D237 /* Starscream */ = { + isa = PBXGroup; + children = ( + 7C8AD803BA9C548885C8AAAC9812B73D /* Compression.swift */, + 6D9F5069A0BD2E4EDDF30740E5A06FAE /* SSLClientCertificate.swift */, + 586A2E20A359514DBF452FDD02807493 /* SSLSecurity.swift */, + 6A02820FAF7C58526D6827739E4D806B /* WebSocket.swift */, + D14F23537704C9BDCF99C23F79B63822 /* Support Files */, + ); + name = Starscream; + path = Starscream; sourceTree = ""; }; - B40F0123C9DC9C6FEB3F45C2DF44D3B2 /* Support Files */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 1E3FA1F8BFCCBE4D42BF07BA07CD266D /* secp256k1_swift.modulemap */, - 9F82B4DF8F6B62E706B8BDDEB0749787 /* secp256k1_swift.xcconfig */, - B6C8DFD047D7C6E855F9CF2F1A3AD7B2 /* secp256k1_swift-dummy.m */, - 0DFB8B8BF7DABC99D98F847DEE91FA95 /* secp256k1_swift-Info.plist */, - EEA5EE21242C99256629F5CB60D2DB9B /* secp256k1_swift-prefix.pch */, - 6376866618A41A278BF5C4477B074CD1 /* secp256k1_swift-umbrella.h */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 6741D76B0FF7EA193F24EECC538F14E9 /* Frameworks */, + 209979C32E7FBD13552CB5D9B73DE7A9 /* Pods */, + 2C29F4CDA41D852BAB165733A044ED04 /* Products */, + 113002ACBEDC6601E96EE02BE82322B7 /* Targets Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/secp256k1_swift"; sourceTree = ""; }; - BA8DF42D89FC47CD765C3709901F879A /* iOS */ = { + D14F23537704C9BDCF99C23F79B63822 /* Support Files */ = { isa = PBXGroup; children = ( - 1523249C10D0B6DDCE2D75CC807474FE /* CoreImage.framework */, - 2CA9EA2C365EB827AA8A2EBE27EFB42B /* Foundation.framework */, - E9A23377D2BCFF84DA71D73288B88475 /* UIKit.framework */, + F5C1F6C41E1AF09051D403236102FE3F /* Starscream.modulemap */, + 7520141500C15323EA4BB462348B9564 /* Starscream.xcconfig */, + 6FD0D7AC5B9F0A11F3025F221B27D4CD /* Starscream-dummy.m */, + A61B4B48C5269A8484FC3715B75AE277 /* Starscream-Info.plist */, + 9ACEB954A399D989AF78D6DA6229BD4B /* Starscream-prefix.pch */, + BA235879D4DBDA4C65651854023BE0E8 /* Starscream-umbrella.h */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/Starscream"; sourceTree = ""; }; - C022EC755760AE685F4C8C9446A520F9 /* Frameworks */ = { + DBD99B90E4D3190A27F719AD5EE14769 /* SwiftRLP */ = { isa = PBXGroup; children = ( - 72A31D2A6C2335199394826F5AB60411 /* BigInt.framework */, - B1079CE813B6ADE402DA1A75AC3BEF4C /* CryptoSwift.framework */, - E16B8BF7D2F429329E671B5BE4F1AC8A /* EthereumABI.framework */, - 941616C02C90CB37792EE5D074B65DA4 /* EthereumAddress.framework */, - 6C63E5B7E9EA6F822D6C2F402AAC2856 /* PromiseKit.framework */, - BAF13C2624A2802FFFD9EC2F84F2A37F /* scrypt.framework */, - 7E28680C25D59F4AB8FD5D60B2209576 /* secp256k1_swift.framework */, - 44C36C457BDC5A424B73FED2BF2B0CF7 /* SipHash.framework */, - C7BA3CDDCDFEFD9BED027AD46F60FAC0 /* SwiftRLP.framework */, - BA8DF42D89FC47CD765C3709901F879A /* iOS */, + 18E2E477B483D30C6674733417033C16 /* RLP.swift */, + A72F0169D086F56E0583F2FC87090068 /* SwiftRLP.h */, + 486D87B949704EBAEEA8961EAC612010 /* Support Files */, ); - name = Frameworks; + name = SwiftRLP; + path = SwiftRLP; sourceTree = ""; }; - DD49D7A3E017049BF4628CE18A72703A /* Support Files */ = { + E1179438CAE7CEECDE4C1D7D6B4E0449 /* Support Files */ = { isa = PBXGroup; children = ( - 8DD93FFA0B424475376B46830EEF26BF /* PromiseKit.modulemap */, - 18496389CA5CA7BCFD42408FBE3EFA35 /* PromiseKit.xcconfig */, - 294830F3AC6CB12044834E8F72282F23 /* PromiseKit-dummy.m */, - 2CEED24514490DF573FDE87A9F9F8971 /* PromiseKit-Info.plist */, - B35498E6C67F20805E9F3004C2F64431 /* PromiseKit-prefix.pch */, - D587E4DB61D38FF4A1CBEB61903470D9 /* PromiseKit-umbrella.h */, + 30C6D398453783EE23669AC2D1D73A59 /* SipHash.modulemap */, + 5D2DB9499C8C203F2AA7345E283D63F0 /* SipHash.xcconfig */, + 185F4D997295129FC3B6DF6540161887 /* SipHash-dummy.m */, + 20F0F90A5824FD95E24BA89E99F8AE37 /* SipHash-Info.plist */, + C00BF9D4768C430B003D4018E0D09F23 /* SipHash-prefix.pch */, + 2F3654A5FFACBE11A8A040D32B584DA7 /* SipHash-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/PromiseKit"; + path = "../Target Support Files/SipHash"; sourceTree = ""; }; - E13F39FA586DCA7D9A1C4CBDF5D4B26E /* Support Files */ = { + E2F5D54E4AB6375840523EDBA1BDA4A9 /* EthereumABI */ = { isa = PBXGroup; children = ( - 0A26DC099A8624856C0E02348C24EF20 /* BigInt.modulemap */, - 22044D50374EB3808D2F5A905DD1D63C /* BigInt.xcconfig */, - 7411A68C8F8AC8841EA5B8E91256B11E /* BigInt-dummy.m */, - 3F5A8DB4C575C89D51FB8509B3F37D66 /* BigInt-Info.plist */, - 03604607591154D9EFC0F58517C88BB4 /* BigInt-prefix.pch */, - 77CA60485E13EAE74EE80CFC886BA2AF /* BigInt-umbrella.h */, + 26DF097B4C6E873C96CFB513E5B8EF9D /* ABI.swift */, + 3B84A6499FA065A0524CE43C0EC5C624 /* ABIDecoding.swift */, + F30094CC8CD0DCE8CC2D2DA45F826500 /* ABIElements.swift */, + 86C9BD89A449DFB19ADD2B6976A30CC7 /* ABIEncoding.swift */, + 97CFD9093CD5433F30DC536102C9FB69 /* ABIExtensions.swift */, + 87601F0E5B299447C7A9C0252EEA9AB7 /* ABIParameterTypes.swift */, + FE030C7B7D6307F5FFD7E0945AC6A435 /* ABIParsing.swift */, + AA1D2D03C1B7E7FBB721F21A151C7B36 /* ABITypeParser.swift */, + B6F4F23D936E9C244310DC674062B2C8 /* EthereumABI.h */, + B5EA86789DAE1BA840F3A0F6A5EFAA4E /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/BigInt"; + name = EthereumABI; + path = EthereumABI; sourceTree = ""; }; - FCE332AAEB30DAAD3224D662949A4CD5 /* Support Files */ = { + EAA1FF5DC76BF7E43D4F618FD7ED64FF /* Support Files */ = { isa = PBXGroup; children = ( - 0E23F15DC6BEBFD7CAA793A040E31531 /* EthereumABI.modulemap */, - FCF992981B15E8A639208AFD0BC42E16 /* EthereumABI.xcconfig */, - B58E7023F7E6C8655D6D9028C7AF2698 /* EthereumABI-dummy.m */, - B9E1EEF85DD107F933904E8D4BACCF31 /* EthereumABI-Info.plist */, - 494227A474FF5A70499FC2D9B78A674E /* EthereumABI-prefix.pch */, - C2F73E4913951241E69AB369E29AA841 /* EthereumABI-umbrella.h */, + 9F4296392E9A72F7CE18DB0948F55833 /* BigInt.modulemap */, + 4B5645216773F21B1489099DB3EDE72E /* BigInt.xcconfig */, + 72F0A143D24A413EB5CAA1E356DF797A /* BigInt-dummy.m */, + 96A2B8AA46D939C787EA02A0339E578D /* BigInt-Info.plist */, + A22FA816BFB7BEB4C5CEEC98FA609841 /* BigInt-prefix.pch */, + EB496234A1CD0207ED440D93CD922589 /* BigInt-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/EthereumABI"; + path = "../Target Support Files/BigInt"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 09EADEA037FE0B8626C8AEE86F19B108 /* Headers */ = { + 0BE4AA1CFB0BFCC908FBF0366C02A73B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 60F020078907CC571799F8EEE8657FD0 /* SipHash-umbrella.h in Headers */, + 1BDA674B011972EE9EDC32ECAC1D3663 /* CryptoSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 0C168A5EF4886177112CA4C18D1F0276 /* Headers */ = { + 1738904DFA435862B7A02C8B389C6FF1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6F6C871948F22A9D109DE34B8388488D /* Pods-web3swiftExample-umbrella.h in Headers */, + 569585A743D48C7CEE8A74BEBA8164C1 /* SipHash-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3FD102C69B8A80AA835E2638D0C66C4F /* Headers */ = { + 1B3316232227C1728A5C8176B3F0131F /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 37FA075C16F67C2E4B98C4D34A8C00E5 /* EthereumAddress-umbrella.h in Headers */, - AD251E7937B3885E2B635F6FE675F9CC /* EthereumAddress.h in Headers */, + 2400578287B976F7DAF30F21732D4E72 /* EthereumAddress-umbrella.h in Headers */, + EF71B6FDDFA1835F1A2281440847B73C /* EthereumAddress.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5376B8CD2A97FFFC91ACD7712C08EEB6 /* Headers */ = { + 2469B1485AFE4961A0EF0D8AD3FC2D35 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C44AD471D7A7916A140FDE4609781022 /* web3swift-umbrella.h in Headers */, - A5219D81AB8FAB98FEEE7B7F4ACF937F /* web3swift.h in Headers */, + 7BF7B5E46E8DBF32B8780FDB25620247 /* BigInt-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5BB7A0FCC95EC7CD413E98D637584D9A /* Headers */ = { + 3296BC8B74D75EC268D04FD0DCC33341 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 545072A7AC12349191FBBEFCDE711892 /* EthereumABI-umbrella.h in Headers */, - 099726630FECA2EBB07D4AD11FC8AF8A /* EthereumABI.h in Headers */, + 39FA04B532B2F43A25659FEAE5105DB3 /* EthereumABI-umbrella.h in Headers */, + 6827684798D73E626CE1AB8A41217248 /* EthereumABI.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 774228ED792886C81715D8A22C69639B /* Headers */ = { + 54007E416ADC50FE0DDA3B0AE248056E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 71B9B8543875E4E32E42B4A9A1312C01 /* BigInt-umbrella.h in Headers */, + 137020DFE1159393BA6D803053E21577 /* basic-config.h in Headers */, + CEDB5701D3AC439049E58FA13B7560FB /* ecdsa.h in Headers */, + 17E9D5F43CC7338854182B8277B2856A /* ecdsa_impl.h in Headers */, + F3472BA73F530CB665A1514C0FF621C0 /* eckey.h in Headers */, + 1EF21CBA6598DA29671E01F65D74F9E9 /* eckey_impl.h in Headers */, + 19CB0499AFA7DA400A38145DFB3A7AAF /* ecmult.h in Headers */, + 67126E7311E315C7C13E1F1B1687CE01 /* ecmult_const.h in Headers */, + BD3E19C4FD44CC951EEF70A34AD4891D /* ecmult_const_impl.h in Headers */, + 2593C0EBEF1B2E9CF107CC42EE65ADAC /* ecmult_gen.h in Headers */, + D263E933C406C5EDCCAE7616570DBB5D /* ecmult_gen_impl.h in Headers */, + 0F9B2BD3E64370C9656C0A33C70EA3A4 /* ecmult_impl.h in Headers */, + D17FD9B35E2F7E2C0E5E721E9A376953 /* field.h in Headers */, + 7B1B48055DD612291F37CBBCDC1A6F6F /* field_10x26.h in Headers */, + D4117503FEE83DE0D129B52CAAEBED30 /* field_10x26_impl.h in Headers */, + 3D9116A1A92509182992783CFBE600FE /* field_5x52.h in Headers */, + 64A8D1606C9375CB1920D841784DB1BC /* field_5x52_asm_impl.h in Headers */, + 7824695667110A5B9F9744106916AA8B /* field_5x52_impl.h in Headers */, + 3EECF706637062DE793A3647EF8F2CED /* field_5x52_int128_impl.h in Headers */, + F69D4C4B05E881C907E5E7B2CF317E15 /* field_impl.h in Headers */, + 485B976BC4E36F6EBA19EFB58D39BE4C /* group.h in Headers */, + 689CE439E38E23479ACD543E604E1650 /* group_impl.h in Headers */, + 10D0F980DE69DD8C276EDAE2917F5C7E /* hash.h in Headers */, + 9E584F08ABE7E197F6010BE7769FBB19 /* hash_impl.h in Headers */, + 918FDE716EBB465A71AF205AA52EBEE0 /* lax_der_parsing.h in Headers */, + E7053730E7E35E480920F0BE0503F623 /* lax_der_privatekey_parsing.h in Headers */, + 36B264BDAE45EB5FD44EDA51E9C33B09 /* libsecp256k1-config.h in Headers */, + E2D92A1070C0F01039E9778C2167862C /* main_impl.h in Headers */, + D97213DBB204987067FB39F63E40F01D /* main_impl.h in Headers */, + 58BC63929C10738DD4471C2EA0F27794 /* num.h in Headers */, + FB4BFC0EB20BDEF04F6EA7D60C961F5E /* num_gmp.h in Headers */, + 40A40B1FE05CA18F8D29E9EBA6CAFE2B /* num_gmp_impl.h in Headers */, + 20124CAD3985F694B8ADDE98270CA4E6 /* num_impl.h in Headers */, + 092841DCC0E285946E1B8BC8ED871726 /* scalar.h in Headers */, + 2DBC1D098FA55CED6D8659BDCAA8E09C /* scalar_4x64.h in Headers */, + 28BAD58EA9F935FA593279B0657B293A /* scalar_4x64_impl.h in Headers */, + BC73DEF2CFD58CB787EED6AE90FFE74F /* scalar_8x32.h in Headers */, + 08A9C218D7F778DDACAE7525750FD085 /* scalar_8x32_impl.h in Headers */, + 0DDAE49169F8F9D22C1C8ED630EC645F /* scalar_impl.h in Headers */, + A0CE44BEF296C3E6832C92C84CECC103 /* scalar_low.h in Headers */, + 15BC7ADCEAE008C7BB25629191E92DCC /* scalar_low_impl.h in Headers */, + 6E9F8614391C41F26ACA75DE02C4E060 /* scratch.h in Headers */, + DDFEA70C9428718B1CE189FF5E183107 /* scratch_impl.h in Headers */, + 6D83B2069750A00D38195608CF0D3D2F /* secp256k1.h in Headers */, + BEA21F7684A83CF6D28751E76CBE8A2F /* secp256k1_ecdh.h in Headers */, + F8F08340D2D4EA06141BC0EE1CA2A993 /* secp256k1_recovery.h in Headers */, + 823817498AB20AC2A1396F9039B8D54E /* secp256k1_swift-umbrella.h in Headers */, + 485809A54233FF5182F63963EDED81D2 /* util.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 885669ECE3BA275A55A9CA84B82533A3 /* Headers */ = { + 754A32C7E4D922F8B4AB30FD866AB29A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B8DC123A6746FD918E04ADCFA8094147 /* Cimpl.h in Headers */, - C011B8342C7D5C803CD654A58A8F21AB /* scrypt-umbrella.h in Headers */, - 9287C7AC61FE25FB9FF2E4F9E8B30EAA /* scrypt.h in Headers */, + 5DF1B55FF04B593538DAB67A1A992E78 /* Starscream-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - C9B8F223C5191C06610567F142437FA1 /* Headers */ = { + 830407B847A0A78D5EF2C388457A84F5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A3B3988D1BE65A4B037754384D6E2A8F /* CryptoSwift-umbrella.h in Headers */, + D9AA6F1CDDACA23B02C06B73C49BA20E /* SwiftRLP-umbrella.h in Headers */, + 4930EA77EFE3653DEFAFAC580D4DB29F /* SwiftRLP.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - D8B7AAB5D3C05844B4F46DAE81F4AB3B /* Headers */ = { + 95B5C10AB253640F7B467B00DC3B5B48 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0114776105F37712925C78AFD61BB3C8 /* AnyPromise.h in Headers */, - 16825050009C6130264514984322E53E /* fwd.h in Headers */, - 5FECFB6E129027D7F9AF207C8D0C6BBD /* NSNotificationCenter+AnyPromise.h in Headers */, - FFF6A96467984411196597CEC016AB21 /* NSTask+AnyPromise.h in Headers */, - 00D63A39FF4BCFF87172262A842DF6C1 /* NSURLSession+AnyPromise.h in Headers */, - C8095F1D83EA88E00DD945FCB0469AB2 /* PMKFoundation.h in Headers */, - 18B9BF798396486AD4D880820C7B8FBB /* PMKUIKit.h in Headers */, - C1B356D260ECFA714AEF597CE84D6ABC /* PromiseKit-umbrella.h in Headers */, - 41BAB1AD1A86E1C6887B9B4E51062334 /* PromiseKit.h in Headers */, - 20E69749F66B1F259ADE99CE77510E86 /* UIView+AnyPromise.h in Headers */, - ADF81CC0E5C27480ACC20BD37F83FD34 /* UIViewController+AnyPromise.h in Headers */, + 5C5013823C8ED6F03F2560284AE8AFDB /* web3swift-umbrella.h in Headers */, + 1FE81E3F51E4127034F082C358308DF4 /* web3swift.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - FB5BC8AE607FB814C8E7F9F6A7F90F2E /* Headers */ = { + A1BC86C1682743CE880116ACE8ACB1C7 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DA44967E128BD7BFA50F2906B0B2C9C6 /* basic-config.h in Headers */, - 2B3D97CEDF72234F8338DBA2A776981E /* ecdsa.h in Headers */, - 7044BEFED772CD5C713B2A696EB5677C /* ecdsa_impl.h in Headers */, - 39D3E32B3C0AEB691E5FECB13A908C30 /* eckey.h in Headers */, - 207A6AA7B3964F426472BCBBAF43B4C8 /* eckey_impl.h in Headers */, - AF0206170C3EFE4D74D35A99947F570F /* ecmult.h in Headers */, - B52C9675931CFC0A3E9EC8F555FB75E5 /* ecmult_const.h in Headers */, - E10034AED811B87BB547AED12B01AF19 /* ecmult_const_impl.h in Headers */, - 9EE756BBA1C25C5334454ADEB97A6853 /* ecmult_gen.h in Headers */, - 10C957749713BC793603740385D0626B /* ecmult_gen_impl.h in Headers */, - D3EB8E2BA9D69A1AB9BE406CCBF38946 /* ecmult_impl.h in Headers */, - 5D5489F38221F4707C34636CCB7D4963 /* field.h in Headers */, - C9E64C6119BEE088DEA38EDE36913847 /* field_10x26.h in Headers */, - D4FD2B2BE9EC95B59458C3784C1C77AF /* field_10x26_impl.h in Headers */, - 129F0091AD9F73727DC021D80D9AE867 /* field_5x52.h in Headers */, - 821C63EC05763CA91EEB51F9F66F190C /* field_5x52_asm_impl.h in Headers */, - 9079C576ED6D091E0EF1CEC6F245E4F6 /* field_5x52_impl.h in Headers */, - 6558636833F1C0D47A09F6C39FD48D3F /* field_5x52_int128_impl.h in Headers */, - C943B4DB127AA6A95B94A3630D9DEBFA /* field_impl.h in Headers */, - 991B88B320A6E9AFE3130717758335A7 /* group.h in Headers */, - A921B2A1FBDD346696B21EA3A626D6BF /* group_impl.h in Headers */, - 6D29054961223E11C2A32A32032F38A7 /* hash.h in Headers */, - 95C90ACFF4618049BC4EC1D1C5C653DB /* hash_impl.h in Headers */, - 7154FAFB7DCB6C047A6C736C3529A641 /* lax_der_parsing.h in Headers */, - 3460C937428BE40A5EB9AD6BE6D3B650 /* lax_der_privatekey_parsing.h in Headers */, - E60D4C87A96FCA917970FD522CA8F9FF /* libsecp256k1-config.h in Headers */, - 66919D153FD4C36C6C0FA23311C4DF2C /* main_impl.h in Headers */, - 5AAAC38308E507E5B37AA6E6072EA794 /* main_impl.h in Headers */, - 1EBAC8CB64B0FAC21B0C3B2BBFE3258A /* num.h in Headers */, - 8D50304A146D00984E177A1B0C3B77A6 /* num_gmp.h in Headers */, - 049D031BED9DADA0C433EC8B51B9128B /* num_gmp_impl.h in Headers */, - 3762DF18DBCA1CD6327DA092A53FD656 /* num_impl.h in Headers */, - ADC99CB22E2067F475404C536C15D9AC /* scalar.h in Headers */, - DE126CF9A74B3DC25B39B8FA01484B2E /* scalar_4x64.h in Headers */, - 2FB075849D825ACCE5D39FC1134DDA52 /* scalar_4x64_impl.h in Headers */, - 86386DAD1D84EA856F9B41DDC716BB96 /* scalar_8x32.h in Headers */, - BBFB0A0A67B23D871F7CA36DAB0DC776 /* scalar_8x32_impl.h in Headers */, - 341666F42728D7D66C5E013E293951E5 /* scalar_impl.h in Headers */, - C3051783E23BFA409BB94984B8505ABA /* scalar_low.h in Headers */, - 7DF26B5CC31B57CD332F926B91A1C24F /* scalar_low_impl.h in Headers */, - D54E7F5BCDF745F7613DFF701A32B600 /* scratch.h in Headers */, - 168E8B4DAC99CB82C85DB4B08F34DC85 /* scratch_impl.h in Headers */, - 49D9F7F3B2F1AD0781104D1902298F85 /* secp256k1.h in Headers */, - A3A9CC68C76881419F9C084AE9F3A323 /* secp256k1_ecdh.h in Headers */, - 574B700620BF7CC0B73445134713E7AB /* secp256k1_recovery.h in Headers */, - 54737940C4BF6C198B0B08F053497650 /* secp256k1_swift-umbrella.h in Headers */, - A92A096CDDCA083FB9B56A82D6B89291 /* util.h in Headers */, + 2F338BEECEAA54AE7C8E865AD363A7DF /* Pods-web3swiftExample-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - FCBBD0298627F98D8A79A55DCB756ED3 /* Headers */ = { + A553FDB16CAF57F98864076F83AB5508 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 469E4F38A99F2B1AF8F354AC44AE3683 /* SwiftRLP-umbrella.h in Headers */, - 28A68791268A1C0C4CA0178CD44543B3 /* SwiftRLP.h in Headers */, + E22F33B88AE57C602515A2154EB1AB1A /* AnyPromise.h in Headers */, + B3E1DAA96C383AC98617ADC3BDF9E09F /* fwd.h in Headers */, + 345E4531E07369F280F7E8214B05DADD /* NSNotificationCenter+AnyPromise.h in Headers */, + 3619B46B87200D1E11E25EEDBF5AE223 /* NSTask+AnyPromise.h in Headers */, + 614A22F66E15044F86947CA566EB9B1F /* NSURLSession+AnyPromise.h in Headers */, + B762A63D686AD97A5E9EBA7B857FB2C0 /* PMKFoundation.h in Headers */, + 06B89A538A9B9179055CFAE9B6F4BB95 /* PMKUIKit.h in Headers */, + B32832D54AD45BDA10EAB735065123B2 /* PromiseKit-umbrella.h in Headers */, + DFB53C326805859F4437E5C1253B7BC9 /* PromiseKit.h in Headers */, + 0A2BFB69ECE30D2C72D7817DDBBFA714 /* UIView+AnyPromise.h in Headers */, + 0C901D0BA756E4524BC80BD9E4D51EED /* UIViewController+AnyPromise.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 0ED0B491AE891D6CDC3963787F0E2DB4 /* scrypt */ = { + 01FB31BC868580C5272945EF4898FD10 /* EthereumAddress */ = { isa = PBXNativeTarget; - buildConfigurationList = A6E58A79C2F9A35AEE755C5EE9939C14 /* Build configuration list for PBXNativeTarget "scrypt" */; + buildConfigurationList = D1DF101D37777E17F14B44C2C01FADE3 /* Build configuration list for PBXNativeTarget "EthereumAddress" */; buildPhases = ( - 885669ECE3BA275A55A9CA84B82533A3 /* Headers */, - 26B1A5BC43F128F14E41E79BD5341224 /* Sources */, - FD219DA880ECB1264A9E2956C0B80BF2 /* Frameworks */, - 108DAA910E2C213632945B1B7282D96E /* Resources */, + 1B3316232227C1728A5C8176B3F0131F /* Headers */, + 19F4A6BB05675F0032F345E6D6DE52A2 /* Sources */, + CD34337F16E8A7771A15E889ED90DD17 /* Frameworks */, + E693CE5F5274A604682B77B35EAE8632 /* Resources */, ); buildRules = ( ); dependencies = ( - 6136549AD271A8B68F4A487F363AEE56 /* PBXTargetDependency */, + 1EFA4D0E76662C95C3AAA39D10B5AB0D /* PBXTargetDependency */, ); - name = scrypt; - productName = scrypt; - productReference = 68E6E31894426B0E48756676D9FEA4D8 /* scrypt.framework */; + name = EthereumAddress; + productName = EthereumAddress; + productReference = AC9A8D265F34E698FE7B5B2EB20BCEBF /* EthereumAddress.framework */; productType = "com.apple.product-type.framework"; }; - 137411A4D3CCDCAE6EE1A79271E0889C /* BigInt */ = { + 09DD83B7D075842A3A5105AD410BD38A /* BigInt */ = { isa = PBXNativeTarget; - buildConfigurationList = 64983011E689E8B1A79C910DC9586585 /* Build configuration list for PBXNativeTarget "BigInt" */; + buildConfigurationList = 5EE3ED6F3666044FA2B4916121D34541 /* Build configuration list for PBXNativeTarget "BigInt" */; buildPhases = ( - 774228ED792886C81715D8A22C69639B /* Headers */, - 876CA817B2DD9F8DD2A4932BACF03F12 /* Sources */, - 043A44B6F07B17B9FDB237C80C547215 /* Frameworks */, - 1AF3324DAB2C8E0DD11A0DEC66CD5799 /* Resources */, + 2469B1485AFE4961A0EF0D8AD3FC2D35 /* Headers */, + E7EC6FEB1BC28AF474ADC8A717580EA2 /* Sources */, + 65AFBD9FBBFDA3060C552B1AF411C38B /* Frameworks */, + 1F73535EFE67D8E69126259B7BB920FA /* Resources */, ); buildRules = ( ); dependencies = ( - 61069262FD5BCD41F1C291E25CAF599B /* PBXTargetDependency */, + 5AEE870C1EA199727D1407490D01487D /* PBXTargetDependency */, ); name = BigInt; productName = BigInt; - productReference = A5A3BA2300413041BDAD20538CC2A0CC /* BigInt.framework */; + productReference = AA15A806485AD56785C00F606BF15E41 /* BigInt.framework */; productType = "com.apple.product-type.framework"; }; - 4FF76C9CFB6B4346A2DDCAAE6E407CEE /* Pods-web3swiftExample */ = { + 1ECDC9F47366DF4A1AB7E689B87D9D0E /* Pods-web3swiftExample */ = { isa = PBXNativeTarget; - buildConfigurationList = C991C998C17793DAA7BA2414E0DF3A40 /* Build configuration list for PBXNativeTarget "Pods-web3swiftExample" */; + buildConfigurationList = 80CC1F16140AD30FB68113BF6BF248F2 /* Build configuration list for PBXNativeTarget "Pods-web3swiftExample" */; buildPhases = ( - 0C168A5EF4886177112CA4C18D1F0276 /* Headers */, - 1751A2325AEF0209922ADB9422A536AB /* Sources */, - 97B4064DB3E6E4051F5AB0CC6A0C858C /* Frameworks */, - B6C0DD1EAC91C25A1482A37F7D30A81D /* Resources */, + A1BC86C1682743CE880116ACE8ACB1C7 /* Headers */, + F91EFC10A2D49F24C05E220C65D3322D /* Sources */, + D37E7809213C1571A04ED19ED9D5BD77 /* Frameworks */, + 07CC83B35BA48BE80F07D0000F971618 /* Resources */, ); buildRules = ( ); dependencies = ( - E9979F57AA0621BF78F8CA61114E653E /* PBXTargetDependency */, - F296F7677DABEE8C3716D1CAD280BAFD /* PBXTargetDependency */, - A2074A1660AEBBC7DA8071193F4C114A /* PBXTargetDependency */, - 48CF01CC6B744BD2A53AE5DD32E778F1 /* PBXTargetDependency */, - 7830CB23C813714C3C7806743F44C52F /* PBXTargetDependency */, - C881757934457307B3DA9AF12C1E1575 /* PBXTargetDependency */, - 3E40A4D7B4F79239296333A3133306B5 /* PBXTargetDependency */, - 0689FDC518D6088B176D9F011A67FEE6 /* PBXTargetDependency */, - BAF3F8AE650394F5AA5070D3BAD6EDFF /* PBXTargetDependency */, - 922E624353072D09D48A9881165793C5 /* PBXTargetDependency */, + DA95CCBC29AB570ED77F7D7A1AAA2A7B /* PBXTargetDependency */, + 6436E402AC4B79C5F527A7450B198CB0 /* PBXTargetDependency */, + F0496D93E0C3E5311D41886F6175F6EF /* PBXTargetDependency */, + 2215DB4BE317DE647E966C0BB7E04C86 /* PBXTargetDependency */, + 1C5E5C27D41561ED19E5644B80B8E0E3 /* PBXTargetDependency */, + 3A59C8E7BA3221DAF88694C9BB4D9D95 /* PBXTargetDependency */, + ECE67991B27379138AE4893BA097A282 /* PBXTargetDependency */, + B2A69ACC2DD87EAA068A75A6360A7735 /* PBXTargetDependency */, + B985F40217B90B22E9F4AAA970FB7A4B /* PBXTargetDependency */, + C957976DE0558229E6884ACE2ACFB6FE /* PBXTargetDependency */, ); name = "Pods-web3swiftExample"; productName = "Pods-web3swiftExample"; - productReference = 87C916A767731ADE1518E52E1B6D032F /* Pods_web3swiftExample.framework */; + productReference = FD3D917F4E61D9C7A71DF2F8391AC711 /* Pods_web3swiftExample.framework */; productType = "com.apple.product-type.framework"; }; - 6385AA5DEB59BDFB6EC695A6F0524DA7 /* web3swift */ = { + 377DAE4050D766B30C3A484B8525BB35 /* SipHash */ = { isa = PBXNativeTarget; - buildConfigurationList = 9018BA916CE44A089CB188ACBC3183A1 /* Build configuration list for PBXNativeTarget "web3swift" */; + buildConfigurationList = 73B0903D7A97ACCB393C1302FF4D92EF /* Build configuration list for PBXNativeTarget "SipHash" */; buildPhases = ( - 5376B8CD2A97FFFC91ACD7712C08EEB6 /* Headers */, - 730320B22CD5A2678CC52D89E71C37F0 /* Sources */, - 65AC3C45CA627758B1050C16C4D97DA5 /* Frameworks */, - 1BBD4114420EDB29259D1764C87E97C8 /* Resources */, + 1738904DFA435862B7A02C8B389C6FF1 /* Headers */, + 894B6DC70533C5A75434C53AF942436E /* Sources */, + 94371186B5072EFFB554EA1D7BB458DC /* Frameworks */, + 702F47E7DA56C50C59B3725F116E3EBD /* Resources */, ); buildRules = ( ); dependencies = ( - F4F78566B8D7F8618A7473EFFB5954DE /* PBXTargetDependency */, - BF71B09E1287BC86521296CBAB812B51 /* PBXTargetDependency */, - 198220CFB13D643C4BD4C6DF87CB5A21 /* PBXTargetDependency */, - 04FE31CB63EB17E44AE868F7B8C30FDA /* PBXTargetDependency */, - FF8F1A79C4A5A7B36C60ECDADF87FD76 /* PBXTargetDependency */, - 86AB873F1433E4E93954368AA21DBA47 /* PBXTargetDependency */, - DF954395EEFCFDA4A241AAB8CB6DF94E /* PBXTargetDependency */, - FFB2B3D2DFFAF3A27F5025F5F2421CF1 /* PBXTargetDependency */, ); - name = web3swift; - productName = web3swift; - productReference = 7892B6C936FFDF8FFBBA425C3F07ACE5 /* Web3swift.framework */; + name = SipHash; + productName = SipHash; + productReference = 5C648DB22D16FEC5FFA55F38E73C5ED1 /* SipHash.framework */; productType = "com.apple.product-type.framework"; }; - 640B979328B6328F6325026CA79A1B22 /* secp256k1_swift */ = { + 3D875D5B2A0B02BF6B6224B9A2A9F7B2 /* SwiftRLP */ = { isa = PBXNativeTarget; - buildConfigurationList = DF74D3830F0F5F54523C9A5F5585D755 /* Build configuration list for PBXNativeTarget "secp256k1_swift" */; + buildConfigurationList = 7A205B601F36A6BCE07AD382281B43DE /* Build configuration list for PBXNativeTarget "SwiftRLP" */; buildPhases = ( - FB5BC8AE607FB814C8E7F9F6A7F90F2E /* Headers */, - D2EBE9A685632B40A0887329BD945EB5 /* Sources */, - 8E196E012D90266194B01740F1F181E4 /* Frameworks */, - 647821CAA544A3E33DD75420AB1FFDC7 /* Resources */, + 830407B847A0A78D5EF2C388457A84F5 /* Headers */, + C7DB9544156B1AF7F2CD533F6EFBD8DB /* Sources */, + CC6684736CAAE9DAAE548EA40DA8FBF5 /* Frameworks */, + 828BE34AB53FE5A0E196915319BC1544 /* Resources */, ); buildRules = ( ); dependencies = ( + 7D0F59ED1BC4B0CD764B035B4447B139 /* PBXTargetDependency */, ); - name = secp256k1_swift; - productName = secp256k1_swift; - productReference = 195F208CF3D7F63BCB562753EBCD8DA2 /* secp256k1_swift.framework */; + name = SwiftRLP; + productName = SwiftRLP; + productReference = CBCDDE9E5C8C4D7CE7707928C6F21FF8 /* SwiftRLP.framework */; productType = "com.apple.product-type.framework"; }; - 6F5F8CED7C3379A0404E745819F8B311 /* CryptoSwift */ = { + 674FDFDEB40835621D833AF8EBA35016 /* secp256k1_swift */ = { isa = PBXNativeTarget; - buildConfigurationList = 8292BE0D9164B6CA74EDE2D0B4A9C609 /* Build configuration list for PBXNativeTarget "CryptoSwift" */; + buildConfigurationList = 7C62B22FD68B979153C38861F8C337A2 /* Build configuration list for PBXNativeTarget "secp256k1_swift" */; buildPhases = ( - C9B8F223C5191C06610567F142437FA1 /* Headers */, - CCBB251F64ECEFA16156983A60AFC5CA /* Sources */, - 30D68B77A2DAB060755632E5E528C760 /* Frameworks */, - C25E3F3E20AE8C3A5BA89FBE4505DC7A /* Resources */, + 54007E416ADC50FE0DDA3B0AE248056E /* Headers */, + 169AD2D0F230D0BE5377D02E918440ED /* Sources */, + D0732865FFD62AA97DEC4081D92242B8 /* Frameworks */, + 87FCD0AC3673D9D6DECA8F7D249D0879 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = CryptoSwift; - productName = CryptoSwift; - productReference = 893235EAB21791B8848761F81F0B2A56 /* CryptoSwift.framework */; + name = secp256k1_swift; + productName = secp256k1_swift; + productReference = 610F5B2F64A19723D6767604A8AF660B /* secp256k1_swift.framework */; productType = "com.apple.product-type.framework"; }; - 70B9B02B65110648B14877481CCA7615 /* EthereumAddress */ = { + 6FEC3F0567EB42CC234EFD7117C398D3 /* EthereumABI */ = { isa = PBXNativeTarget; - buildConfigurationList = 33565CE9A008BC2D28F678145BCCC377 /* Build configuration list for PBXNativeTarget "EthereumAddress" */; + buildConfigurationList = 55ED71E6536789FF635527B674608A33 /* Build configuration list for PBXNativeTarget "EthereumABI" */; buildPhases = ( - 3FD102C69B8A80AA835E2638D0C66C4F /* Headers */, - 6F5D95792A7DD5623B7EC84E0E8359C3 /* Sources */, - F88A903EB36D7AF6FC3A163B862AEE5B /* Frameworks */, - F06C85F4A9893E89799A082D9511B26D /* Resources */, + 3296BC8B74D75EC268D04FD0DCC33341 /* Headers */, + 84ED2959FBEEC386652A5216105552D4 /* Sources */, + 107F2B8B2BB232B6A489EBA2E0B6084E /* Frameworks */, + 280B2BE170AB29D488F8A425EC36D0F2 /* Resources */, ); buildRules = ( ); dependencies = ( - 82927588D81F01270CF30C1779752B8B /* PBXTargetDependency */, + 2E3381AF0DBFB53B3D6152E90A96AD53 /* PBXTargetDependency */, + B309FD9161EE2977D9635C1A48484660 /* PBXTargetDependency */, + 9D8DF49FBA95C1367E6B96EBC28CD16E /* PBXTargetDependency */, ); - name = EthereumAddress; - productName = EthereumAddress; - productReference = FD7ED36C282A0828EE45325CACB45C56 /* EthereumAddress.framework */; + name = EthereumABI; + productName = EthereumABI; + productReference = 794072845D4768298AE01BB6FE482CCC /* EthereumABI.framework */; productType = "com.apple.product-type.framework"; }; - 7FF8752D2607B0617A8EA59CB6F52DA7 /* SipHash */ = { + 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 18A84A1682CD37CFA0F42453F6BF95C9 /* Build configuration list for PBXNativeTarget "SipHash" */; + buildConfigurationList = 4F45AD52F1E48562E6A4F8520EFDE08E /* Build configuration list for PBXNativeTarget "PromiseKit" */; buildPhases = ( - 09EADEA037FE0B8626C8AEE86F19B108 /* Headers */, - 92881122437CB3C21DE6947CADDF0A60 /* Sources */, - D1D2E3112C8952F649A1AA6C2A244398 /* Frameworks */, - E2C10720FE37B7B597C0A2FD39826949 /* Resources */, + A553FDB16CAF57F98864076F83AB5508 /* Headers */, + F022006A82673FF139BEA55EDA7B0B40 /* Sources */, + 4ECAFB0023F06080FA8370FF60CDB9EC /* Frameworks */, + 39ABB533A2153586F7195605F18EBCAF /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = SipHash; - productName = SipHash; - productReference = 92E84CE689EC1CA76E264E5261761179 /* SipHash.framework */; + name = PromiseKit; + productName = PromiseKit; + productReference = A9825FE2555E0AC5A75D452770DB4B65 /* PromiseKit.framework */; productType = "com.apple.product-type.framework"; }; - 888C7AD1D57FC2EBE4CF200F6BD2A842 /* EthereumABI */ = { + 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = 0639662C632CDF2297369DF6E66E9D8C /* Build configuration list for PBXNativeTarget "EthereumABI" */; + buildConfigurationList = 06FA395FFEAF5E28FA7208D7C6BD74D0 /* Build configuration list for PBXNativeTarget "CryptoSwift" */; buildPhases = ( - 5BB7A0FCC95EC7CD413E98D637584D9A /* Headers */, - 06CD91273F3B56F7F839CD6CFA8913FC /* Sources */, - 3EB472E2EE778BA2800B34DBF4BA6E58 /* Frameworks */, - 41CAFDA813475848A6160E155F303F7C /* Resources */, + 0BE4AA1CFB0BFCC908FBF0366C02A73B /* Headers */, + A512D2ECA45F3BCF4E178988CC0C05C9 /* Sources */, + 112619710F78B1BA140D6AC8F22DCB56 /* Frameworks */, + 2E9AA85742E9AEED9BC015B266EEA3C9 /* Resources */, ); buildRules = ( ); dependencies = ( - 2965740EC5E2A6513D2A920460471AD7 /* PBXTargetDependency */, - 6C89BCE50AEDF956DF810088461B0749 /* PBXTargetDependency */, - A21A883EB1BF16D519AA5DFA79834214 /* PBXTargetDependency */, ); - name = EthereumABI; - productName = EthereumABI; - productReference = 0FCE2106A870C9CA8289F01F2E005C3A /* EthereumABI.framework */; + name = CryptoSwift; + productName = CryptoSwift; + productReference = 43C23DCEA349F5119D02161DB3A2F248 /* CryptoSwift.framework */; productType = "com.apple.product-type.framework"; }; - B7B21C794593341834C7614B423C9C8A /* SwiftRLP */ = { + 99364D9FB07EF3FA5DFE1237001805EC /* web3swift */ = { isa = PBXNativeTarget; - buildConfigurationList = 847C860E5C8C46156BEC16FAF215BA10 /* Build configuration list for PBXNativeTarget "SwiftRLP" */; + buildConfigurationList = 1ADEDFC6EAE9C2D3FC08DE43B6A3117C /* Build configuration list for PBXNativeTarget "web3swift" */; buildPhases = ( - FCBBD0298627F98D8A79A55DCB756ED3 /* Headers */, - D53F5616BA38639474F9A1A3ECEB519F /* Sources */, - C51A836D82921EFA9484264358165DE4 /* Frameworks */, - 06979946F3F16D31E5D914AB1C84B756 /* Resources */, + 95B5C10AB253640F7B467B00DC3B5B48 /* Headers */, + F7A66E72DAAECA8F77DA441AC3920C60 /* Sources */, + 2AE8DE5043A66DC2BA51EFB1422166F1 /* Frameworks */, + 7D5B40A1DA222EA25D9CA71E9C60DD9D /* Resources */, ); buildRules = ( ); dependencies = ( - 8315E99E211AE31E4A346F2FF7D10A53 /* PBXTargetDependency */, + 2550C71FD6EEDBD73B73227F06F33146 /* PBXTargetDependency */, + 8D3FB05AA090D13BAB100DD33BCBDDD5 /* PBXTargetDependency */, + AF46D8110378D31E354E5E94FCEE27A0 /* PBXTargetDependency */, + 30D46F50189BF2F491098A9DF710AA46 /* PBXTargetDependency */, + 176F05F0955BC27F0A62C705479976A0 /* PBXTargetDependency */, + A2B1C0A327EF7A66B3DA8DE78DE264AF /* PBXTargetDependency */, + 531BE99BB21B97FBFCA6A3B42DDA772F /* PBXTargetDependency */, + 73A80CAA8661941A0023F8C63D40660D /* PBXTargetDependency */, ); - name = SwiftRLP; - productName = SwiftRLP; - productReference = 780BEB0A3FE57594F0858A7EA833EC1A /* SwiftRLP.framework */; + name = web3swift; + productName = web3swift; + productReference = A85B1F9FF37274E35577DB8BC3228DD5 /* Web3swift.framework */; productType = "com.apple.product-type.framework"; }; - DD6DF1A42DE8BB0017BCCD871EA0F04D /* PromiseKit */ = { + 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */ = { isa = PBXNativeTarget; - buildConfigurationList = A9C5C85EB3A3102926F51BA14F3D5C13 /* Build configuration list for PBXNativeTarget "PromiseKit" */; + buildConfigurationList = 51EF83ED6B1D73BF662853229D5C1273 /* Build configuration list for PBXNativeTarget "Starscream" */; buildPhases = ( - D8B7AAB5D3C05844B4F46DAE81F4AB3B /* Headers */, - 0342384526A309EEB4901AF27F92DCA5 /* Sources */, - 578DFD9660782B537DF2F07E1FD46259 /* Frameworks */, - 4172BB1634793204FFFCF79F08C311BB /* Resources */, + 754A32C7E4D922F8B4AB30FD866AB29A /* Headers */, + 7D84878E712AF48C65138C5A8DD1D426 /* Sources */, + 6BB9A8BBE8BF0F0E7101FD6456EB11BC /* Frameworks */, + 568ECC4084CE467F02D5B9D3A29F3078 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = PromiseKit; - productName = PromiseKit; - productReference = 7B19C8291B81ECFBA8C6A57213ADA700 /* PromiseKit.framework */; + name = Starscream; + productName = Starscream; + productReference = 6B7804074E220497AF1B780BD219A34E /* Starscream.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0930; LastUpgradeCheck = 0930; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 8.0"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 68D1B13E7ACEC4FBBFF130BADA9C0A1B /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 2C29F4CDA41D852BAB165733A044ED04 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 137411A4D3CCDCAE6EE1A79271E0889C /* BigInt */, - 6F5F8CED7C3379A0404E745819F8B311 /* CryptoSwift */, - 888C7AD1D57FC2EBE4CF200F6BD2A842 /* EthereumABI */, - 70B9B02B65110648B14877481CCA7615 /* EthereumAddress */, - 4FF76C9CFB6B4346A2DDCAAE6E407CEE /* Pods-web3swiftExample */, - DD6DF1A42DE8BB0017BCCD871EA0F04D /* PromiseKit */, - 0ED0B491AE891D6CDC3963787F0E2DB4 /* scrypt */, - 640B979328B6328F6325026CA79A1B22 /* secp256k1_swift */, - 7FF8752D2607B0617A8EA59CB6F52DA7 /* SipHash */, - B7B21C794593341834C7614B423C9C8A /* SwiftRLP */, - 6385AA5DEB59BDFB6EC695A6F0524DA7 /* web3swift */, + 09DD83B7D075842A3A5105AD410BD38A /* BigInt */, + 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */, + 6FEC3F0567EB42CC234EFD7117C398D3 /* EthereumABI */, + 01FB31BC868580C5272945EF4898FD10 /* EthereumAddress */, + 1ECDC9F47366DF4A1AB7E689B87D9D0E /* Pods-web3swiftExample */, + 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */, + 674FDFDEB40835621D833AF8EBA35016 /* secp256k1_swift */, + 377DAE4050D766B30C3A484B8525BB35 /* SipHash */, + 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */, + 3D875D5B2A0B02BF6B6224B9A2A9F7B2 /* SwiftRLP */, + 99364D9FB07EF3FA5DFE1237001805EC /* web3swift */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 06979946F3F16D31E5D914AB1C84B756 /* Resources */ = { + 07CC83B35BA48BE80F07D0000F971618 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 108DAA910E2C213632945B1B7282D96E /* Resources */ = { + 1F73535EFE67D8E69126259B7BB920FA /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 1AF3324DAB2C8E0DD11A0DEC66CD5799 /* Resources */ = { + 280B2BE170AB29D488F8A425EC36D0F2 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 1BBD4114420EDB29259D1764C87E97C8 /* Resources */ = { + 2E9AA85742E9AEED9BC015B266EEA3C9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 4172BB1634793204FFFCF79F08C311BB /* Resources */ = { + 39ABB533A2153586F7195605F18EBCAF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 41CAFDA813475848A6160E155F303F7C /* Resources */ = { + 568ECC4084CE467F02D5B9D3A29F3078 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 647821CAA544A3E33DD75420AB1FFDC7 /* Resources */ = { + 702F47E7DA56C50C59B3725F116E3EBD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B6C0DD1EAC91C25A1482A37F7D30A81D /* Resources */ = { + 7D5B40A1DA222EA25D9CA71E9C60DD9D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C25E3F3E20AE8C3A5BA89FBE4505DC7A /* Resources */ = { + 828BE34AB53FE5A0E196915319BC1544 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - E2C10720FE37B7B597C0A2FD39826949 /* Resources */ = { + 87FCD0AC3673D9D6DECA8F7D249D0879 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - F06C85F4A9893E89799A082D9511B26D /* Resources */ = { + E693CE5F5274A604682B77B35EAE8632 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -2145,474 +2190,520 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 0342384526A309EEB4901AF27F92DCA5 /* Sources */ = { + 169AD2D0F230D0BE5377D02E918440ED /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 45BF4E826F20BB6B80DA1656194C389B /* after.m in Sources */, - 860272FAD4E2D035DF10AE20A552ECD6 /* after.swift in Sources */, - 5AD030261435FD98FAF7431CE885864D /* afterlife.swift in Sources */, - D6DF6D0E2CAABE79ABFE4E49B5650811 /* AnyPromise.m in Sources */, - 7A65AA9F003F126626392DE935CA763B /* AnyPromise.swift in Sources */, - 9F072011232D95179D1C7D0BA561714D /* Box.swift in Sources */, - 2F19C94428DBF3FEE892C3BC9538BD0C /* Catchable.swift in Sources */, - 401FC3DD2EDDB48484C0F58DB376C436 /* Configuration.swift in Sources */, - 21EA3B70F882771DE5E71A78762F852F /* CustomStringConvertible.swift in Sources */, - D3D0D567F96629FC64F8ECAFAEE917ED /* Deprecations.swift in Sources */, - BD4B04E18C36BD2D1DF0BD10C05BF2D3 /* dispatch_promise.m in Sources */, - CDD09F29DAD4B81BA080341DD1E62A47 /* Error.swift in Sources */, - 0EAFFDE720BC075EFD8024E130A3F583 /* firstly.swift in Sources */, - 3D9E0EC94604238F4D837E3E7E9CDFDA /* Guarantee.swift in Sources */, - 432A59F5503460580FBF047A2E95B403 /* hang.m in Sources */, - 4244DC847B46A7C3702021C52140C539 /* hang.swift in Sources */, - C2151450953E0EC8EDC912BD70010B41 /* join.m in Sources */, - 0FB2C7EB657123B46C1E183E33FECB71 /* NSNotificationCenter+AnyPromise.m in Sources */, - 36E5BB58E35F3EE126FD2E7F78B0C712 /* NSNotificationCenter+Promise.swift in Sources */, - 68ACC882FF1859C30606FD4785F5B60D /* NSObject+Promise.swift in Sources */, - 44CD2A9B83122B52B80E91DD739137B9 /* NSTask+AnyPromise.m in Sources */, - 077140AE43E4559554657C3D38B4D8D1 /* NSURLSession+AnyPromise.m in Sources */, - F25A68C1BB11B18A009139962E36D783 /* NSURLSession+Promise.swift in Sources */, - F276CE59D1316B2370725D47D4EC2FB7 /* Process+Promise.swift in Sources */, - AC0B732DDB2F612834D2A7E19DA53754 /* Promise.swift in Sources */, - 5ADF45AA07583F480A917C3F34118118 /* PromiseKit-dummy.m in Sources */, - 60A5148C3B21CBB1388633419E789AE6 /* race.m in Sources */, - 8440A90B8FBD27B2631A55E10CF96144 /* race.swift in Sources */, - 359390E3E8AB281E3AAE339BD7C2D89E /* Resolver.swift in Sources */, - CFDEB0F86B9C7084B7DB4D052CB012A3 /* Thenable.swift in Sources */, - DBBFC560AB043DF7F0AF1ADD29B96323 /* UIView+AnyPromise.m in Sources */, - 36D1F27010F6E0052132BC35DF1E9B2D /* UIView+Promise.swift in Sources */, - 56573858613F4A2156E0F148A5258D36 /* UIViewController+AnyPromise.m in Sources */, - 9505A2BBE23F80EEA10A9209F39C0695 /* UIViewPropertyAnimator+Promise.swift in Sources */, - A48FEA29EC3240C483497D8DB6FB0541 /* when.m in Sources */, - CD78786DD832146021F67BDA26D07BCB /* when.swift in Sources */, + E0761F90DCE2772328A29F60F2A09487 /* lax_der_parsing.c in Sources */, + FEBFB203C7DF36216E71B3B6EAD1577E /* lax_der_privatekey_parsing.c in Sources */, + 027B05F1BF7D21136218C76A7A3DCCCF /* secp256k1.c in Sources */, + D41541CA4F1BF0201CDD88E38DD92D73 /* secp256k1.swift in Sources */, + 5CB6925D67548AD5BC159D7E0D509110 /* secp256k1_swift-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 06CD91273F3B56F7F839CD6CFA8913FC /* Sources */ = { + 19F4A6BB05675F0032F345E6D6DE52A2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2ADD61CDA6604966DA306959A92FA086 /* ABI.swift in Sources */, - 0485DDC0DDDFAD1E8E278AD9C56EC1B4 /* ABIDecoding.swift in Sources */, - 6DF9FDAB9C7F26B557B3A0DA94578241 /* ABIElements.swift in Sources */, - 8413BF7A30C04021BED6564D4B77738C /* ABIEncoding.swift in Sources */, - C336A99180A6D5AD84C44CC15F48E2EE /* ABIExtensions.swift in Sources */, - A95AFD0C2BC0C07CB65C970E57D177E3 /* ABIParameterTypes.swift in Sources */, - 382BA96CCC1E7E7B0927C453432C342B /* ABIParsing.swift in Sources */, - 3E7B3566E3CC285CAACA093A9832E526 /* ABITypeParser.swift in Sources */, - A89883197ADD5C0B0E2D8C797E23A8C3 /* EthereumABI-dummy.m in Sources */, + A6389664372C64A009E5D51C59DBCB12 /* EthereumAddress-dummy.m in Sources */, + 4A63AD8FF0F86EEEA9F77104557A4BE1 /* EthereumAddress.swift in Sources */, + 969DCC2445A06DFC72EEEBF40E3BCB45 /* Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1751A2325AEF0209922ADB9422A536AB /* Sources */ = { + 7D84878E712AF48C65138C5A8DD1D426 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D416E9A2C53EBE511502E1E404028C7B /* Pods-web3swiftExample-dummy.m in Sources */, + BCD95B42AF0BF6F9200B9C1C6D5299FF /* Compression.swift in Sources */, + 99531B97ADAB2E75EFFA98A3FBBFFD48 /* SSLClientCertificate.swift in Sources */, + A01184120EAAAFC9DB02F732E0157875 /* SSLSecurity.swift in Sources */, + E80E4D1C933D35B0CE7CCB4458E93168 /* Starscream-dummy.m in Sources */, + 2BF13AABBF00D392652883F51EB08532 /* WebSocket.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 26B1A5BC43F128F14E41E79BD5341224 /* Sources */ = { + 84ED2959FBEEC386652A5216105552D4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6A9CD001990B462354A83330FBA0EC45 /* BufferStorage.swift in Sources */, - 9D3DB6C9DD52CA4E093E4C8C4BB02DCC /* Cimpl.c in Sources */, - FD67D656E8426746C043D859E4B444D2 /* Salsa.swift in Sources */, - 87AC0B08AE309F77437612D531B5104A /* scrypt-dummy.m in Sources */, - 38B9C6022379E050848456D78C1908D1 /* Scrypt.swift in Sources */, + 92C6503EBB08A80B461EAD24767FE7EE /* ABI.swift in Sources */, + 87DBDEEA2562E5BEBAC4363DE0A3188B /* ABIDecoding.swift in Sources */, + F045D2744594F480F0B14FF669BD868E /* ABIElements.swift in Sources */, + 570615FA0B14455A3FF3BCD7CE4279FD /* ABIEncoding.swift in Sources */, + DF9C0E714E218A0245845F9219CDDCD9 /* ABIExtensions.swift in Sources */, + 7E76DD207641E9934469DA81C479BD5A /* ABIParameterTypes.swift in Sources */, + C567F2DAECA4D0C6080F46FA3C8B77A8 /* ABIParsing.swift in Sources */, + C255DFACD3C584AD2367877409EEDD4A /* ABITypeParser.swift in Sources */, + 6F1AFA7D659F191DEF74398B8252F61B /* EthereumABI-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6F5D95792A7DD5623B7EC84E0E8359C3 /* Sources */ = { + 894B6DC70533C5A75434C53AF942436E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9B1D8B3F81DA09FA60C1B87DBD2D3F63 /* EthereumAddress-dummy.m in Sources */, - 8D5BA4D08F578660123B2E81CE8D0C84 /* EthereumAddress.swift in Sources */, - 0E7DC8600622ED2E0516F25A9F51C903 /* Extensions.swift in Sources */, + B3C546DED9B2E367D79DC4AADE06A625 /* Primitive Types.swift in Sources */, + 9213FA46FD9BE461EF52741BE3AAFA10 /* RandomUInt64.swift in Sources */, + 9B04407DFD3F92FF013BB02ADF2D7985 /* SipHash-dummy.m in Sources */, + 4357E07CDCE76CE06C2D8211E6C2D505 /* SipHashable.swift in Sources */, + 5B11A4362B4B72299B2BEA7DEE9D7574 /* SipHasher.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 730320B22CD5A2678CC52D89E71C37F0 /* Sources */ = { + A512D2ECA45F3BCF4E178988CC0C05C9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6F2AC95CC89CE8DBC79A6076AC891E51 /* AbstractKeystore.swift in Sources */, - A0745493EEC035A284FF812C97652F66 /* Array+Extension.swift in Sources */, - ADA80E624605AE882CE1D99E722CC414 /* Base58.swift in Sources */, - A848C13D7D87B0F9C11825D17437C482 /* BigUInt+Extensions.swift in Sources */, - 9E8D7107296E94FA95F7F36DE96563C6 /* BIP32HDNode.swift in Sources */, - BB623D27F74DE81E07DA70A9BF7A8CC7 /* BIP32Keystore.swift in Sources */, - FAB7360AD1D3E53E3A466486C74B99AC /* BIP32KeystoreJSONStructure.swift in Sources */, - C5F4D394712A325BCB341BE8623B6111 /* BIP39+WordLists.swift in Sources */, - 60D66E712C47DC1056912A4E77CE7B6F /* BIP39.swift in Sources */, - 536729423F27A0C8C10588505FBD0680 /* BloomFilter.swift in Sources */, - AD19735CB2485737C224B7D360F4493D /* ComparisonExtensions.swift in Sources */, - FFA8593E38644858DA006AC13FCFCE1D /* ContractProtocol.swift in Sources */, - ADD1958BC7A445E2E7BA0AC6D09E5A75 /* CryptoExtensions.swift in Sources */, - 16FCAA2982615446FE51C6848E852E22 /* Data+Extension.swift in Sources */, - B5982630A4AB9E8A9264371037AF8A11 /* Dictionary+Extension.swift in Sources */, - A1A7CD3E806ECEEF9CA491D1D4E2994A /* EIP67Code.swift in Sources */, - 60E46306ED1B3A25049772CD775BDD49 /* EthereumContract.swift in Sources */, - 385AB966428941407528ADE1B373C119 /* EthereumFilterEncodingExtensions.swift in Sources */, - AF37471E60AF8D58B63DC72E73AC22F7 /* EthereumKeystoreV3.swift in Sources */, - FEF24F9BB68DD9774ADE13F2F789BF2D /* EthereumTransaction.swift in Sources */, - 2B26146875465DF9C2D78472B49E3305 /* EventFiltering.swift in Sources */, - 75968482BFB1B3D0EFADE99502D2052C /* IBAN.swift in Sources */, - 1E0ED79B5B4B52516424062B25A8985E /* KeystoreManager.swift in Sources */, - 5F1B861985BEFCD8A263ED54264B5543 /* KeystoreV3JSONStructure.swift in Sources */, - 978D71F3FB5EACAD29A0EEA5792E43EA /* NativeTypesEncoding+Extensions.swift in Sources */, - 69F3796EA98173349F573767FA9D96B5 /* NSRegularExpressionExtension.swift in Sources */, - 7B049E9067D1408E7475C04B2522BF1F /* PlainKeystore.swift in Sources */, - 79555D854C8AC2FC8E9818C8F3710324 /* Promise+Batching.swift in Sources */, - 51C9BF2681C879F6790B674806626C9B /* Promise+HttpProvider.swift in Sources */, - 8E0F8FBB7B21069BAB85856FACD82FAB /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, - FDA87C074AA11FD15E2484CF0CD2A696 /* Promise+Web3+Eth+Call.swift in Sources */, - 51AED1A3AE83C5F80B343D8AAFD494A3 /* Promise+Web3+Eth+EstimateGas.swift in Sources */, - C734676627537B0DFCA232D1EB633C0B /* Promise+Web3+Eth+GetAccounts.swift in Sources */, - 3FD7EC703639AE284EF9ECF6278211D7 /* Promise+Web3+Eth+GetBalance.swift in Sources */, - 11C436F48BC5B99CA9B122D6653E7986 /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */, - E990498BC866B73EBAB07888721A09D1 /* Promise+Web3+Eth+GetBlockByNumber.swift in Sources */, - C41B8867263E3E6E42470A3C646B1D19 /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */, - 289C18B312DFEDD4B704A7AD3EFCC360 /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, - 6BAF17172CADEE179F681B5E21E293C4 /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */, - 6455E5C95FBD128A03567A452875A037 /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, - 0FFB9D7FCFCF67380D2E03C1CF3D31C6 /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */, - F9A7E63350044E62F0E412D2E103915F /* Promise+Web3+Eth+SendRawTransaction.swift in Sources */, - 8618E2984BD34989758334ED52615C62 /* Promise+Web3+Eth+SendTransaction.swift in Sources */, - 0C207CA7D0D22965127628406E3A90B7 /* Promise+Web3+Personal+CreateAccount.swift in Sources */, - 7C84DBA654289A1BBA492EC46B233D86 /* Promise+Web3+Personal+Sign.swift in Sources */, - 93369B9A54200F2200B09E87E76E33D3 /* Promise+Web3+Personal+UnlockAccount.swift in Sources */, - C514360D7B3C5BCB4E0225D90CF187E9 /* Promise+Web3+TxPool.swift in Sources */, - 7A1FD4C579FF7D9ED23F135FB6110673 /* RIPEMD160+StackOveflow.swift in Sources */, - C36E78B76E37290EDFBD35F753C8BFD5 /* String+Extension.swift in Sources */, - 250AD1DEF6E70905E0B2C85ADC0712D7 /* TransactionSigner.swift in Sources */, - 1E5F371419521861C46DCF9701C977BA /* Web3+Contract.swift in Sources */, - 2897474ABD1023E8A37E6EB9792CC661 /* Web3+Eth.swift in Sources */, - 78DA7D99279407A7B5E752BD06003068 /* Web3+Eventloop.swift in Sources */, - 251860F28AD7FF23ECD15AC4C77CF1BE /* Web3+EventParser.swift in Sources */, - 9F08353BD8DADB8C8B14E8A20F8ED909 /* Web3+HttpProvider.swift in Sources */, - 22CC7BE1DDDB6F839A68B21F60826BC3 /* Web3+Infura.swift in Sources */, - C3FF72941CEA02672209A73FF19E4819 /* Web3+Instance.swift in Sources */, - AC6DA7A88F96EE89BE114D6C5DE3F3CF /* Web3+JSONRPC.swift in Sources */, - 7A0197B22900E1FC916C4464F5297A84 /* Web3+Methods.swift in Sources */, - D976E2E8FCA5504DCF2738F501041438 /* Web3+MutatingTransaction.swift in Sources */, - FB0B2EDD326D7C1D112BBAF8F3F9D6AD /* Web3+Options.swift in Sources */, - 68FA51BCE2078F888E11D5C9367BBEE7 /* Web3+Personal.swift in Sources */, - 9D6103741022980D04EED50269512BB9 /* Web3+Protocols.swift in Sources */, - 048D1674FC2E4B4E9A3FFD4670FB476D /* Web3+ReadingTransaction.swift in Sources */, - 98EE378BC5236F9103D9F612AC06E040 /* Web3+Structures.swift in Sources */, - 0AA7233700BDC63D25E5E63F0442F3BA /* Web3+TxPool.swift in Sources */, - 7333A61491547B0B8DB187069AC30533 /* Web3+Utils.swift in Sources */, - 38574512C2CD6A6CCC91C1E9F1624749 /* Web3+Wallet.swift in Sources */, - F27A72D9086266FFEB1DF3028EDC5737 /* Web3.swift in Sources */, - E83BCEA137A6F28FFAC7EE0079FA6156 /* web3swift-dummy.m in Sources */, + 547E34B173FDFC786A0DBB27D7869585 /* AEAD.swift in Sources */, + DA060CDBF5F9B0BA6A66210EEF36282A /* AEADChaCha20Poly1305.swift in Sources */, + 6781EA9EE0316FEE3B5AEBDBD03A9670 /* AES+Foundation.swift in Sources */, + 57C2434E3BEF5EBFF6A52A144C0585EC /* AES.Cryptors.swift in Sources */, + 8F258952A0FF2F009C23E4EAA151FEDC /* AES.swift in Sources */, + CF7A18404C02DBD6FF090EEB0EC2C93F /* Array+Extension.swift in Sources */, + DD787B75B55A0233F6382819D2376526 /* Array+Foundation.swift in Sources */, + 85F1D1C1D4D13AA15D0B0E2D0E15BF6D /* Authenticator.swift in Sources */, + D3FFAE0857B91F48E5E93FA91C726EC9 /* BatchedCollection.swift in Sources */, + 48B471DF4A519D1BADF5C103A9854ECA /* Bit.swift in Sources */, + 66047AA6DC9792967100FD0D4F265DA2 /* BlockCipher.swift in Sources */, + C962C2C206F984C1DBC785F3F219A0CE /* BlockDecryptor.swift in Sources */, + 29EE5557506D0A6E51F1BDD02FD0E35B /* BlockEncryptor.swift in Sources */, + 38B11A1071CE655D7342E07647C38FBE /* BlockMode.swift in Sources */, + 63455720901E7A31C9A6FC219B178BD2 /* BlockModeOptions.swift in Sources */, + 2D2ACB8442450E25D9DCC39CFBEC8505 /* Blowfish+Foundation.swift in Sources */, + 412651595CAC0923D77164644158F2BB /* Blowfish.swift in Sources */, + 0FF63E5D41DEFACFCE2812A03399592C /* CBC.swift in Sources */, + FABB78D94F0C5192318CB51780C4D302 /* CBCMAC.swift in Sources */, + C94705A4B12F60FAD2CE41419C7B72C8 /* CCM.swift in Sources */, + 61AD7805A55AE873AF25ED1AECF104CB /* CFB.swift in Sources */, + C0DA1532A7C415088D90AD958FAAF280 /* ChaCha20+Foundation.swift in Sources */, + 27543AE627D3E80556B6977368D44F5B /* ChaCha20.swift in Sources */, + ABBF5F794ECCB42903EDEA5D0BA48600 /* Checksum.swift in Sources */, + B923BE92F91697524F92C612022050C2 /* Cipher.swift in Sources */, + 02975F6C53E98892508F22049CC8D7C1 /* CipherModeWorker.swift in Sources */, + 6240578CCF251EBBB37FB1CF9CC1884A /* CMAC.swift in Sources */, + 1A6CD28CDF35ED0336F200AB1F1B586E /* Collection+Extension.swift in Sources */, + A720FDB9911B95D869E919F1A672FE35 /* CompactMap.swift in Sources */, + 071551D125D95B1FD679072F0C2802CD /* Cryptor.swift in Sources */, + 1AAE57F0A306A2AAD76869C7791A74F0 /* Cryptors.swift in Sources */, + 9D2159104F1CE2499C2C2306E66212EB /* CryptoSwift-dummy.m in Sources */, + 30D8C9312E34F86D9FE451637F633B17 /* CTR.swift in Sources */, + 47542E902E628BC2BBA1FCF2F9358A5B /* Data+Extension.swift in Sources */, + 98AC0C965479653BE92F3D264D5784D3 /* Digest.swift in Sources */, + C08056585E38049F465D329483EE8C5F /* DigestType.swift in Sources */, + 0245D2B3B7D9BFB4F0A707AEA33F4117 /* ECB.swift in Sources */, + C9082F71AF997A9F26025AE7770E7601 /* GCM.swift in Sources */, + 361E0242B930EF8E80817A1B5E26FEA9 /* Generics.swift in Sources */, + 40BECEDE07C0B88F49229B484EAA8785 /* HKDF.swift in Sources */, + 993A35891F0F03DC7D4AAD33DAB31374 /* HMAC+Foundation.swift in Sources */, + 2DC51467D94557AE18B8802C6CB2D3AE /* HMAC.swift in Sources */, + F1145415BBEB38283572F9DA4B9BFB8C /* Int+Extension.swift in Sources */, + A7F64F2A428DC907B49D22A49386D1B3 /* MD5.swift in Sources */, + 3042ED39B23E2FEB4A783FF94314B123 /* NoPadding.swift in Sources */, + 2B707FC0AE19FC46F79A9DCB15565F34 /* OFB.swift in Sources */, + BE35DC5159A4C3BC5E97F6D2FC297119 /* Operators.swift in Sources */, + 67A447799AA9D54712A7979BF46FF4F3 /* Padding.swift in Sources */, + 4C580CB1A1F9A0795CC59497328538AE /* PBKDF1.swift in Sources */, + A657235CCD8F427484683E5953DC5F25 /* PBKDF2.swift in Sources */, + C893E7F52A9AA6332AA251272AA66E65 /* PCBC.swift in Sources */, + 2BDE630A7971F821B76A0E173C9B0285 /* PKCS5.swift in Sources */, + 32497AA804330532885083A146E02A03 /* PKCS7.swift in Sources */, + 2EC9E60BE3BD1A3A9F5E0718BA022E1A /* PKCS7Padding.swift in Sources */, + 2EDA5696E719FDF3A29042026E8C3B7A /* Poly1305.swift in Sources */, + A9CFD8AB07572A31FEBF0E3E79C8EED7 /* Rabbit+Foundation.swift in Sources */, + D93F71A9CE86B0EF391EACF57400365F /* Rabbit.swift in Sources */, + FDC600BED8EF81C08177600DA0A19256 /* RandomBytesSequence.swift in Sources */, + 23990ABAFAA301D5FA1DBDE8C0D98CB6 /* Scrypt.swift in Sources */, + 154B5811AF1E8FDF24CE54D193B23FD3 /* SecureBytes.swift in Sources */, + 2F0AF83A7587C65DD5CD76E0876ED41A /* SHA1.swift in Sources */, + B1C0426CDFB20BF6920D0A1C040E441D /* SHA2.swift in Sources */, + 560D80477DB11E8CDE4AE4C1C70AA594 /* SHA3.swift in Sources */, + D7F9C513A7C37BFBEF8BE52E63FE959B /* StreamDecryptor.swift in Sources */, + 27D3FEFBE8512CFCCBE17A1E20BD504A /* StreamEncryptor.swift in Sources */, + B9346FD630730880203EA4E237EDCCE5 /* String+Extension.swift in Sources */, + C3599769ED2FD1B8C167E994F31E330E /* String+FoundationExtension.swift in Sources */, + D06814FD38B68AB52A523E3B7190A64C /* UInt128.swift in Sources */, + BF5E2687720ACA04ADB83BD422B102B2 /* UInt16+Extension.swift in Sources */, + 85E6A6DFCA2C741484F03A7B485CF75A /* UInt32+Extension.swift in Sources */, + F47B5775965C082F647279EB6D6FCC20 /* UInt64+Extension.swift in Sources */, + 9F34F0FFBA3DD578ED0011881A399FEE /* UInt8+Extension.swift in Sources */, + 82898B5B2929B43BCD93D48E913297B5 /* Updatable.swift in Sources */, + A141E388242851CDA7262E355BD65578 /* Utils+Foundation.swift in Sources */, + 9692981BFBAE3CFB38F0D42332FEB745 /* Utils.swift in Sources */, + 39664BD362BD3E4E555246D429268C74 /* ZeroPadding.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 876CA817B2DD9F8DD2A4932BACF03F12 /* Sources */ = { + C7DB9544156B1AF7F2CD533F6EFBD8DB /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1C6305612C71BA4A41EA3EE86EF9DE98 /* Addition.swift in Sources */, - 9A683FAB2843A7181358FFC2F9AA7FAA /* BigInt-dummy.m in Sources */, - F1631F5F7CD77D9527E4FE5EEFBCEB3D /* BigInt.swift in Sources */, - CAF579CC2CED09FBDCE2864827B8A085 /* BigUInt.swift in Sources */, - 22FE67B665841A937E8D95D9DBCC7EB7 /* Bitwise Ops.swift in Sources */, - A6B9BF2F0D5DEA52AC43A9863779A093 /* Codable.swift in Sources */, - B7F3D476C87C0EC57139955A579FA3DC /* Comparable.swift in Sources */, - E8CA9824DFEFDBE5FC430276A237F97B /* Data Conversion.swift in Sources */, - 34B17DF22062E35B740FA4AA29300ED0 /* Division.swift in Sources */, - 910DECB543C55FB96E09E4E2557A6755 /* Exponentiation.swift in Sources */, - 9DA1244904AD9E535DFE95EC136A5799 /* Floating Point Conversion.swift in Sources */, - 11155D066240AA9BCB5FB19A8915C253 /* GCD.swift in Sources */, - B514B4E9DB02B1EC4321D62DFA0524A1 /* Hashable.swift in Sources */, - 69E6BE13070187CED87503CD613CAEE1 /* Integer Conversion.swift in Sources */, - 9AE3952131E530F55D34A350ECC9B909 /* Multiplication.swift in Sources */, - 288250141FA353726E30472933B3E9DC /* Prime Test.swift in Sources */, - 43A213F845B41C54A0C6E74E216D28E5 /* Random.swift in Sources */, - FFBA8696A49B49BA33D1499546FCEC58 /* Shifts.swift in Sources */, - 60D03407C65DD41B77633BEBA45350BD /* Square Root.swift in Sources */, - 088387733523D1CAFA7D4DC267EA4433 /* Strideable.swift in Sources */, - EE851A358B5CFC5DB55B649D4E0F6817 /* String Conversion.swift in Sources */, - 541EE41CC83131708FC4873E24EB6813 /* Subtraction.swift in Sources */, - 5ED753E367A75BE0055D8AADD86B71CB /* Words and Bits.swift in Sources */, + DA1D6B455886CCAC2F9A217AD2273664 /* RLP.swift in Sources */, + 854D1CBE56A433579B2B8F2F97E06FDE /* SwiftRLP-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 92881122437CB3C21DE6947CADDF0A60 /* Sources */ = { + E7EC6FEB1BC28AF474ADC8A717580EA2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8FC26FC4527AC222B1C2F40D4E1F3D81 /* Primitive Types.swift in Sources */, - 1C53AF4113DA6608A4B207AFF139039A /* RandomUInt64.swift in Sources */, - 373BCBD3BAFD4EEF405BA6A4B1DD206B /* SipHash-dummy.m in Sources */, - 03FA8EDEAAF28C2F20B6134374C42DAB /* SipHashable.swift in Sources */, - F79164F06C90C81A48EB83EE0AB5F761 /* SipHasher.swift in Sources */, + 28F87456F395D194B02E812E6B1DCDAC /* Addition.swift in Sources */, + C88AC084D58886CFA6B666B49A5F87B6 /* BigInt-dummy.m in Sources */, + E2DDA02098EA48EBEA7011294D1C8E8D /* BigInt.swift in Sources */, + A6B182AD5E28282465F05D387A7AC518 /* BigUInt.swift in Sources */, + D7BC11A992841B33082645731FA82F00 /* Bitwise Ops.swift in Sources */, + 61200003D737AAB21747C4C74C8C75F0 /* Codable.swift in Sources */, + A7635B8228A935694218D4B09BCA82E8 /* Comparable.swift in Sources */, + B182F607D8961CA7092658A75BFF52C4 /* Data Conversion.swift in Sources */, + 38685BFCFFF8F2A135D34B7307493783 /* Division.swift in Sources */, + 7FA73452440A65B3986F48D6565DE363 /* Exponentiation.swift in Sources */, + D08C645DE5798D5D92BF0614565E3876 /* Floating Point Conversion.swift in Sources */, + CB50E970EBCEF35611DCC72D4FF5BF9F /* GCD.swift in Sources */, + 308B6B640E9877439FF7ECFFAD0FFD8C /* Hashable.swift in Sources */, + 39D449F216BE4DE3589E7E81B588AD75 /* Integer Conversion.swift in Sources */, + 06260E614058886CB730147062CCAFF4 /* Multiplication.swift in Sources */, + 53075748A8F4AB36DEA4BF24122DB3B0 /* Prime Test.swift in Sources */, + C269FD974574810CE62B65643EFBCA5A /* Random.swift in Sources */, + 8D8CF0B18342D97199DF421D8BA1E9BB /* Shifts.swift in Sources */, + B551E04BB84EF28C4F57BDA08719AE9C /* Square Root.swift in Sources */, + FEB09606B26AF6EAF47160DC666E9AFE /* Strideable.swift in Sources */, + 3A177034BF98207612FA62B7D1F07854 /* String Conversion.swift in Sources */, + D48C7DA0E6ABE9E22822D44224FAECDA /* Subtraction.swift in Sources */, + FBDEEF432C313BE1B9FCF019D9FEA473 /* Words and Bits.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - CCBB251F64ECEFA16156983A60AFC5CA /* Sources */ = { + F022006A82673FF139BEA55EDA7B0B40 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DC7336EC3F7331F6A630EDA5F32F30E7 /* AEAD.swift in Sources */, - 5B5A1021C78EDC5EB1216C03C6B3A3E3 /* AEADChaCha20Poly1305.swift in Sources */, - C5443D345E878DA9400BCB516DF56B12 /* AES+Foundation.swift in Sources */, - 892CE74F3E4A889E6F69425C79DD7E55 /* AES.Cryptors.swift in Sources */, - 98DA224F5999FBB83A4D2090F9CFBCFC /* AES.swift in Sources */, - 66FCC04FCEB5CC2EA4BFF087187158B8 /* Array+Extension.swift in Sources */, - 08BBE3B0A2885A94DE68FEEA9FBCD256 /* Array+Foundation.swift in Sources */, - A40347FBA49DCAF786314B76D48EDD88 /* Authenticator.swift in Sources */, - 48AEAA9AEFB46AF33C359BAB88AEC324 /* BatchedCollection.swift in Sources */, - F68103A274867FC3D714744E8A1E1A27 /* Bit.swift in Sources */, - 505CA5BFBA1D9ADF951C40E1EA125BD2 /* BlockCipher.swift in Sources */, - 83B5BC56560C7D387AA427415CEAE05C /* BlockDecryptor.swift in Sources */, - 4BD49C6CEF3E4405132B4AF8CA0DE003 /* BlockEncryptor.swift in Sources */, - 9E500E32A76DA2F6356AA3391AD1311C /* BlockMode.swift in Sources */, - 1A3CA564761B01FC3D99DFD8EBD833DE /* BlockModeOptions.swift in Sources */, - E766E43AFDF18D5012C83670A1B48A27 /* Blowfish+Foundation.swift in Sources */, - CFE8E9ADF0B2C6758E619C4CDB178CF4 /* Blowfish.swift in Sources */, - 65D4A5CFCCD7ABBBCA0E9E2CEE10CA62 /* CBC.swift in Sources */, - 26F636BA86A94182E5B3D4B6371B7990 /* CBCMAC.swift in Sources */, - 13E900B217EB7AABB8685EDD051A97E5 /* CCM.swift in Sources */, - 5211E62A23DC79810DF988EBD96EFC32 /* CFB.swift in Sources */, - 3A73C66F10621ABDDA6DA99B83737FD1 /* ChaCha20+Foundation.swift in Sources */, - 3E531578FF1145393154092B38E896E6 /* ChaCha20.swift in Sources */, - 0E8865F19ED08938AD447CE3EFEB6164 /* Checksum.swift in Sources */, - 23BA112C655FA27BE38C9C321EBD3A4E /* Cipher.swift in Sources */, - 28CFAA3F415F6AA26FE3A81387558344 /* CipherModeWorker.swift in Sources */, - 0A0FBCAD7A1F908EF9B1197FE8BB63D2 /* CMAC.swift in Sources */, - C4CDFEEEDDAD44CED19260B6DBEAE02E /* Collection+Extension.swift in Sources */, - 169B55A24D3FDC159B797D85588C8A34 /* CompactMap.swift in Sources */, - EF2D257F439AB4E0C37E407B20DF41BC /* Cryptor.swift in Sources */, - 4C2FA74837ADF9282EC82AAEA3344905 /* Cryptors.swift in Sources */, - 8AA4F289B20DB86C6D5CFC0551222C48 /* CryptoSwift-dummy.m in Sources */, - E1705CF699458B16784782F8A86F23EB /* CTR.swift in Sources */, - EFB38A3AC0C79689874458BE12601515 /* Data+Extension.swift in Sources */, - 14A6030032E12C1B957F620FECF742EA /* Digest.swift in Sources */, - 514821AC03DEAB80E61FD438FC0CF126 /* DigestType.swift in Sources */, - E25CC0BD6475813592D7722F3FCECA43 /* ECB.swift in Sources */, - F6666F3FE8D03AFE4FDEE4421D50B914 /* GCM.swift in Sources */, - F5BCE1E730F746F620A9DB13EE2C1B60 /* Generics.swift in Sources */, - DBE553B80B7B7A047BC80FADEC7B5F83 /* HKDF.swift in Sources */, - 72541048B150E29F22A0CBD388ED2ABD /* HMAC+Foundation.swift in Sources */, - 0627DC84943C9B21BBFFD77F73ECE3AA /* HMAC.swift in Sources */, - 7950CDCD0730EC4DE69E4452A2117CB4 /* Int+Extension.swift in Sources */, - 18704C29935E06F5FB353933C7B93897 /* MD5.swift in Sources */, - 2E3A0CE83A9DC669521D768D83113007 /* NoPadding.swift in Sources */, - 7B50A0E57C8C0F860C0E2D3E2DF889C5 /* OFB.swift in Sources */, - 168831EA2809233CFD6E98640D126804 /* Operators.swift in Sources */, - BF1CBE2864240ABA0FFCA1990215D2C5 /* Padding.swift in Sources */, - 948C38948743D31A8E07ECF1278C0438 /* PBKDF1.swift in Sources */, - 0F47AECED76239456F530A9F34C202AB /* PBKDF2.swift in Sources */, - 31FCEF8F13F00A6EB5C8E43CD2040D52 /* PCBC.swift in Sources */, - 90BB63BE1A3F2906186D961714165CD7 /* PKCS5.swift in Sources */, - 0D32A5EE13EC8FB94162257D12B47954 /* PKCS7.swift in Sources */, - 2D6F68A3EE6AD170EDC30E7485B54524 /* PKCS7Padding.swift in Sources */, - F6F9AF37C197AAA6E2F2341E1D2F3EAD /* Poly1305.swift in Sources */, - 9979250510F331D6F6C4BF5F8A07234C /* Rabbit+Foundation.swift in Sources */, - 84AD9AA7FCDCF491E5F839BDA9E62923 /* Rabbit.swift in Sources */, - EDCBAD6FE0DC05519BE87FA79D6ECCD1 /* RandomBytesSequence.swift in Sources */, - 3E4F34CF3A56C3BCA61A15667B8911CC /* SecureBytes.swift in Sources */, - D41CBBA4660B26D0AE12C867C2D27DF3 /* SHA1.swift in Sources */, - 3619B989C2E488056B62E7517BF4CCCB /* SHA2.swift in Sources */, - 287AF814872A1828332826075A3A769D /* SHA3.swift in Sources */, - 5FCE918F81777C227E72A6C620FE0E9B /* StreamDecryptor.swift in Sources */, - 97D85307763F8B8299524EEFD059729E /* StreamEncryptor.swift in Sources */, - 4F448640DE2AB108DE676C77DEF2E571 /* String+Extension.swift in Sources */, - 9E8CC528BCE6CD8751B925E2DFFC7E72 /* String+FoundationExtension.swift in Sources */, - 938239477B6A9C665CB93642E1DFD0EB /* UInt128.swift in Sources */, - C4588BD98D41DCD0F44F6FA043DC15FF /* UInt16+Extension.swift in Sources */, - E4339E5E7ECB60FD90211A3CD8E64568 /* UInt32+Extension.swift in Sources */, - 07CB80647C63863F46097ECFE0E2852C /* UInt64+Extension.swift in Sources */, - 12D7EAE6F2CEC81702FD70455699210D /* UInt8+Extension.swift in Sources */, - A1257C2EF19E838CC9954197DDCA5734 /* Updatable.swift in Sources */, - 58D378DF3FF9C2C523F72714F028BC18 /* Utils+Foundation.swift in Sources */, - 47F09AB386ECB4F06DC94B5D84B829E3 /* Utils.swift in Sources */, - CF9E91FF64AEBD06486F49509872C007 /* ZeroPadding.swift in Sources */, + 0FE0F12FD785F9528B9EE88C7148B0AD /* after.m in Sources */, + 349044BCB89D871D83EBFAA4B45D4B02 /* after.swift in Sources */, + 6B0A3F67AEC230EA29FBA9B55BF1DEF3 /* afterlife.swift in Sources */, + 2E3E3C5559295E295D990F238FCFE0BF /* AnyPromise.m in Sources */, + EDDC89B2192EE2CDFD1026AA619C5E8E /* AnyPromise.swift in Sources */, + FD865B83616CC7EDC1055EA790130B66 /* Box.swift in Sources */, + 910974DF68B247D50C88FD3FE865C293 /* Catchable.swift in Sources */, + 9245FBB1658AEA979C4ECE13636163D8 /* Configuration.swift in Sources */, + 0E7B1C65909FA4D3455404D56F525882 /* CustomStringConvertible.swift in Sources */, + 0B8B4A4E4DAB4112885B853A64E5B884 /* Deprecations.swift in Sources */, + B5756910E26BBBE8911220150D40D0D1 /* dispatch_promise.m in Sources */, + 9ECE6622AAD1511678871B048F90A0A2 /* Error.swift in Sources */, + FE04F55C7D2ED5CDB4281FF7ABE598E0 /* firstly.swift in Sources */, + 21E3C68294A9EAA3E73570E77EE096B7 /* Guarantee.swift in Sources */, + 39D5017EF26C38684B3DBA9443363D12 /* hang.m in Sources */, + 62B4DB558D551C52F017C2B3E4FCEC8E /* hang.swift in Sources */, + 4BC7BB81F5FC7892146F6B70AE77508E /* join.m in Sources */, + 12201E6E14BFE3B9E4B49941A8100BA5 /* NSNotificationCenter+AnyPromise.m in Sources */, + 0DC6241C2B48679C60444E1235084B14 /* NSNotificationCenter+Promise.swift in Sources */, + A9A483C08153F01DCDB0EC2A337EBD2B /* NSObject+Promise.swift in Sources */, + ACC08A0696D9569ABDD8AF4E3DF56CF0 /* NSTask+AnyPromise.m in Sources */, + D418E86F90AAF0BD9F8628CF6464498E /* NSURLSession+AnyPromise.m in Sources */, + 5491A7127F5E2CE887DD8ED7E338169B /* NSURLSession+Promise.swift in Sources */, + 7FEE7085B27F38DAFA2F55282C9B44AE /* Process+Promise.swift in Sources */, + 99965CC6D15DB9A0026C8197E549E41C /* Promise.swift in Sources */, + CA10BA461F581A943B1511A2D1F1B9A6 /* PromiseKit-dummy.m in Sources */, + 80947B39695EA3E9DD92A565A4877BF0 /* race.m in Sources */, + 2410FAF7BF8290F3795942E0A17156D5 /* race.swift in Sources */, + 049ABE1ADFDA14D374DB3841BBD870BA /* Resolver.swift in Sources */, + 7410CC50787B856351BD88BBE4391FFA /* Thenable.swift in Sources */, + 1F8AC5416AB068B3A65A29F1F17D294F /* UIView+AnyPromise.m in Sources */, + C0E3847468DF809D8D77FEF43CC5EEDB /* UIView+Promise.swift in Sources */, + 9C930D8A96627A1F5059FF23AACB21D4 /* UIViewController+AnyPromise.m in Sources */, + 094DE6994F62CDE66FA3220E38C8A1DA /* UIViewPropertyAnimator+Promise.swift in Sources */, + A0297ECD4FA5D324B754DF3A4061C652 /* when.m in Sources */, + 6A02A36EE68CF19A4536797BFC94AB1E /* when.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D2EBE9A685632B40A0887329BD945EB5 /* Sources */ = { + F7A66E72DAAECA8F77DA441AC3920C60 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 74D763735BB92705D8495572A7991704 /* lax_der_parsing.c in Sources */, - C52F5CF7ED0B6C4EDD0C0DAC40D16B4D /* lax_der_privatekey_parsing.c in Sources */, - 3C55B3F8AC9C9FD5E72C85864D127009 /* secp256k1.c in Sources */, - C1E5BA379AC870AEFBB027BA37F0D4AC /* secp256k1.swift in Sources */, - 3F731C8AD9AE9A8E29567EB2DEED4E53 /* secp256k1_swift-dummy.m in Sources */, + 00CB6D803209D1D51680D4110AB68F57 /* AbstractKeystore.swift in Sources */, + 5A990B55EAE0F345374F6F2CF8FA872C /* Array+Extension.swift in Sources */, + 2774E2BB4B351B11DB749866EB68B804 /* Base58.swift in Sources */, + 3A33EE9D120DAFC852E05590D9FFA83B /* BigUInt+Extensions.swift in Sources */, + 0099A3BA3AE5F30BE11463D07B08CA94 /* BIP32HDNode.swift in Sources */, + C2C2A13C72D2786B953061E56A72118C /* BIP32Keystore.swift in Sources */, + 7612DA94727EFFA953E786302B7C18D1 /* BIP32KeystoreJSONStructure.swift in Sources */, + 6E2CA40AEC7AC77A6ACDE16ADC8FEE5F /* BIP39+WordLists.swift in Sources */, + 4A250928691C0CA6086C56434D73A5E8 /* BIP39.swift in Sources */, + 98E016CD673552FBE975020F81574126 /* BloomFilter.swift in Sources */, + 237769B1B3B0B3F548C4FE850F08B0DD /* ComparisonExtensions.swift in Sources */, + DBB0EB80D3E57B885DD59E5C6A6C3D6E /* ContractProtocol.swift in Sources */, + C9CEC95557C44846121CD6072E2776D9 /* CryptoExtensions.swift in Sources */, + BFC5F204A65B20A91D2113BE1FD89FC4 /* Data+Extension.swift in Sources */, + 6C9B106F6756B25ECEEB63D83945D979 /* Dictionary+Extension.swift in Sources */, + F0F633687DB132D3ED565B7B8F85AB85 /* EIP67Code.swift in Sources */, + 4CDF2E91F9F02099512EE0DBE6B79897 /* EthereumContract.swift in Sources */, + 7F22F82C504E931BE02DEE7FE432AF1F /* EthereumFilterEncodingExtensions.swift in Sources */, + 641D43895E28A4AF07787855E5C710EA /* EthereumKeystoreV3.swift in Sources */, + F92A6A004C1362B1B3CD4A09A3096F32 /* EthereumTransaction.swift in Sources */, + 0B744323C08EE005F81C01DFDB92819A /* EventFiltering.swift in Sources */, + CDF215A1833034C375529C47FDA198E7 /* IBAN.swift in Sources */, + F304CF6124B6E029995272154108E8A3 /* KeystoreManager.swift in Sources */, + 9DB7C215959B48D6A7E0F1A4012F9761 /* KeystoreV3JSONStructure.swift in Sources */, + EB68D0EF4BC2841C5D20C8445057764B /* NativeTypesEncoding+Extensions.swift in Sources */, + FFED60F90F7F8DC33F83F873A1525E0F /* NSRegularExpressionExtension.swift in Sources */, + 4953F9319A1CDC15238FB32E356AA91E /* PlainKeystore.swift in Sources */, + B7C2CA19BF810C09BA258A4DD6F78FF6 /* Promise+Batching.swift in Sources */, + 5DB71B9576FA0B1AE4CD5B2A2E615A60 /* Promise+HttpProvider.swift in Sources */, + E90CE00037E376AA2B7C4B351050D608 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, + ECD4E3627667FD78779E203E96891BA9 /* Promise+Web3+Eth+Call.swift in Sources */, + 5026CB37D6C150731E3BDA9C3EBD37A9 /* Promise+Web3+Eth+EstimateGas.swift in Sources */, + 1250419CCA5E6EA65F95FCEB1C1BA381 /* Promise+Web3+Eth+GetAccounts.swift in Sources */, + 9B2097D2175A4B9C14A4FC8DD3A4FDBA /* Promise+Web3+Eth+GetBalance.swift in Sources */, + 202BFBC315307612A94F35CC7CB8431C /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */, + 09EBA3DBCD445DA87CFB492BC8137FCF /* Promise+Web3+Eth+GetBlockByNumber.swift in Sources */, + 95A8CF5F7CC7D24C3474A28A238A39A0 /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */, + 422301E71FEA358203245FA9379F7BB6 /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, + 3207BDF1C7431A2959D217D7E3A7499F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */, + 6871EEB8EB35AA9C82E5DF79EF8E930D /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, + 123520F491A539CAFC1BE9CF22436D74 /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */, + 7DF14AA267FEF532169C35ADC4F63788 /* Promise+Web3+Eth+SendRawTransaction.swift in Sources */, + 953CDC5B328EC35D0D3FEF4B7F6006BB /* Promise+Web3+Eth+SendTransaction.swift in Sources */, + 237A14D8DEC5F90A4B4F2B1B3F2E805A /* Promise+Web3+Personal+CreateAccount.swift in Sources */, + E455C18FE76D1EADCFA4C82C54BFB7EA /* Promise+Web3+Personal+Sign.swift in Sources */, + DC91F1E88800D0357BE578EC44265B16 /* Promise+Web3+Personal+UnlockAccount.swift in Sources */, + F4628E61A2ABC3A636FE8BB6D34EE976 /* Promise+Web3+TxPool.swift in Sources */, + F0CE1B737A7F6F7F82119388A336A651 /* RIPEMD160+StackOveflow.swift in Sources */, + FEFD7E50B1326A10CB57C91E1EDE9E6A /* String+Extension.swift in Sources */, + DFB3B8D2D7608562C552668739817B53 /* TransactionSigner.swift in Sources */, + 5C713F421310FF1531E84ABFB87A9A3A /* Web3+BrowserFunctions.swift in Sources */, + CE68AD6293AC6F68B1F6ABC6DEA179C4 /* Web3+Contract.swift in Sources */, + 2D7F91B8A926238E80B32110B66C0CB3 /* Web3+ERC1155.swift in Sources */, + EF95E218732C03C07D96D4FFE73585DA /* Web3+ERC1376.swift in Sources */, + 3E50CD8B1BB7890C9C774E6CDF3BCB60 /* Web3+ERC1400.swift in Sources */, + F447B143091330B7FA7A247CD99999D1 /* Web3+ERC1410.swift in Sources */, + 76B8531016F2FF0500E2BCAAE3DF010B /* Web3+ERC1594.swift in Sources */, + D7221CA5FB4063E482CBA9E1E13A87B0 /* Web3+ERC1633.swift in Sources */, + F37524F31521C9EB8E9061EDBC5ACF84 /* Web3+ERC1643.swift in Sources */, + B13475AF4E97F8F19C7C93EEF4D172F5 /* Web3+ERC1644.swift in Sources */, + 472D0CD8F5DABB8F407AB71234D705B9 /* Web3+ERC165.swift in Sources */, + 81ADAC40BF7019558DF468DC9B8D65BF /* Web3+ERC20.swift in Sources */, + 82C18E372E61A80A3F85D85944E901BA /* Web3+ERC721.swift in Sources */, + EABB5BF30EDD8F749FE99C5B26DEA20B /* Web3+ERC721x.swift in Sources */, + DFB7C270FEF05B5C82BDF509780CEEED /* Web3+ERC777.swift in Sources */, + E70631A32FDF893A7E48A74F0F431DED /* Web3+ERC820.swift in Sources */, + CF36999F88767E58D880A851A15E4828 /* Web3+ERC888.swift in Sources */, + 9C46F6BE8DA5D3E6373EEF2C7EC6FDEC /* Web3+Eth+Websocket.swift in Sources */, + 461F1791B1893DCC372BB82A1EA92C2B /* Web3+Eth.swift in Sources */, + 5A6CB89BE7C5D919F4B9DC88A12670EE /* Web3+Eventloop.swift in Sources */, + 609FD1B7C761BB0E829DFF771C4069AB /* Web3+EventParser.swift in Sources */, + 1A85105801E7A5827EA580D2ED91D845 /* Web3+HttpProvider.swift in Sources */, + B339871CFB8B6403B28E4B337AD58DF1 /* Web3+InfuraProviders.swift in Sources */, + FE220CC3EE3382E71D54EBDC744650CF /* Web3+Instance.swift in Sources */, + B0D18E57BF68A6FF324FA12B8BA53F29 /* Web3+JSONRPC.swift in Sources */, + FB2B16D10750275868756D893AA963F2 /* Web3+Methods.swift in Sources */, + 302081E69996CA585D13DB82415919AD /* Web3+MutatingTransaction.swift in Sources */, + A534E40816DCB7B90D007652873C49E9 /* Web3+Options.swift in Sources */, + 5186A4010426611D2C15FB0AFD84766E /* Web3+Personal.swift in Sources */, + FDCA12327BD093B64B77BE7B60529889 /* Web3+Protocols.swift in Sources */, + DD76E0A5EC2D5E4F521A2928B40CAE89 /* Web3+ReadingTransaction.swift in Sources */, + 2EA087C68DC1E65F59A849A8E39F2F5F /* Web3+SecurityToken.swift in Sources */, + F662742AEF81DA5FEFA2D0EB5F48A8A8 /* Web3+ST20.swift in Sources */, + 4635B6A47DE966ADFD3CBCB94E6AD575 /* Web3+Structures.swift in Sources */, + F9C6D7E2B609DBEF22EA34A012D20806 /* Web3+TxPool.swift in Sources */, + 62AB914D2396842D00E6F828F2621D10 /* Web3+Utils.swift in Sources */, + 979248437CE2E276A35FBF6434273E2F /* Web3+Wallet.swift in Sources */, + 9FFF8A42F340F8122237F1BC085BC1C5 /* Web3+WebsocketProvider.swift in Sources */, + 8C2D4B5DFD9A87FE1B9BFB47F82FEA3B /* Web3.swift in Sources */, + 176793436085D193D9B173833894B9E0 /* web3swift-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D53F5616BA38639474F9A1A3ECEB519F /* Sources */ = { + F91EFC10A2D49F24C05E220C65D3322D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0F843C702EF22858E3BD92556B4A53C6 /* RLP.swift in Sources */, - E641B1AC99C2FE1FB0B1BF1DF49CCECA /* SwiftRLP-dummy.m in Sources */, + F20D6430C0FE639406DDB40FBD07D129 /* Pods-web3swiftExample-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 04FE31CB63EB17E44AE868F7B8C30FDA /* PBXTargetDependency */ = { + 176F05F0955BC27F0A62C705479976A0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EthereumAddress; - target = 70B9B02B65110648B14877481CCA7615 /* EthereumAddress */; - targetProxy = 5A28E66F1F6078F3843ED6996137737F /* PBXContainerItemProxy */; + name = PromiseKit; + target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; + targetProxy = A7501CC72FDF1005747A3B8C8E1A7320 /* PBXContainerItemProxy */; }; - 0689FDC518D6088B176D9F011A67FEE6 /* PBXTargetDependency */ = { + 1C5E5C27D41561ED19E5644B80B8E0E3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = scrypt; - target = 0ED0B491AE891D6CDC3963787F0E2DB4 /* scrypt */; - targetProxy = 39482B44F79B6EE7854EFF1F2D1F3220 /* PBXContainerItemProxy */; + name = PromiseKit; + target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; + targetProxy = B05B0B18B47E891D708F146F16F60782 /* PBXContainerItemProxy */; }; - 198220CFB13D643C4BD4C6DF87CB5A21 /* PBXTargetDependency */ = { + 1EFA4D0E76662C95C3AAA39D10B5AB0D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EthereumABI; - target = 888C7AD1D57FC2EBE4CF200F6BD2A842 /* EthereumABI */; - targetProxy = 6E2F65D510C1B1CCAB072F2EA027F15D /* PBXContainerItemProxy */; + name = CryptoSwift; + target = 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */; + targetProxy = 1E6B6D61F1650B805E2F9F8A57044F75 /* PBXContainerItemProxy */; + }; + 2215DB4BE317DE647E966C0BB7E04C86 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = EthereumAddress; + target = 01FB31BC868580C5272945EF4898FD10 /* EthereumAddress */; + targetProxy = 2A2D979C8045D7EFCFADB25184A5AB89 /* PBXContainerItemProxy */; }; - 2965740EC5E2A6513D2A920460471AD7 /* PBXTargetDependency */ = { + 2550C71FD6EEDBD73B73227F06F33146 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = BigInt; - target = 137411A4D3CCDCAE6EE1A79271E0889C /* BigInt */; - targetProxy = 5ED7085516CC4C38EC3D8A95CD2F66A6 /* PBXContainerItemProxy */; + target = 09DD83B7D075842A3A5105AD410BD38A /* BigInt */; + targetProxy = 7D091C03F5DCD8C1C0B02F60E0250441 /* PBXContainerItemProxy */; }; - 3E40A4D7B4F79239296333A3133306B5 /* PBXTargetDependency */ = { + 2E3381AF0DBFB53B3D6152E90A96AD53 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SwiftRLP; - target = B7B21C794593341834C7614B423C9C8A /* SwiftRLP */; - targetProxy = C5958E9968F8CD1EBAAB778373D586E1 /* PBXContainerItemProxy */; + name = BigInt; + target = 09DD83B7D075842A3A5105AD410BD38A /* BigInt */; + targetProxy = E8D2E563769EEAAC6D5992C7F8EF8D9A /* PBXContainerItemProxy */; }; - 48CF01CC6B744BD2A53AE5DD32E778F1 /* PBXTargetDependency */ = { + 30D46F50189BF2F491098A9DF710AA46 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = EthereumAddress; - target = 70B9B02B65110648B14877481CCA7615 /* EthereumAddress */; - targetProxy = 525BA8733B304B49DB740366DDBA734A /* PBXContainerItemProxy */; + target = 01FB31BC868580C5272945EF4898FD10 /* EthereumAddress */; + targetProxy = A20607AB13883955D051476872E52773 /* PBXContainerItemProxy */; }; - 61069262FD5BCD41F1C291E25CAF599B /* PBXTargetDependency */ = { + 3A59C8E7BA3221DAF88694C9BB4D9D95 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SipHash; - target = 7FF8752D2607B0617A8EA59CB6F52DA7 /* SipHash */; - targetProxy = C6C17D0086F8D9E70B8AF619657FF2BC /* PBXContainerItemProxy */; + target = 377DAE4050D766B30C3A484B8525BB35 /* SipHash */; + targetProxy = 44B5988268A8BE62EFAA336202D452FB /* PBXContainerItemProxy */; }; - 6136549AD271A8B68F4A487F363AEE56 /* PBXTargetDependency */ = { + 531BE99BB21B97FBFCA6A3B42DDA772F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CryptoSwift; - target = 6F5F8CED7C3379A0404E745819F8B311 /* CryptoSwift */; - targetProxy = 0871B58B957319E5803181DB6310C9D9 /* PBXContainerItemProxy */; - }; - 6C89BCE50AEDF956DF810088461B0749 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CryptoSwift; - target = 6F5F8CED7C3379A0404E745819F8B311 /* CryptoSwift */; - targetProxy = DEE978CB09E9ED72BBBC50BF4790740F /* PBXContainerItemProxy */; + name = SwiftRLP; + target = 3D875D5B2A0B02BF6B6224B9A2A9F7B2 /* SwiftRLP */; + targetProxy = D14968B7875CD11DDFBF8B7AA745A8DF /* PBXContainerItemProxy */; }; - 7830CB23C813714C3C7806743F44C52F /* PBXTargetDependency */ = { + 5AEE870C1EA199727D1407490D01487D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromiseKit; - target = DD6DF1A42DE8BB0017BCCD871EA0F04D /* PromiseKit */; - targetProxy = 4D6FC31C764576609CC511FFA544996F /* PBXContainerItemProxy */; + name = SipHash; + target = 377DAE4050D766B30C3A484B8525BB35 /* SipHash */; + targetProxy = 906B69A25DC901A2E16CD1D7B745C087 /* PBXContainerItemProxy */; }; - 82927588D81F01270CF30C1779752B8B /* PBXTargetDependency */ = { + 6436E402AC4B79C5F527A7450B198CB0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = CryptoSwift; - target = 6F5F8CED7C3379A0404E745819F8B311 /* CryptoSwift */; - targetProxy = 819472C9CA5B12290E4B3D5D1BD88D51 /* PBXContainerItemProxy */; - }; - 8315E99E211AE31E4A346F2FF7D10A53 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BigInt; - target = 137411A4D3CCDCAE6EE1A79271E0889C /* BigInt */; - targetProxy = BD97544266AEEE50206B558177DB9756 /* PBXContainerItemProxy */; + target = 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */; + targetProxy = 3422ACED8DA39CC9DD001E6A1956BE18 /* PBXContainerItemProxy */; }; - 86AB873F1433E4E93954368AA21DBA47 /* PBXTargetDependency */ = { + 73A80CAA8661941A0023F8C63D40660D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SwiftRLP; - target = B7B21C794593341834C7614B423C9C8A /* SwiftRLP */; - targetProxy = 49EEDCC34FEB88EEA65615E7A8110C7C /* PBXContainerItemProxy */; + name = secp256k1_swift; + target = 674FDFDEB40835621D833AF8EBA35016 /* secp256k1_swift */; + targetProxy = DA1507C00D74D3ED04029F48E2D070D2 /* PBXContainerItemProxy */; }; - 922E624353072D09D48A9881165793C5 /* PBXTargetDependency */ = { + 7D0F59ED1BC4B0CD764B035B4447B139 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = web3swift; - target = 6385AA5DEB59BDFB6EC695A6F0524DA7 /* web3swift */; - targetProxy = A1F782D51A5AA0117251A7A9DAA8C25B /* PBXContainerItemProxy */; + name = BigInt; + target = 09DD83B7D075842A3A5105AD410BD38A /* BigInt */; + targetProxy = 4229A10574F611AD77A5E4BC8E554D6E /* PBXContainerItemProxy */; }; - A2074A1660AEBBC7DA8071193F4C114A /* PBXTargetDependency */ = { + 8D3FB05AA090D13BAB100DD33BCBDDD5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EthereumABI; - target = 888C7AD1D57FC2EBE4CF200F6BD2A842 /* EthereumABI */; - targetProxy = 2BB8C2D8D708208AFE67D85DAFD72CC9 /* PBXContainerItemProxy */; + name = CryptoSwift; + target = 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */; + targetProxy = 95CE4774E44D2FA7D98EB81C9ACAD8B0 /* PBXContainerItemProxy */; }; - A21A883EB1BF16D519AA5DFA79834214 /* PBXTargetDependency */ = { + 9D8DF49FBA95C1367E6B96EBC28CD16E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = EthereumAddress; - target = 70B9B02B65110648B14877481CCA7615 /* EthereumAddress */; - targetProxy = 4E9D74E7CDF6D61C608BA27D99B37C91 /* PBXContainerItemProxy */; + target = 01FB31BC868580C5272945EF4898FD10 /* EthereumAddress */; + targetProxy = A612C6E4403F7617B6E4F34785F746C7 /* PBXContainerItemProxy */; }; - BAF3F8AE650394F5AA5070D3BAD6EDFF /* PBXTargetDependency */ = { + A2B1C0A327EF7A66B3DA8DE78DE264AF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = secp256k1_swift; - target = 640B979328B6328F6325026CA79A1B22 /* secp256k1_swift */; - targetProxy = 7840D2071B0BD04D24615CAC8745B9A9 /* PBXContainerItemProxy */; + name = Starscream; + target = 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */; + targetProxy = CDA4AC8E5D3E163086DB3940F73E2871 /* PBXContainerItemProxy */; }; - BF71B09E1287BC86521296CBAB812B51 /* PBXTargetDependency */ = { + AF46D8110378D31E354E5E94FCEE27A0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CryptoSwift; - target = 6F5F8CED7C3379A0404E745819F8B311 /* CryptoSwift */; - targetProxy = DA96D27179959DC79F99D9EE1AA60AA8 /* PBXContainerItemProxy */; + name = EthereumABI; + target = 6FEC3F0567EB42CC234EFD7117C398D3 /* EthereumABI */; + targetProxy = 26CC29C9B50A0D777F65972FBF8C0F6B /* PBXContainerItemProxy */; }; - C881757934457307B3DA9AF12C1E1575 /* PBXTargetDependency */ = { + B2A69ACC2DD87EAA068A75A6360A7735 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SipHash; - target = 7FF8752D2607B0617A8EA59CB6F52DA7 /* SipHash */; - targetProxy = E4BE00A03DB6D1CE0B1840D2BC4765C4 /* PBXContainerItemProxy */; + name = SwiftRLP; + target = 3D875D5B2A0B02BF6B6224B9A2A9F7B2 /* SwiftRLP */; + targetProxy = 0F5D14C41927EFF7FB4E7097551E5F79 /* PBXContainerItemProxy */; }; - DF954395EEFCFDA4A241AAB8CB6DF94E /* PBXTargetDependency */ = { + B309FD9161EE2977D9635C1A48484660 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = scrypt; - target = 0ED0B491AE891D6CDC3963787F0E2DB4 /* scrypt */; - targetProxy = 95CE69833B7C10A627F1F97B568336B8 /* PBXContainerItemProxy */; + name = CryptoSwift; + target = 99313990C1D76A6D1D017868B6975CC8 /* CryptoSwift */; + targetProxy = D8FB5407B91F31E3B5A317F090589F32 /* PBXContainerItemProxy */; }; - E9979F57AA0621BF78F8CA61114E653E /* PBXTargetDependency */ = { + B985F40217B90B22E9F4AAA970FB7A4B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = BigInt; - target = 137411A4D3CCDCAE6EE1A79271E0889C /* BigInt */; - targetProxy = 078BF1DF3ACB457691AF40DF07987ECE /* PBXContainerItemProxy */; + name = secp256k1_swift; + target = 674FDFDEB40835621D833AF8EBA35016 /* secp256k1_swift */; + targetProxy = 455BE2E93DECCA8E125ADBA85B8F340D /* PBXContainerItemProxy */; }; - F296F7677DABEE8C3716D1CAD280BAFD /* PBXTargetDependency */ = { + C957976DE0558229E6884ACE2ACFB6FE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CryptoSwift; - target = 6F5F8CED7C3379A0404E745819F8B311 /* CryptoSwift */; - targetProxy = 94EDB502D6BC3D651C1D4E9B20E840B5 /* PBXContainerItemProxy */; + name = web3swift; + target = 99364D9FB07EF3FA5DFE1237001805EC /* web3swift */; + targetProxy = 122BDAEC542EB024996342CFEEB0132B /* PBXContainerItemProxy */; }; - F4F78566B8D7F8618A7473EFFB5954DE /* PBXTargetDependency */ = { + DA95CCBC29AB570ED77F7D7A1AAA2A7B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = BigInt; - target = 137411A4D3CCDCAE6EE1A79271E0889C /* BigInt */; - targetProxy = E9E12D4F2CEA31E8E4AE413FDF993C2D /* PBXContainerItemProxy */; + target = 09DD83B7D075842A3A5105AD410BD38A /* BigInt */; + targetProxy = BA87D5437A150000A865A89F17DE4A87 /* PBXContainerItemProxy */; }; - FF8F1A79C4A5A7B36C60ECDADF87FD76 /* PBXTargetDependency */ = { + ECE67991B27379138AE4893BA097A282 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromiseKit; - target = DD6DF1A42DE8BB0017BCCD871EA0F04D /* PromiseKit */; - targetProxy = DBD880B87E9DC4E7563E385D2DCC57EC /* PBXContainerItemProxy */; + name = Starscream; + target = 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */; + targetProxy = 733614E863CD6CBD9390B0396F05B033 /* PBXContainerItemProxy */; }; - FFB2B3D2DFFAF3A27F5025F5F2421CF1 /* PBXTargetDependency */ = { + F0496D93E0C3E5311D41886F6175F6EF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = secp256k1_swift; - target = 640B979328B6328F6325026CA79A1B22 /* secp256k1_swift */; - targetProxy = 87FDCF4A0EA92BECA46C016EA459BEAE /* PBXContainerItemProxy */; + name = EthereumABI; + target = 6FEC3F0567EB42CC234EFD7117C398D3 /* EthereumABI */; + targetProxy = 8BE5BBECBE186191951B19C8EF3FD50A /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 08B0394D5F17A9F046DC0719C25BA452 /* Debug */ = { + 0136A398D878A3EE3D08D0A77E8C8D92 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 79C61A58686B27952DD069E1ECF7D303 /* SwiftRLP.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP/SwiftRLP-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftRLP/SwiftRLP-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SwiftRLP/SwiftRLP.modulemap"; + PRODUCT_MODULE_NAME = SwiftRLP; + PRODUCT_NAME = SwiftRLP; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.1; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 07488D4657FB0A78086563621D425F8A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -2676,9 +2767,9 @@ }; name = Debug; }; - 0CDA6A3860506514D2FCA89528D0FB0B /* Debug */ = { + 1A7ED22A97AC4904B564BA6C22139D5A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FCF992981B15E8A639208AFD0BC42E16 /* EthereumABI.xcconfig */; + baseConfigurationReference = 2A3DBFE49993A10768C9E49994A5EB9F /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2689,59 +2780,58 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/EthereumABI/EthereumABI-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/EthereumABI/EthereumABI-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/EthereumABI/EthereumABI.modulemap"; - PRODUCT_MODULE_NAME = EthereumABI; - PRODUCT_NAME = EthereumABI; + MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = CryptoSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 0F3AB8214DDECE3D5C0595937D391234 /* Release */ = { + 1FDB650F60FF368500836F9E2BF6D3E0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FCF992981B15E8A639208AFD0BC42E16 /* EthereumABI.xcconfig */; + baseConfigurationReference = DFEBD29CE5E90435A009304519CA3C67 /* web3swift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/EthereumABI/EthereumABI-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/EthereumABI/EthereumABI-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/web3swift/web3swift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/web3swift/web3swift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/EthereumABI/EthereumABI.modulemap"; - PRODUCT_MODULE_NAME = EthereumABI; - PRODUCT_NAME = EthereumABI; + MODULEMAP_FILE = "Target Support Files/web3swift/web3swift.modulemap"; + PRODUCT_MODULE_NAME = Web3swift; + PRODUCT_NAME = Web3swift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 15FE65A30BE8C48DE22C7B79FF048B4E /* Release */ = { + 2EDF7F0D2E467AA826433115693EA8D7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 900BF76676BA8D9C9EE025EFBFF7DB36 /* web3swift.xcconfig */; + baseConfigurationReference = 4B5645216773F21B1489099DB3EDE72E /* BigInt.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2752,18 +2842,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/web3swift/web3swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/web3swift/web3swift-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/BigInt/BigInt-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/web3swift/web3swift.modulemap"; - PRODUCT_MODULE_NAME = Web3swift; - PRODUCT_NAME = Web3swift; + MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; + PRODUCT_MODULE_NAME = BigInt; + PRODUCT_NAME = BigInt; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2771,41 +2861,39 @@ }; name = Release; }; - 2F7D61A442C37889C3A779F5DF14BBCC /* Release */ = { + 3B77DCD747393EC46EDB8B76BB5452E7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 22044D50374EB3808D2F5A905DD1D63C /* BigInt.xcconfig */; + baseConfigurationReference = F6C930A526E4E70E54230B535BC30CC3 /* EthereumAddress.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BigInt/BigInt-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress/EthereumAddress-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/EthereumAddress/EthereumAddress-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = BigInt; + MODULEMAP_FILE = "Target Support Files/EthereumAddress/EthereumAddress.modulemap"; + PRODUCT_MODULE_NAME = EthereumAddress; + PRODUCT_NAME = EthereumAddress; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 4A42A7D9809B818B92AA22ED8453D3A5 /* Release */ = { + 41CE5D5607B5DF7356F1D5607CB3EABB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1160128225B85906623514D7D7090ECB /* CryptoSwift.xcconfig */; + baseConfigurationReference = 5D2DB9499C8C203F2AA7345E283D63F0 /* SipHash.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2816,61 +2904,59 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SipHash/SipHash-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SipHash/SipHash-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = CryptoSwift; + MODULEMAP_FILE = "Target Support Files/SipHash/SipHash.modulemap"; + PRODUCT_MODULE_NAME = SipHash; + PRODUCT_NAME = SipHash; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 54205352F5416DEC755C82630AEF5741 /* Debug */ = { + 4C8D211B7312AD12AC3A42FC462499D3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C870B1A3D456FD4314DD4C0607A42610 /* SipHash.xcconfig */; + baseConfigurationReference = DFEBD29CE5E90435A009304519CA3C67 /* web3swift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SipHash/SipHash-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SipHash/SipHash-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/web3swift/web3swift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/web3swift/web3swift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SipHash/SipHash.modulemap"; - PRODUCT_MODULE_NAME = SipHash; - PRODUCT_NAME = SipHash; + MODULEMAP_FILE = "Target Support Files/web3swift/web3swift.modulemap"; + PRODUCT_MODULE_NAME = Web3swift; + PRODUCT_NAME = Web3swift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 560AFC0BB3FFAEAE9E60EC865CF22397 /* Release */ = { + 6F1E4CE0C7DD7036D50A7F41EFC29DEB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 50ABF7F2053D09965350B67F7E0E76E2 /* Pods-web3swiftExample.release.xcconfig */; + baseConfigurationReference = 11209CB934557C390F9C7BEB1FD06896 /* secp256k1_swift.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2880,60 +2966,58 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift/secp256k1_swift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/secp256k1_swift/secp256k1_swift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/secp256k1_swift/secp256k1_swift.modulemap"; + PRODUCT_MODULE_NAME = secp256k1_swift; + PRODUCT_NAME = secp256k1_swift; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 8267393F9477944D32556B9E595D5BA5 /* Debug */ = { + 7734F8F9639E1BE9FBD4FE931A281B32 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C155FBFE5C0783AAC41449CB2DC87E51 /* scrypt.xcconfig */; + baseConfigurationReference = E78CAEAA47869AECF36B3846129E2962 /* EthereumABI.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/scrypt/scrypt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/scrypt/scrypt-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumABI/EthereumABI-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/EthereumABI/EthereumABI-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/scrypt/scrypt.modulemap"; - PRODUCT_MODULE_NAME = scrypt; - PRODUCT_NAME = scrypt; + MODULEMAP_FILE = "Target Support Files/EthereumABI/EthereumABI.modulemap"; + PRODUCT_MODULE_NAME = EthereumABI; + PRODUCT_NAME = EthereumABI; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 91CA798C82736B53D80617B2E8CD6D64 /* Release */ = { + 83C62EE701B11C0B4F1CB7214CAF19B3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F82B4DF8F6B62E706B8BDDEB0749787 /* secp256k1_swift.xcconfig */; + baseConfigurationReference = 11209CB934557C390F9C7BEB1FD06896 /* secp256k1_swift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2963,9 +3047,69 @@ }; name = Release; }; - 95FE2A6DE1E23E131C792BA9EABEF082 /* Debug */ = { + A1962E6FF39BBAC201A2E5DDF99557DF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 4.2; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + AEE4CE2576B50DCF82CCD0064AC990C0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0D68B54C72B7D5CE7C1E985C3B853442 /* Pods-web3swiftExample.debug.xcconfig */; + baseConfigurationReference = 8E0165ACBE7F33E4BFAE66C793746886 /* Pods-web3swiftExample.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; @@ -2991,15 +3135,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 96D0DEBF2E2CD68EC102556D45CAFE25 /* Release */ = { + AF0C3CDF9B359AFFD4F8CA56E992839F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C155FBFE5C0783AAC41449CB2DC87E51 /* scrypt.xcconfig */; + baseConfigurationReference = E09AB4EF394FD735F6F29BEC0C88016F /* Pods-web3swiftExample.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3009,28 +3155,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/scrypt/scrypt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/scrypt/scrypt-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/scrypt/scrypt.modulemap"; - PRODUCT_MODULE_NAME = scrypt; - PRODUCT_NAME = scrypt; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 999DC560BE1FAFC3AB7F8A2E04E1BFBD /* Debug */ = { + B544C6BBB48EB009F5F0756D64EBE936 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3E5F4E53C7409FF85C72B92885F1280 /* EthereumAddress.xcconfig */; + baseConfigurationReference = 7520141500C15323EA4BB462348B9564 /* Starscream.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3041,27 +3187,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress/EthereumAddress-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/EthereumAddress/EthereumAddress-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Starscream/Starscream-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/EthereumAddress/EthereumAddress.modulemap"; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = EthereumAddress; + MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; + PRODUCT_MODULE_NAME = Starscream; + PRODUCT_NAME = Starscream; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - A5FC6D0EBE5F98DB81159530F9893873 /* Debug */ = { + B690DC7CD0ECBB6A38DC70F071F1BEDC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18496389CA5CA7BCFD42408FBE3EFA35 /* PromiseKit.xcconfig */; + baseConfigurationReference = F5E999FAD1A123E4CE79BC495D03CA13 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3085,14 +3232,15 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - C4A978225C5D00963017B4F329C22E9A /* Release */ = { + B6ADC42F686022FAF45760D123FE0564 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C71613C4CE6D47BE330CC73E165FEDC6 /* SwiftRLP.xcconfig */; + baseConfigurationReference = 7520141500C15323EA4BB462348B9564 /* Starscream.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3103,28 +3251,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP/SwiftRLP-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftRLP/SwiftRLP-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Starscream/Starscream-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftRLP/SwiftRLP.modulemap"; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = SwiftRLP; + MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; + PRODUCT_MODULE_NAME = Starscream; + PRODUCT_NAME = Starscream; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - C937AE553FF57C1152FDDEBFA17FAD95 /* Release */ = { + C2C485D623F40ADE0EB590FEE9D4D994 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C870B1A3D456FD4314DD4C0607A42610 /* SipHash.xcconfig */; + baseConfigurationReference = 5D2DB9499C8C203F2AA7345E283D63F0 /* SipHash.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3154,9 +3301,9 @@ }; name = Release; }; - C945FC560F4FD7CEEDE0D3570AFAE8A2 /* Debug */ = { + C78882AA5C3D31B786E1DF68D93E43C5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1160128225B85906623514D7D7090ECB /* CryptoSwift.xcconfig */; + baseConfigurationReference = F5E999FAD1A123E4CE79BC495D03CA13 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3167,27 +3314,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PromiseKit/PromiseKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = CryptoSwift; + MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; + PRODUCT_MODULE_NAME = PromiseKit; + PRODUCT_NAME = PromiseKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - C97472BDDF6E42853CFE85023853ED02 /* Debug */ = { + D034F3EB50D295E1E46B8765E52E8637 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F82B4DF8F6B62E706B8BDDEB0749787 /* secp256k1_swift.xcconfig */; + baseConfigurationReference = 4B5645216773F21B1489099DB3EDE72E /* BigInt.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3198,14 +3345,14 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift/secp256k1_swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/secp256k1_swift/secp256k1_swift-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/BigInt/BigInt-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/secp256k1_swift/secp256k1_swift.modulemap"; - PRODUCT_MODULE_NAME = secp256k1_swift; - PRODUCT_NAME = secp256k1_swift; + MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; + PRODUCT_MODULE_NAME = BigInt; + PRODUCT_NAME = BigInt; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3216,9 +3363,9 @@ }; name = Debug; }; - D87F2FCA56E76D57E7F6C88379A51A14 /* Debug */ = { + E0D6E7D5FDD33EDBC4D9AC9E7FE350B7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C71613C4CE6D47BE330CC73E165FEDC6 /* SwiftRLP.xcconfig */; + baseConfigurationReference = 2A3DBFE49993A10768C9E49994A5EB9F /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3229,14 +3376,14 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP/SwiftRLP-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftRLP/SwiftRLP-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftRLP/SwiftRLP.modulemap"; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = SwiftRLP; + MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = CryptoSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3247,186 +3394,91 @@ }; name = Debug; }; - E4F13D11780806EB70D82D1A5277FDB4 /* Debug */ = { + ED6B99881D50008517A60600A8314B2F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 900BF76676BA8D9C9EE025EFBFF7DB36 /* web3swift.xcconfig */; + baseConfigurationReference = F6C930A526E4E70E54230B535BC30CC3 /* EthereumAddress.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/web3swift/web3swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/web3swift/web3swift-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress/EthereumAddress-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/EthereumAddress/EthereumAddress-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/web3swift/web3swift.modulemap"; - PRODUCT_MODULE_NAME = Web3swift; - PRODUCT_NAME = Web3swift; + MODULEMAP_FILE = "Target Support Files/EthereumAddress/EthereumAddress.modulemap"; + PRODUCT_MODULE_NAME = EthereumAddress; + PRODUCT_NAME = EthereumAddress; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - E82C56363775B4EF468FF2AD9A2F5414 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.2; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - F4A473D136B0012EB85E8EB6881AAC5C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 18496389CA5CA7BCFD42408FBE3EFA35 /* PromiseKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PromiseKit/PromiseKit-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - FA8F9940C3F6728CB81B9E90432067F2 /* Release */ = { + F49CBE4F0020F109BCF86CB3E3E4CA1E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3E5F4E53C7409FF85C72B92885F1280 /* EthereumAddress.xcconfig */; + baseConfigurationReference = E78CAEAA47869AECF36B3846129E2962 /* EthereumABI.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress/EthereumAddress-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/EthereumAddress/EthereumAddress-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumABI/EthereumABI-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/EthereumABI/EthereumABI-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/EthereumAddress/EthereumAddress.modulemap"; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = EthereumAddress; + MODULEMAP_FILE = "Target Support Files/EthereumABI/EthereumABI.modulemap"; + PRODUCT_MODULE_NAME = EthereumABI; + PRODUCT_NAME = EthereumABI; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - FF0281C0EFC841F7CDBF85EA9D481F21 /* Debug */ = { + FD67902A2A7A9668E4AD85775DDC0E50 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 22044D50374EB3808D2F5A905DD1D63C /* BigInt.xcconfig */; + baseConfigurationReference = 79C61A58686B27952DD069E1ECF7D303 /* SwiftRLP.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BigInt/BigInt-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP/SwiftRLP-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftRLP/SwiftRLP-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = BigInt; + MODULEMAP_FILE = "Target Support Files/SwiftRLP/SwiftRLP.modulemap"; + PRODUCT_MODULE_NAME = SwiftRLP; + PRODUCT_NAME = SwiftRLP; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -3436,115 +3488,115 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0639662C632CDF2297369DF6E66E9D8C /* Build configuration list for PBXNativeTarget "EthereumABI" */ = { + 06FA395FFEAF5E28FA7208D7C6BD74D0 /* Build configuration list for PBXNativeTarget "CryptoSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0CDA6A3860506514D2FCA89528D0FB0B /* Debug */, - 0F3AB8214DDECE3D5C0595937D391234 /* Release */, + E0D6E7D5FDD33EDBC4D9AC9E7FE350B7 /* Debug */, + 1A7ED22A97AC4904B564BA6C22139D5A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 18A84A1682CD37CFA0F42453F6BF95C9 /* Build configuration list for PBXNativeTarget "SipHash" */ = { + 1ADEDFC6EAE9C2D3FC08DE43B6A3117C /* Build configuration list for PBXNativeTarget "web3swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - 54205352F5416DEC755C82630AEF5741 /* Debug */, - C937AE553FF57C1152FDDEBFA17FAD95 /* Release */, + 1FDB650F60FF368500836F9E2BF6D3E0 /* Debug */, + 4C8D211B7312AD12AC3A42FC462499D3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 08B0394D5F17A9F046DC0719C25BA452 /* Debug */, - E82C56363775B4EF468FF2AD9A2F5414 /* Release */, + 07488D4657FB0A78086563621D425F8A /* Debug */, + A1962E6FF39BBAC201A2E5DDF99557DF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 33565CE9A008BC2D28F678145BCCC377 /* Build configuration list for PBXNativeTarget "EthereumAddress" */ = { + 4F45AD52F1E48562E6A4F8520EFDE08E /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 999DC560BE1FAFC3AB7F8A2E04E1BFBD /* Debug */, - FA8F9940C3F6728CB81B9E90432067F2 /* Release */, + C78882AA5C3D31B786E1DF68D93E43C5 /* Debug */, + B690DC7CD0ECBB6A38DC70F071F1BEDC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 64983011E689E8B1A79C910DC9586585 /* Build configuration list for PBXNativeTarget "BigInt" */ = { + 51EF83ED6B1D73BF662853229D5C1273 /* Build configuration list for PBXNativeTarget "Starscream" */ = { isa = XCConfigurationList; buildConfigurations = ( - FF0281C0EFC841F7CDBF85EA9D481F21 /* Debug */, - 2F7D61A442C37889C3A779F5DF14BBCC /* Release */, + B6ADC42F686022FAF45760D123FE0564 /* Debug */, + B544C6BBB48EB009F5F0756D64EBE936 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8292BE0D9164B6CA74EDE2D0B4A9C609 /* Build configuration list for PBXNativeTarget "CryptoSwift" */ = { + 55ED71E6536789FF635527B674608A33 /* Build configuration list for PBXNativeTarget "EthereumABI" */ = { isa = XCConfigurationList; buildConfigurations = ( - C945FC560F4FD7CEEDE0D3570AFAE8A2 /* Debug */, - 4A42A7D9809B818B92AA22ED8453D3A5 /* Release */, + F49CBE4F0020F109BCF86CB3E3E4CA1E /* Debug */, + 7734F8F9639E1BE9FBD4FE931A281B32 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 847C860E5C8C46156BEC16FAF215BA10 /* Build configuration list for PBXNativeTarget "SwiftRLP" */ = { + 5EE3ED6F3666044FA2B4916121D34541 /* Build configuration list for PBXNativeTarget "BigInt" */ = { isa = XCConfigurationList; buildConfigurations = ( - D87F2FCA56E76D57E7F6C88379A51A14 /* Debug */, - C4A978225C5D00963017B4F329C22E9A /* Release */, + D034F3EB50D295E1E46B8765E52E8637 /* Debug */, + 2EDF7F0D2E467AA826433115693EA8D7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9018BA916CE44A089CB188ACBC3183A1 /* Build configuration list for PBXNativeTarget "web3swift" */ = { + 73B0903D7A97ACCB393C1302FF4D92EF /* Build configuration list for PBXNativeTarget "SipHash" */ = { isa = XCConfigurationList; buildConfigurations = ( - E4F13D11780806EB70D82D1A5277FDB4 /* Debug */, - 15FE65A30BE8C48DE22C7B79FF048B4E /* Release */, + 41CE5D5607B5DF7356F1D5607CB3EABB /* Debug */, + C2C485D623F40ADE0EB590FEE9D4D994 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A6E58A79C2F9A35AEE755C5EE9939C14 /* Build configuration list for PBXNativeTarget "scrypt" */ = { + 7A205B601F36A6BCE07AD382281B43DE /* Build configuration list for PBXNativeTarget "SwiftRLP" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8267393F9477944D32556B9E595D5BA5 /* Debug */, - 96D0DEBF2E2CD68EC102556D45CAFE25 /* Release */, + FD67902A2A7A9668E4AD85775DDC0E50 /* Debug */, + 0136A398D878A3EE3D08D0A77E8C8D92 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A9C5C85EB3A3102926F51BA14F3D5C13 /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { + 7C62B22FD68B979153C38861F8C337A2 /* Build configuration list for PBXNativeTarget "secp256k1_swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - A5FC6D0EBE5F98DB81159530F9893873 /* Debug */, - F4A473D136B0012EB85E8EB6881AAC5C /* Release */, + 6F1E4CE0C7DD7036D50A7F41EFC29DEB /* Debug */, + 83C62EE701B11C0B4F1CB7214CAF19B3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C991C998C17793DAA7BA2414E0DF3A40 /* Build configuration list for PBXNativeTarget "Pods-web3swiftExample" */ = { + 80CC1F16140AD30FB68113BF6BF248F2 /* Build configuration list for PBXNativeTarget "Pods-web3swiftExample" */ = { isa = XCConfigurationList; buildConfigurations = ( - 95FE2A6DE1E23E131C792BA9EABEF082 /* Debug */, - 560AFC0BB3FFAEAE9E60EC865CF22397 /* Release */, + AF0C3CDF9B359AFFD4F8CA56E992839F /* Debug */, + AEE4CE2576B50DCF82CCD0064AC990C0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DF74D3830F0F5F54523C9A5F5585D755 /* Build configuration list for PBXNativeTarget "secp256k1_swift" */ = { + D1DF101D37777E17F14B44C2C01FADE3 /* Build configuration list for PBXNativeTarget "EthereumAddress" */ = { isa = XCConfigurationList; buildConfigurations = ( - C97472BDDF6E42853CFE85023853ED02 /* Debug */, - 91CA798C82736B53D80617B2E8CD6D64 /* Release */, + 3B77DCD747393EC46EDB8B76BB5452E7 /* Debug */, + ED6B99881D50008517A60600A8314B2F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m b/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m index beae27758..bfabd6157 100644 --- a/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m +++ b/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m @@ -37,20 +37,7 @@ - (AnyPromise *)promise { resolve([NSError errorWithDomain:PMKErrorDomain code:PMKTaskError userInfo:info]); } }; - - #if __clang_major__ >= 9 - if (@available(macOS 10.13, *)) { - NSError *error = nil; - - if (![self launchAndReturnError:&error]) { - resolve(error); - } - } else { - [self launch]; - } - #else - [self launch]; // might @throw - #endif + [self launch]; }]; } diff --git a/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift b/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift index 13259a0c0..926eadf07 100644 --- a/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift +++ b/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift @@ -183,14 +183,12 @@ public enum PMKHTTPError: Error, LocalizedError, CustomStringConvertible { } } -#if swift(>=4.0) public func decodeResponse(_ t: T.Type, decoder: JSONDecoder = JSONDecoder()) -> T? { switch self { case .badStatusCode(_, let data, _): return try? decoder.decode(t, from: data) } } -#endif //TODO rename responseJSON public var jsonDictionary: Any? { diff --git a/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift b/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift index 03cab3cfe..044847514 100644 --- a/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift +++ b/Example/web3swiftExample/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift @@ -72,64 +72,20 @@ extension Process { self.waitUntilExit() guard self.terminationReason == .exit, self.terminationStatus == 0 else { - let stdoutData = try? self.readDataFromPipe(stdout) - let stderrData = try? self.readDataFromPipe(stderr) - - let stdoutString = stdoutData.flatMap { (data: Data) -> String? in String(data: data, encoding: .utf8) } - let stderrString = stderrData.flatMap { (data: Data) -> String? in String(data: data, encoding: .utf8) } - - return seal.reject(PMKError.execution(process: self, standardOutput: stdoutString, standardError: stderrString)) + return seal.reject(PMKError.execution(self)) } seal.fulfill((stdout, stderr)) } } } - private func readDataFromPipe(_ pipe: Pipe) throws -> Data { - let handle = pipe.fileHandleForReading - defer { handle.closeFile() } - - // Someday, NSFileHandle will probably be updated with throwing equivalents to its read and write methods, - // as NSTask has, to avoid raising exceptions and crashing the app. - // Unfortunately that day has not yet come, so use the underlying BSD calls for now. - - let fd = handle.fileDescriptor - - let bufsize = 1024 * 8 - let buf = UnsafeMutablePointer.allocate(capacity: bufsize) - - #if swift(>=4.1) - defer { buf.deallocate() } - #else - defer { buf.deallocate(capacity: bufsize) } - #endif - - var data = Data() - - while true { - let bytesRead = read(fd, buf, bufsize) - - if bytesRead == 0 { - break - } - - if bytesRead < 0 { - throw POSIXError.Code(rawValue: errno).map { POSIXError($0) } ?? CocoaError(.fileReadUnknown) - } - - data.append(buf, count: bytesRead) - } - - return data - } - /** The error generated by PromiseKit’s `Process` extension */ public enum PMKError { /// NOT AVAILABLE ON 10.13 and above because Apple provide this error handling themselves case notExecutable(String?) - case execution(process: Process, standardOutput: String?, standardError: String?) + case execution(Process) } } @@ -141,7 +97,7 @@ extension Process.PMKError: LocalizedError { return "File not executable: \(path)" case .notExecutable(nil): return "No launch path specified" - case .execution(process: let task, standardOutput: _, standardError: _): + case .execution(let task): return "Failed executing: `\(task)` (\(task.terminationStatus))." } } diff --git a/Example/web3swiftExample/Pods/PromiseKit/README.md b/Example/web3swiftExample/Pods/PromiseKit/README.md index 78f555fc6..5e6128fc7 100644 --- a/Example/web3swiftExample/Pods/PromiseKit/README.md +++ b/Example/web3swiftExample/Pods/PromiseKit/README.md @@ -49,14 +49,12 @@ target "Change Me!" do end ``` -> The above gives an Xcode warning? See our [Installation Guide]. - PromiseKit 6, 5 and 4 support Xcode 8.3, 9.x and 10.0; Swift 3.1, 3.2, 3.3, 3.4, 4.0, 4.1 and 4.2; iOS, macOS, tvOS, watchOS, Linux and Android; CocoaPods, Carthage and SwiftPM; ([CI Matrix](https://travis-ci.org/mxcl/PromiseKit)). For Carthage, SwiftPM, etc., or for instructions when using older Swifts or -Xcodes, see our [Installation Guide]. We +Xcodes, see our [Installation Guide](Documentation/Installation.md). We recommend [Carthage](https://github.com/Carthage/Carthage). # Documentation @@ -171,4 +169,3 @@ if after that you still have a question, ask at our [Gitter chat channel] or on [our bug tracker]: https://github.com/mxcl/PromiseKit/issues/new [Podfile]: https://guides.cocoapods.org/syntax/podfile.html [PMK6]: http://promisekit.org/news/2018/02/PromiseKit-6.0-Released/ -[Installation Guide]: Documentation/Installation.md diff --git a/Example/web3swiftExample/Pods/PromiseKit/Sources/Error.swift b/Example/web3swiftExample/Pods/PromiseKit/Sources/Error.swift index 7229e6f49..3249e3f44 100644 --- a/Example/web3swiftExample/Pods/PromiseKit/Sources/Error.swift +++ b/Example/web3swiftExample/Pods/PromiseKit/Sources/Error.swift @@ -83,12 +83,7 @@ extension Error { } catch CocoaError.userCancelled { return true } catch { - #if os(macOS) || os(iOS) || os(tvOS) - let pair = { ($0.domain, $0.code) }(error as NSError) - return ("SKErrorDomain", 2) == pair - #else return false - #endif } } } diff --git a/Example/web3swiftExample/Pods/PromiseKit/Sources/when.swift b/Example/web3swiftExample/Pods/PromiseKit/Sources/when.swift index 0913c64f3..59884cd2d 100644 --- a/Example/web3swiftExample/Pods/PromiseKit/Sources/when.swift +++ b/Example/web3swiftExample/Pods/PromiseKit/Sources/when.swift @@ -208,7 +208,7 @@ public func when(fulfilled promiseIterator: It, concurrent /** Waits on all provided promises. - `when(fulfilled:)` rejects as soon as one of the provided promises rejects. `when(resolved:)` waits on all provided promises whatever their result, and then provides an array of `Result` so you can individually inspect the results. As a consequence this function returns a `Guarantee`, ie. errors are lifted from the individual promises into the results array of the returned `Guarantee`. + `when(fulfilled:)` rejects as soon as one of the provided promises rejects. `when(resolved:)` waits on all provided promises and **never** rejects. when(resolved: promise1, promise2, promise3).then { results in for result in results where case .fulfilled(let value) { @@ -219,14 +219,15 @@ public func when(fulfilled promiseIterator: It, concurrent } - Returns: A new promise that resolves once all the provided promises resolve. The array is ordered the same as the input, ie. the result order is *not* resolution order. - - Note: we do not provide tuple variants for `when(resolved:)` but will accept a pull-request - - Remark: Doesn't take Thenable due to protocol `associatedtype` paradox + - Warning: The returned promise can *not* be rejected. + - Note: Any promises that error are implicitly consumed, your UnhandledErrorHandler will not be called. + - Remark: Doesn't take Thenable due to protocol associatedtype paradox */ public func when(resolved promises: Promise...) -> Guarantee<[Result]> { return when(resolved: promises) } -/// - See: `when(resolved: Promise...)` +/// Waits on all provided promises. public func when(resolved promises: [Promise]) -> Guarantee<[Result]> { guard !promises.isEmpty else { return .value([]) diff --git a/Example/web3swiftExample/Pods/Starscream/LICENSE b/Example/web3swiftExample/Pods/Starscream/LICENSE new file mode 100644 index 000000000..d6ab2f1f7 --- /dev/null +++ b/Example/web3swiftExample/Pods/Starscream/LICENSE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + Copyright (c) 2014-2016 Dalton Cherry. + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. \ No newline at end of file diff --git a/Example/web3swiftExample/Pods/Starscream/README.md b/Example/web3swiftExample/Pods/Starscream/README.md new file mode 100644 index 000000000..cb58e04e8 --- /dev/null +++ b/Example/web3swiftExample/Pods/Starscream/README.md @@ -0,0 +1,415 @@ +![starscream](https://raw.githubusercontent.com/daltoniam/starscream/assets/starscream.jpg) + +Starscream is a conforming WebSocket ([RFC 6455](http://tools.ietf.org/html/rfc6455)) client library in Swift. + +Its Objective-C counterpart can be found here: [Jetfire](https://github.com/acmacalister/jetfire) + +## Features + +- Conforms to all of the base [Autobahn test suite](http://autobahn.ws/testsuite/). +- Nonblocking. Everything happens in the background, thanks to GCD. +- TLS/WSS support. +- Compression Extensions support ([RFC 7692](https://tools.ietf.org/html/rfc7692)) +- Simple concise codebase at just a few hundred LOC. + +## Example + +First thing is to import the framework. See the Installation instructions on how to add the framework to your project. + +```swift +import Starscream +``` + +Once imported, you can open a connection to your WebSocket server. Note that `socket` is probably best as a property, so it doesn't get deallocated right after being setup. + +```swift +socket = WebSocket(url: URL(string: "ws://localhost:8080/")!) +socket.delegate = self +socket.connect() +``` + +After you are connected, there are some delegate methods that we need to implement. + +### websocketDidConnect + +websocketDidConnect is called as soon as the client connects to the server. + +```swift +func websocketDidConnect(socket: WebSocketClient) { + print("websocket is connected") +} +``` + +### websocketDidDisconnect + +websocketDidDisconnect is called as soon as the client is disconnected from the server. + +```swift +func websocketDidDisconnect(socket: WebSocketClient, error: Error?) { + print("websocket is disconnected: \(error?.localizedDescription)") +} +``` + +### websocketDidReceiveMessage + +websocketDidReceiveMessage is called when the client gets a text frame from the connection. + +```swift +func websocketDidReceiveMessage(socket: WebSocketClient, text: String) { + print("got some text: \(text)") +} +``` + +### websocketDidReceiveData + +websocketDidReceiveData is called when the client gets a binary frame from the connection. + +```swift +func websocketDidReceiveData(socket: WebSocketClient, data: Data) { + print("got some data: \(data.count)") +} +``` + +### Optional: websocketDidReceivePong *(required protocol: WebSocketPongDelegate)* + +websocketDidReceivePong is called when the client gets a pong response from the connection. You need to implement the WebSocketPongDelegate protocol and set an additional delegate, eg: ` socket.pongDelegate = self` + +```swift +func websocketDidReceivePong(socket: WebSocketClient, data: Data?) { + print("Got pong! Maybe some data: \(data?.count)") +} +``` + +Or you can use closures. + +```swift +socket = WebSocket(url: URL(string: "ws://localhost:8080/")!) +//websocketDidConnect +socket.onConnect = { + print("websocket is connected") +} +//websocketDidDisconnect +socket.onDisconnect = { (error: Error?) in + print("websocket is disconnected: \(error?.localizedDescription)") +} +//websocketDidReceiveMessage +socket.onText = { (text: String) in + print("got some text: \(text)") +} +//websocketDidReceiveData +socket.onData = { (data: Data) in + print("got some data: \(data.count)") +} +//you could do onPong as well. +socket.connect() +``` + +One more: you can listen to socket connection and disconnection via notifications. Starscream posts `WebsocketDidConnectNotification` and `WebsocketDidDisconnectNotification`. You can find an `Error` that caused the disconection by accessing `WebsocketDisconnectionErrorKeyName` on notification `userInfo`. + + +## The delegate methods give you a simple way to handle data from the server, but how do you send data? + +### write a binary frame + +The writeData method gives you a simple way to send `Data` (binary) data to the server. + +```swift +socket.write(data: data) //write some Data over the socket! +``` + +### write a string frame + +The writeString method is the same as writeData, but sends text/string. + +```swift +socket.write(string: "Hi Server!") //example on how to write text over the socket! +``` + +### write a ping frame + +The writePing method is the same as write, but sends a ping control frame. + +```swift +socket.write(ping: Data()) //example on how to write a ping control frame over the socket! +``` + +### write a pong frame + + +the writePong method is the same as writePing, but sends a pong control frame. + +```swift +socket.write(pong: Data()) //example on how to write a pong control frame over the socket! +``` + +Starscream will automatically respond to incoming `ping` control frames so you do not need to manually send `pong`s. + +However if for some reason you need to control this process you can turn off the automatic `ping` response by disabling `respondToPingWithPong`. + +```swift +socket.respondToPingWithPong = false //Do not automaticaly respond to incoming pings with pongs. +``` + +In most cases you will not need to do this. + +### disconnect + +The disconnect method does what you would expect and closes the socket. + +```swift +socket.disconnect() +``` + +The socket can be forcefully closed, by specifying a timeout (in milliseconds). A timeout of zero will also close the socket immediately without waiting on the server. + +```swift +socket.disconnect(forceTimeout: 10, closeCode: CloseCode.normal.rawValue) +``` + +### isConnected + +Returns if the socket is connected or not. + +```swift +if socket.isConnected { + // do cool stuff. +} +``` + +### Custom Headers + +You can also override the default websocket headers with your own custom ones like so: + +```swift +var request = URLRequest(url: URL(string: "ws://localhost:8080/")!) +request.timeoutInterval = 5 +request.setValue("someother protocols", forHTTPHeaderField: "Sec-WebSocket-Protocol") +request.setValue("14", forHTTPHeaderField: "Sec-WebSocket-Version") +request.setValue("Everything is Awesome!", forHTTPHeaderField: "My-Awesome-Header") +let socket = WebSocket(request: request) +``` + +### Custom HTTP Method + +Your server may use a different HTTP method when connecting to the websocket: + +```swift +var request = URLRequest(url: URL(string: "ws://localhost:8080/")!) +request.httpMethod = "POST" +request.timeoutInterval = 5 +let socket = WebSocket(request: request) +``` + +### Protocols + +If you need to specify a protocol, simple add it to the init: + +```swift +//chat and superchat are the example protocols here +socket = WebSocket(url: URL(string: "ws://localhost:8080/")!, protocols: ["chat","superchat"]) +socket.delegate = self +socket.connect() +``` + +### Self Signed SSL + +```swift +socket = WebSocket(url: URL(string: "ws://localhost:8080/")!, protocols: ["chat","superchat"]) + +//set this if you want to ignore SSL cert validation, so a self signed SSL certificate can be used. +socket.disableSSLCertValidation = true +``` + +### SSL Pinning + +SSL Pinning is also supported in Starscream. + +```swift +socket = WebSocket(url: URL(string: "ws://localhost:8080/")!, protocols: ["chat","superchat"]) +let data = ... //load your certificate from disk +socket.security = SSLSecurity(certs: [SSLCert(data: data)], usePublicKeys: true) +//socket.security = SSLSecurity() //uses the .cer files in your app's bundle +``` +You load either a `Data` blob of your certificate or you can use a `SecKeyRef` if you have a public key you want to use. The `usePublicKeys` bool is whether to use the certificates for validation or the public keys. The public keys will be extracted from the certificates automatically if `usePublicKeys` is choosen. + +### SSL Cipher Suites + +To use an SSL encrypted connection, you need to tell Starscream about the cipher suites your server supports. + +```swift +socket = WebSocket(url: URL(string: "wss://localhost:8080/")!, protocols: ["chat","superchat"]) + +// Set enabled cipher suites to AES 256 and AES 128 +socket.enabledSSLCipherSuites = [TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256] +``` + +If you don't know which cipher suites are supported by your server, you can try pointing [SSL Labs](https://www.ssllabs.com/ssltest/) at it and checking the results. + +### Compression Extensions + +Compression Extensions ([RFC 7692](https://tools.ietf.org/html/rfc7692)) is supported in Starscream. Compression is enabled by default, however compression will only be used if it is supported by the server as well. You may enable or disable compression via the `.enableCompression` property: + +```swift +socket = WebSocket(url: URL(string: "ws://localhost:8080/")!) +socket.enableCompression = false +``` + +Compression should be disabled if your application is transmitting already-compressed, random, or other uncompressable data. + +### Custom Queue + +A custom queue can be specified when delegate methods are called. By default `DispatchQueue.main` is used, thus making all delegate methods calls run on the main thread. It is important to note that all WebSocket processing is done on a background thread, only the delegate method calls are changed when modifying the queue. The actual processing is always on a background thread and will not pause your app. + +```swift +socket = WebSocket(url: URL(string: "ws://localhost:8080/")!, protocols: ["chat","superchat"]) +//create a custom queue +socket.callbackQueue = DispatchQueue(label: "com.vluxe.starscream.myapp") +``` + +## Example Project + +Check out the SimpleTest project in the examples directory to see how to setup a simple connection to a WebSocket server. + +## Requirements + +Starscream works with iOS 7/OSX 10.9 or above. It is recommended to use iOS 8/10.10 or above for CocoaPods/framework support. To use Starscream with a project targeting iOS 7, you must include all Swift files directly in your project. + +## Installation + +### CocoaPods + +Check out [Get Started](http://cocoapods.org/) tab on [cocoapods.org](http://cocoapods.org/). + +To use Starscream in your project add the following 'Podfile' to your project + + source 'https://github.com/CocoaPods/Specs.git' + platform :ios, '9.0' + use_frameworks! + + pod 'Starscream', '~> 3.0.2' + +Then run: + + pod install + +### Carthage + +Check out the [Carthage](https://github.com/Carthage/Carthage) docs on how to add a install. The `Starscream` framework is already setup with shared schemes. + +[Carthage Install](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application) + +You can install Carthage with [Homebrew](http://brew.sh/) using the following command: + +```bash +$ brew update +$ brew install carthage +``` + +To integrate Starscream into your Xcode project using Carthage, specify it in your `Cartfile`: + +``` +github "daltoniam/Starscream" >= 3.0.2 +``` + +### Rogue + +First see the [installation docs](https://github.com/acmacalister/Rogue) for how to install Rogue. + +To install Starscream run the command below in the directory you created the rogue file. + +``` +rogue add https://github.com/daltoniam/Starscream +``` + +Next open the `libs` folder and add the `Starscream.xcodeproj` to your Xcode project. Once that is complete, in your "Build Phases" add the `Starscream.framework` to your "Link Binary with Libraries" phase. Make sure to add the `libs` folder to your `.gitignore` file. + +### Swift Package Manager + +The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. + +Once you have your Swift package set up, adding Starscream as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`. + +```swift +dependencies: [ + .Package(url: "https://github.com/daltoniam/Starscream.git", majorVersion: 3) +] +``` + +### Other + +Simply grab the framework (either via git submodule or another package manager). + +Add the `Starscream.xcodeproj` to your Xcode project. Once that is complete, in your "Build Phases" add the `Starscream.framework` to your "Link Binary with Libraries" phase. + +### Add Copy Frameworks Phase + +If you are running this in an OSX app or on a physical iOS device you will need to make sure you add the `Starscream.framework` to be included in your app bundle. To do this, in Xcode, navigate to the target configuration window by clicking on the blue project icon, and selecting the application target under the "Targets" heading in the sidebar. In the tab bar at the top of that window, open the "Build Phases" panel. Expand the "Link Binary with Libraries" group, and add `Starscream.framework`. Click on the + button at the top left of the panel and select "New Copy Files Phase". Rename this new phase to "Copy Frameworks", set the "Destination" to "Frameworks", and add `Starscream.framework` respectively. + + +## WebSocketAdvancedDelegate +The advanced delegate acts just like the simpler delegate but provides some additional information on the connection and incoming frames. + +```swift +socket.advancedDelegate = self +``` + +In most cases you do not need the extra info and should use the normal delegate. + +#### websocketDidReceiveMessage +```swift +func websocketDidReceiveMessage(socket: WebSocketClient, text: String, response: WebSocket.WSResponse) { + print("got some text: \(text)") + print("First frame for this message arrived on \(response.firstFrame)") +} +``` + +#### websocketDidReceiveData +```swift +func websocketDidReceiveData(socket: WebSocketClient, data: Date, response: WebSocket.WSResponse) { + print("got some data it long: \(data.count)") + print("A total of \(response.frameCount) frames were used to send this data") +} +``` + +#### websocketHttpUpgrade +These methods are called when the HTTP upgrade request is sent and when the response returns. +```swift +func websocketHttpUpgrade(socket: WebSocketClient, request: CFHTTPMessage) { + print("the http request was sent we can check the raw http if we need to") +} +``` + +```swift +func websocketHttpUpgrade(socket: WebSocketClient, response: CFHTTPMessage) { + print("the http response has returned.") +} +``` + +## Swift versions + +* Swift 4.2 - 3.0.6 + +## KNOWN ISSUES +- WatchOS does not have the the CFNetwork String constants to modify the stream's SSL behavior. It will be the default Foundation SSL behavior. This means watchOS CANNOT use `SSLCiphers`, `disableSSLCertValidation`, or SSL pinning. All these values set on watchOS will do nothing. +- Linux does not have the security framework, so it CANNOT use SSL pinning or `SSLCiphers` either. + + +## TODOs + +- [ ] Add Unit Tests - Local WebSocket server that runs against Autobahn + +## License + +Starscream is licensed under the Apache v2 License. + +## Contact + +### Dalton Cherry +* https://github.com/daltoniam +* http://twitter.com/daltoniam +* http://daltoniam.com + +### Austin Cherry ### +* https://github.com/acmacalister +* http://twitter.com/acmacalister +* http://austincherry.me diff --git a/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/Compression.swift b/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/Compression.swift new file mode 100644 index 000000000..ab6579022 --- /dev/null +++ b/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/Compression.swift @@ -0,0 +1,177 @@ +////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Compression.swift +// +// Created by Joseph Ross on 7/16/14. +// Copyright © 2017 Joseph Ross. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +////////////////////////////////////////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Compression implementation is implemented in conformance with RFC 7692 Compression Extensions +// for WebSocket: https://tools.ietf.org/html/rfc7692 +// +////////////////////////////////////////////////////////////////////////////////////////////////// + +import Foundation +import zlib + +class Decompressor { + private var strm = z_stream() + private var buffer = [UInt8](repeating: 0, count: 0x2000) + private var inflateInitialized = false + private let windowBits:Int + + init?(windowBits:Int) { + self.windowBits = windowBits + guard initInflate() else { return nil } + } + + private func initInflate() -> Bool { + if Z_OK == inflateInit2_(&strm, -CInt(windowBits), + ZLIB_VERSION, CInt(MemoryLayout.size)) + { + inflateInitialized = true + return true + } + return false + } + + func reset() throws { + teardownInflate() + guard initInflate() else { throw WSError(type: .compressionError, message: "Error for decompressor on reset", code: 0) } + } + + func decompress(_ data: Data, finish: Bool) throws -> Data { + return try data.withUnsafeBytes { (bytes:UnsafePointer) -> Data in + return try decompress(bytes: bytes, count: data.count, finish: finish) + } + } + + func decompress(bytes: UnsafePointer, count: Int, finish: Bool) throws -> Data { + var decompressed = Data() + try decompress(bytes: bytes, count: count, out: &decompressed) + + if finish { + let tail:[UInt8] = [0x00, 0x00, 0xFF, 0xFF] + try decompress(bytes: tail, count: tail.count, out: &decompressed) + } + + return decompressed + + } + + private func decompress(bytes: UnsafePointer, count: Int, out:inout Data) throws { + var res:CInt = 0 + strm.next_in = UnsafeMutablePointer(mutating: bytes) + strm.avail_in = CUnsignedInt(count) + + repeat { + strm.next_out = UnsafeMutablePointer(&buffer) + strm.avail_out = CUnsignedInt(buffer.count) + + res = inflate(&strm, 0) + + let byteCount = buffer.count - Int(strm.avail_out) + out.append(buffer, count: byteCount) + } while res == Z_OK && strm.avail_out == 0 + + guard (res == Z_OK && strm.avail_out > 0) + || (res == Z_BUF_ERROR && Int(strm.avail_out) == buffer.count) + else { + throw WSError(type: .compressionError, message: "Error on decompressing", code: 0) + } + } + + private func teardownInflate() { + if inflateInitialized, Z_OK == inflateEnd(&strm) { + inflateInitialized = false + } + } + + deinit { + teardownInflate() + } +} + +class Compressor { + private var strm = z_stream() + private var buffer = [UInt8](repeating: 0, count: 0x2000) + private var deflateInitialized = false + private let windowBits:Int + + init?(windowBits: Int) { + self.windowBits = windowBits + guard initDeflate() else { return nil } + } + + private func initDeflate() -> Bool { + if Z_OK == deflateInit2_(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, + -CInt(windowBits), 8, Z_DEFAULT_STRATEGY, + ZLIB_VERSION, CInt(MemoryLayout.size)) + { + deflateInitialized = true + return true + } + return false + } + + func reset() throws { + teardownDeflate() + guard initDeflate() else { throw WSError(type: .compressionError, message: "Error for compressor on reset", code: 0) } + } + + func compress(_ data: Data) throws -> Data { + var compressed = Data() + var res:CInt = 0 + data.withUnsafeBytes { (ptr:UnsafePointer) -> Void in + strm.next_in = UnsafeMutablePointer(mutating: ptr) + strm.avail_in = CUnsignedInt(data.count) + + repeat { + strm.next_out = UnsafeMutablePointer(&buffer) + strm.avail_out = CUnsignedInt(buffer.count) + + res = deflate(&strm, Z_SYNC_FLUSH) + + let byteCount = buffer.count - Int(strm.avail_out) + compressed.append(buffer, count: byteCount) + } + while res == Z_OK && strm.avail_out == 0 + + } + + guard res == Z_OK && strm.avail_out > 0 + || (res == Z_BUF_ERROR && Int(strm.avail_out) == buffer.count) + else { + throw WSError(type: .compressionError, message: "Error on compressing", code: 0) + } + + compressed.removeLast(4) + return compressed + } + + private func teardownDeflate() { + if deflateInitialized, Z_OK == deflateEnd(&strm) { + deflateInitialized = false + } + } + + deinit { + teardownDeflate() + } +} + diff --git a/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/SSLClientCertificate.swift b/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/SSLClientCertificate.swift new file mode 100644 index 000000000..341091222 --- /dev/null +++ b/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/SSLClientCertificate.swift @@ -0,0 +1,92 @@ +// +// SSLClientCertificate.swift +// Starscream +// +// Created by Tomasz Trela on 08/03/2018. +// Copyright © 2018 Vluxe. All rights reserved. +// + +import Foundation + +public struct SSLClientCertificateError: LocalizedError { + public var errorDescription: String? + + init(errorDescription: String) { + self.errorDescription = errorDescription + } +} + +public class SSLClientCertificate { + internal let streamSSLCertificates: NSArray + + /** + Convenience init. + - parameter pkcs12Path: Path to pkcs12 file containing private key and X.509 ceritifacte (.p12) + - parameter password: file password, see **kSecImportExportPassphrase** + */ + public convenience init(pkcs12Path: String, password: String) throws { + let pkcs12Url = URL(fileURLWithPath: pkcs12Path) + do { + try self.init(pkcs12Url: pkcs12Url, password: password) + } catch { + throw error + } + } + + /** + Designated init. For more information, see SSLSetCertificate() in Security/SecureTransport.h. + - parameter identity: SecIdentityRef, see **kCFStreamSSLCertificates** + - parameter identityCertificate: CFArray of SecCertificateRefs, see **kCFStreamSSLCertificates** + */ + public init(identity: SecIdentity, identityCertificate: SecCertificate) { + self.streamSSLCertificates = NSArray(objects: identity, identityCertificate) + } + + /** + Convenience init. + - parameter pkcs12Url: URL to pkcs12 file containing private key and X.509 ceritifacte (.p12) + - parameter password: file password, see **kSecImportExportPassphrase** + */ + public convenience init(pkcs12Url: URL, password: String) throws { + let importOptions = [kSecImportExportPassphrase as String : password] as CFDictionary + do { + try self.init(pkcs12Url: pkcs12Url, importOptions: importOptions) + } catch { + throw error + } + } + + /** + Designated init. + - parameter pkcs12Url: URL to pkcs12 file containing private key and X.509 ceritifacte (.p12) + - parameter importOptions: A dictionary containing import options. A + kSecImportExportPassphrase entry is required at minimum. Only password-based + PKCS12 blobs are currently supported. See **SecImportExport.h** + */ + public init(pkcs12Url: URL, importOptions: CFDictionary) throws { + do { + let pkcs12Data = try Data(contentsOf: pkcs12Url) + var rawIdentitiesAndCertificates: CFArray? + let pkcs12CFData: CFData = pkcs12Data as CFData + let importStatus = SecPKCS12Import(pkcs12CFData, importOptions, &rawIdentitiesAndCertificates) + + guard importStatus == errSecSuccess else { + throw SSLClientCertificateError(errorDescription: "(Starscream) Error during 'SecPKCS12Import', see 'SecBase.h' - OSStatus: \(importStatus)") + } + guard let identitiyAndCertificate = (rawIdentitiesAndCertificates as? Array>)?.first else { + throw SSLClientCertificateError(errorDescription: "(Starscream) Error - PKCS12 file is empty") + } + + let identity = identitiyAndCertificate[kSecImportItemIdentity as String] as! SecIdentity + var identityCertificate: SecCertificate? + let copyStatus = SecIdentityCopyCertificate(identity, &identityCertificate) + guard copyStatus == errSecSuccess else { + throw SSLClientCertificateError(errorDescription: "(Starscream) Error during 'SecIdentityCopyCertificate', see 'SecBase.h' - OSStatus: \(copyStatus)") + } + self.streamSSLCertificates = NSArray(objects: identity, identityCertificate!) + } catch { + throw error + } + } +} + diff --git a/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/SSLSecurity.swift b/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/SSLSecurity.swift new file mode 100644 index 000000000..6a14dd159 --- /dev/null +++ b/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/SSLSecurity.swift @@ -0,0 +1,266 @@ +////////////////////////////////////////////////////////////////////////////////////////////////// +// +// SSLSecurity.swift +// Starscream +// +// Created by Dalton Cherry on 5/16/15. +// Copyright (c) 2014-2016 Dalton Cherry. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +////////////////////////////////////////////////////////////////////////////////////////////////// +#if os(Linux) +#else +import Foundation +import Security + +public protocol SSLTrustValidator { + func isValid(_ trust: SecTrust, domain: String?) -> Bool +} + +open class SSLCert { + var certData: Data? + var key: SecKey? + + /** + Designated init for certificates + + - parameter data: is the binary data of the certificate + + - returns: a representation security object to be used with + */ + public init(data: Data) { + self.certData = data + } + + /** + Designated init for public keys + + - parameter key: is the public key to be used + + - returns: a representation security object to be used with + */ + public init(key: SecKey) { + self.key = key + } +} + +open class SSLSecurity : SSLTrustValidator { + public var validatedDN = true //should the domain name be validated? + public var validateEntireChain = true //should the entire cert chain be validated + + var isReady = false //is the key processing done? + var certificates: [Data]? //the certificates + var pubKeys: [SecKey]? //the public keys + var usePublicKeys = false //use public keys or certificate validation? + + /** + Use certs from main app bundle + + - parameter usePublicKeys: is to specific if the publicKeys or certificates should be used for SSL pinning validation + + - returns: a representation security object to be used with + */ + public convenience init(usePublicKeys: Bool = false) { + let paths = Bundle.main.paths(forResourcesOfType: "cer", inDirectory: ".") + + let certs = paths.reduce([SSLCert]()) { (certs: [SSLCert], path: String) -> [SSLCert] in + var certs = certs + if let data = NSData(contentsOfFile: path) { + certs.append(SSLCert(data: data as Data)) + } + return certs + } + + self.init(certs: certs, usePublicKeys: usePublicKeys) + } + + /** + Designated init + + - parameter certs: is the certificates or public keys to use + - parameter usePublicKeys: is to specific if the publicKeys or certificates should be used for SSL pinning validation + + - returns: a representation security object to be used with + */ + public init(certs: [SSLCert], usePublicKeys: Bool) { + self.usePublicKeys = usePublicKeys + + if self.usePublicKeys { + DispatchQueue.global(qos: .default).async { + let pubKeys = certs.reduce([SecKey]()) { (pubKeys: [SecKey], cert: SSLCert) -> [SecKey] in + var pubKeys = pubKeys + if let data = cert.certData, cert.key == nil { + cert.key = self.extractPublicKey(data) + } + if let key = cert.key { + pubKeys.append(key) + } + return pubKeys + } + + self.pubKeys = pubKeys + self.isReady = true + } + } else { + let certificates = certs.reduce([Data]()) { (certificates: [Data], cert: SSLCert) -> [Data] in + var certificates = certificates + if let data = cert.certData { + certificates.append(data) + } + return certificates + } + self.certificates = certificates + self.isReady = true + } + } + + /** + Valid the trust and domain name. + + - parameter trust: is the serverTrust to validate + - parameter domain: is the CN domain to validate + + - returns: if the key was successfully validated + */ + open func isValid(_ trust: SecTrust, domain: String?) -> Bool { + + var tries = 0 + while !self.isReady { + usleep(1000) + tries += 1 + if tries > 5 { + return false //doesn't appear it is going to ever be ready... + } + } + var policy: SecPolicy + if self.validatedDN { + policy = SecPolicyCreateSSL(true, domain as NSString?) + } else { + policy = SecPolicyCreateBasicX509() + } + SecTrustSetPolicies(trust,policy) + if self.usePublicKeys { + if let keys = self.pubKeys { + let serverPubKeys = publicKeyChain(trust) + for serverKey in serverPubKeys as [AnyObject] { + for key in keys as [AnyObject] { + if serverKey.isEqual(key) { + return true + } + } + } + } + } else if let certs = self.certificates { + let serverCerts = certificateChain(trust) + var collect = [SecCertificate]() + for cert in certs { + collect.append(SecCertificateCreateWithData(nil,cert as CFData)!) + } + SecTrustSetAnchorCertificates(trust,collect as NSArray) + var result: SecTrustResultType = .unspecified + SecTrustEvaluate(trust,&result) + if result == .unspecified || result == .proceed { + if !validateEntireChain { + return true + } + var trustedCount = 0 + for serverCert in serverCerts { + for cert in certs { + if cert == serverCert { + trustedCount += 1 + break + } + } + } + if trustedCount == serverCerts.count { + return true + } + } + } + return false + } + + /** + Get the public key from a certificate data + + - parameter data: is the certificate to pull the public key from + + - returns: a public key + */ + public func extractPublicKey(_ data: Data) -> SecKey? { + guard let cert = SecCertificateCreateWithData(nil, data as CFData) else { return nil } + + return extractPublicKey(cert, policy: SecPolicyCreateBasicX509()) + } + + /** + Get the public key from a certificate + + - parameter data: is the certificate to pull the public key from + + - returns: a public key + */ + public func extractPublicKey(_ cert: SecCertificate, policy: SecPolicy) -> SecKey? { + var possibleTrust: SecTrust? + SecTrustCreateWithCertificates(cert, policy, &possibleTrust) + + guard let trust = possibleTrust else { return nil } + var result: SecTrustResultType = .unspecified + SecTrustEvaluate(trust, &result) + return SecTrustCopyPublicKey(trust) + } + + /** + Get the certificate chain for the trust + + - parameter trust: is the trust to lookup the certificate chain for + + - returns: the certificate chain for the trust + */ + public func certificateChain(_ trust: SecTrust) -> [Data] { + let certificates = (0.. [Data] in + var certificates = certificates + let cert = SecTrustGetCertificateAtIndex(trust, index) + certificates.append(SecCertificateCopyData(cert!) as Data) + return certificates + } + + return certificates + } + + /** + Get the public key chain for the trust + + - parameter trust: is the trust to lookup the certificate chain and extract the public keys + + - returns: the public keys from the certifcate chain for the trust + */ + public func publicKeyChain(_ trust: SecTrust) -> [SecKey] { + let policy = SecPolicyCreateBasicX509() + let keys = (0.. [SecKey] in + var keys = keys + let cert = SecTrustGetCertificateAtIndex(trust, index) + if let key = extractPublicKey(cert!, policy: policy) { + keys.append(key) + } + + return keys + } + + return keys + } + + +} +#endif diff --git a/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/WebSocket.swift b/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/WebSocket.swift new file mode 100644 index 000000000..7d48a20d9 --- /dev/null +++ b/Example/web3swiftExample/Pods/Starscream/Sources/Starscream/WebSocket.swift @@ -0,0 +1,1356 @@ +////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Websocket.swift +// +// Created by Dalton Cherry on 7/16/14. +// Copyright (c) 2014-2017 Dalton Cherry. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +////////////////////////////////////////////////////////////////////////////////////////////////// + +import Foundation +import CoreFoundation +import CommonCrypto + +public let WebsocketDidConnectNotification = "WebsocketDidConnectNotification" +public let WebsocketDidDisconnectNotification = "WebsocketDidDisconnectNotification" +public let WebsocketDisconnectionErrorKeyName = "WebsocketDisconnectionErrorKeyName" + +//Standard WebSocket close codes +public enum CloseCode : UInt16 { + case normal = 1000 + case goingAway = 1001 + case protocolError = 1002 + case protocolUnhandledType = 1003 + // 1004 reserved. + case noStatusReceived = 1005 + //1006 reserved. + case encoding = 1007 + case policyViolated = 1008 + case messageTooBig = 1009 +} + +public enum ErrorType: Error { + case outputStreamWriteError //output stream error during write + case compressionError + case invalidSSLError //Invalid SSL certificate + case writeTimeoutError //The socket timed out waiting to be ready to write + case protocolError //There was an error parsing the WebSocket frames + case upgradeError //There was an error during the HTTP upgrade + case closeError //There was an error during the close (socket probably has been dereferenced) +} + +public struct WSError: Error { + public let type: ErrorType + public let message: String + public let code: Int +} + +//WebSocketClient is setup to be dependency injection for testing +public protocol WebSocketClient: class { + var delegate: WebSocketDelegate? {get set} + var pongDelegate: WebSocketPongDelegate? {get set} + var disableSSLCertValidation: Bool {get set} + var overrideTrustHostname: Bool {get set} + var desiredTrustHostname: String? {get set} + var sslClientCertificate: SSLClientCertificate? {get set} + #if os(Linux) + #else + var security: SSLTrustValidator? {get set} + var enabledSSLCipherSuites: [SSLCipherSuite]? {get set} + #endif + var isConnected: Bool {get} + + func connect() + func disconnect(forceTimeout: TimeInterval?, closeCode: UInt16) + func write(string: String, completion: (() -> ())?) + func write(data: Data, completion: (() -> ())?) + func write(ping: Data, completion: (() -> ())?) + func write(pong: Data, completion: (() -> ())?) +} + +//implements some of the base behaviors +extension WebSocketClient { + public func write(string: String) { + write(string: string, completion: nil) + } + + public func write(data: Data) { + write(data: data, completion: nil) + } + + public func write(ping: Data) { + write(ping: ping, completion: nil) + } + + public func write(pong: Data) { + write(pong: pong, completion: nil) + } + + public func disconnect() { + disconnect(forceTimeout: nil, closeCode: CloseCode.normal.rawValue) + } +} + +//SSL settings for the stream +public struct SSLSettings { + public let useSSL: Bool + public let disableCertValidation: Bool + public var overrideTrustHostname: Bool + public var desiredTrustHostname: String? + public let sslClientCertificate: SSLClientCertificate? + #if os(Linux) + #else + public let cipherSuites: [SSLCipherSuite]? + #endif +} + +public protocol WSStreamDelegate: class { + func newBytesInStream() + func streamDidError(error: Error?) +} + +//This protocol is to allow custom implemention of the underlining stream. This way custom socket libraries (e.g. linux) can be used +public protocol WSStream { + var delegate: WSStreamDelegate? {get set} + func connect(url: URL, port: Int, timeout: TimeInterval, ssl: SSLSettings, completion: @escaping ((Error?) -> Void)) + func write(data: Data) -> Int + func read() -> Data? + func cleanup() + #if os(Linux) || os(watchOS) + #else + func sslTrust() -> (trust: SecTrust?, domain: String?) + #endif +} + +open class FoundationStream : NSObject, WSStream, StreamDelegate { + private let workQueue = DispatchQueue(label: "com.vluxe.starscream.websocket", attributes: []) + private var inputStream: InputStream? + private var outputStream: OutputStream? + public weak var delegate: WSStreamDelegate? + let BUFFER_MAX = 4096 + + public var enableSOCKSProxy = false + + public func connect(url: URL, port: Int, timeout: TimeInterval, ssl: SSLSettings, completion: @escaping ((Error?) -> Void)) { + var readStream: Unmanaged? + var writeStream: Unmanaged? + let h = url.host! as NSString + CFStreamCreatePairWithSocketToHost(nil, h, UInt32(port), &readStream, &writeStream) + inputStream = readStream!.takeRetainedValue() + outputStream = writeStream!.takeRetainedValue() + + #if os(watchOS) //watchOS us unfortunately is missing the kCFStream properties to make this work + #else + if enableSOCKSProxy { + let proxyDict = CFNetworkCopySystemProxySettings() + let socksConfig = CFDictionaryCreateMutableCopy(nil, 0, proxyDict!.takeRetainedValue()) + let propertyKey = CFStreamPropertyKey(rawValue: kCFStreamPropertySOCKSProxy) + CFWriteStreamSetProperty(outputStream, propertyKey, socksConfig) + CFReadStreamSetProperty(inputStream, propertyKey, socksConfig) + } + #endif + + guard let inStream = inputStream, let outStream = outputStream else { return } + inStream.delegate = self + outStream.delegate = self + if ssl.useSSL { + inStream.setProperty(StreamSocketSecurityLevel.negotiatedSSL as AnyObject, forKey: Stream.PropertyKey.socketSecurityLevelKey) + outStream.setProperty(StreamSocketSecurityLevel.negotiatedSSL as AnyObject, forKey: Stream.PropertyKey.socketSecurityLevelKey) + #if os(watchOS) //watchOS us unfortunately is missing the kCFStream properties to make this work + #else + var settings = [NSObject: NSObject]() + if ssl.disableCertValidation { + settings[kCFStreamSSLValidatesCertificateChain] = NSNumber(value: false) + } + if ssl.overrideTrustHostname { + if let hostname = ssl.desiredTrustHostname { + settings[kCFStreamSSLPeerName] = hostname as NSString + } else { + settings[kCFStreamSSLPeerName] = kCFNull + } + } + if let sslClientCertificate = ssl.sslClientCertificate { + settings[kCFStreamSSLCertificates] = sslClientCertificate.streamSSLCertificates + } + + inStream.setProperty(settings, forKey: kCFStreamPropertySSLSettings as Stream.PropertyKey) + outStream.setProperty(settings, forKey: kCFStreamPropertySSLSettings as Stream.PropertyKey) + #endif + + #if os(Linux) + #else + if let cipherSuites = ssl.cipherSuites { + #if os(watchOS) //watchOS us unfortunately is missing the kCFStream properties to make this work + #else + if let sslContextIn = CFReadStreamCopyProperty(inputStream, CFStreamPropertyKey(rawValue: kCFStreamPropertySSLContext)) as! SSLContext?, + let sslContextOut = CFWriteStreamCopyProperty(outputStream, CFStreamPropertyKey(rawValue: kCFStreamPropertySSLContext)) as! SSLContext? { + let resIn = SSLSetEnabledCiphers(sslContextIn, cipherSuites, cipherSuites.count) + let resOut = SSLSetEnabledCiphers(sslContextOut, cipherSuites, cipherSuites.count) + if resIn != errSecSuccess { + completion(WSError(type: .invalidSSLError, message: "Error setting ingoing cypher suites", code: Int(resIn))) + } + if resOut != errSecSuccess { + completion(WSError(type: .invalidSSLError, message: "Error setting outgoing cypher suites", code: Int(resOut))) + } + } + #endif + } + #endif + } + + CFReadStreamSetDispatchQueue(inStream, workQueue) + CFWriteStreamSetDispatchQueue(outStream, workQueue) + inStream.open() + outStream.open() + + var out = timeout// wait X seconds before giving up + workQueue.async { [weak self] in + while !outStream.hasSpaceAvailable { + usleep(100) // wait until the socket is ready + out -= 100 + if out < 0 { + completion(WSError(type: .writeTimeoutError, message: "Timed out waiting for the socket to be ready for a write", code: 0)) + return + } else if let error = outStream.streamError { + completion(error) + return // disconnectStream will be called. + } else if self == nil { + completion(WSError(type: .closeError, message: "socket object has been dereferenced", code: 0)) + return + } + } + completion(nil) //success! + } + } + + public func write(data: Data) -> Int { + guard let outStream = outputStream else {return -1} + let buffer = UnsafeRawPointer((data as NSData).bytes).assumingMemoryBound(to: UInt8.self) + return outStream.write(buffer, maxLength: data.count) + } + + public func read() -> Data? { + guard let stream = inputStream else {return nil} + let buf = NSMutableData(capacity: BUFFER_MAX) + let buffer = UnsafeMutableRawPointer(mutating: buf!.bytes).assumingMemoryBound(to: UInt8.self) + let length = stream.read(buffer, maxLength: BUFFER_MAX) + if length < 1 { + return nil + } + return Data(bytes: buffer, count: length) + } + + public func cleanup() { + if let stream = inputStream { + stream.delegate = nil + CFReadStreamSetDispatchQueue(stream, nil) + stream.close() + } + if let stream = outputStream { + stream.delegate = nil + CFWriteStreamSetDispatchQueue(stream, nil) + stream.close() + } + outputStream = nil + inputStream = nil + } + + #if os(Linux) || os(watchOS) + #else + public func sslTrust() -> (trust: SecTrust?, domain: String?) { + guard let outputStream = outputStream else { return (nil, nil) } + + let trust = outputStream.property(forKey: kCFStreamPropertySSLPeerTrust as Stream.PropertyKey) as! SecTrust? + var domain = outputStream.property(forKey: kCFStreamSSLPeerName as Stream.PropertyKey) as! String? + if domain == nil, + let sslContextOut = CFWriteStreamCopyProperty(outputStream, CFStreamPropertyKey(rawValue: kCFStreamPropertySSLContext)) as! SSLContext? { + var peerNameLen: Int = 0 + SSLGetPeerDomainNameLength(sslContextOut, &peerNameLen) + var peerName = Data(count: peerNameLen) + let _ = peerName.withUnsafeMutableBytes { (peerNamePtr: UnsafeMutablePointer) in + SSLGetPeerDomainName(sslContextOut, peerNamePtr, &peerNameLen) + } + if let peerDomain = String(bytes: peerName, encoding: .utf8), peerDomain.count > 0 { + domain = peerDomain + } + } + + return (trust, domain) + } + #endif + + /** + Delegate for the stream methods. Processes incoming bytes + */ + open func stream(_ aStream: Stream, handle eventCode: Stream.Event) { + if eventCode == .hasBytesAvailable { + if aStream == inputStream { + delegate?.newBytesInStream() + } + } else if eventCode == .errorOccurred { + delegate?.streamDidError(error: aStream.streamError) + } else if eventCode == .endEncountered { + delegate?.streamDidError(error: nil) + } + } +} + +//WebSocket implementation + +//standard delegate you should use +public protocol WebSocketDelegate: class { + func websocketDidConnect(socket: WebSocketClient) + func websocketDidDisconnect(socket: WebSocketClient, error: Error?) + func websocketDidReceiveMessage(socket: WebSocketClient, text: String) + func websocketDidReceiveData(socket: WebSocketClient, data: Data) +} + +//got pongs +public protocol WebSocketPongDelegate: class { + func websocketDidReceivePong(socket: WebSocketClient, data: Data?) +} + +// A Delegate with more advanced info on messages and connection etc. +public protocol WebSocketAdvancedDelegate: class { + func websocketDidConnect(socket: WebSocket) + func websocketDidDisconnect(socket: WebSocket, error: Error?) + func websocketDidReceiveMessage(socket: WebSocket, text: String, response: WebSocket.WSResponse) + func websocketDidReceiveData(socket: WebSocket, data: Data, response: WebSocket.WSResponse) + func websocketHttpUpgrade(socket: WebSocket, request: String) + func websocketHttpUpgrade(socket: WebSocket, response: String) +} + + +open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelegate { + + public enum OpCode : UInt8 { + case continueFrame = 0x0 + case textFrame = 0x1 + case binaryFrame = 0x2 + // 3-7 are reserved. + case connectionClose = 0x8 + case ping = 0x9 + case pong = 0xA + // B-F reserved. + } + + public static let ErrorDomain = "WebSocket" + + // Where the callback is executed. It defaults to the main UI thread queue. + public var callbackQueue = DispatchQueue.main + + // MARK: - Constants + + let headerWSUpgradeName = "Upgrade" + let headerWSUpgradeValue = "websocket" + let headerWSHostName = "Host" + let headerWSConnectionName = "Connection" + let headerWSConnectionValue = "Upgrade" + let headerWSProtocolName = "Sec-WebSocket-Protocol" + let headerWSVersionName = "Sec-WebSocket-Version" + let headerWSVersionValue = "13" + let headerWSExtensionName = "Sec-WebSocket-Extensions" + let headerWSKeyName = "Sec-WebSocket-Key" + let headerOriginName = "Origin" + let headerWSAcceptName = "Sec-WebSocket-Accept" + let BUFFER_MAX = 4096 + let FinMask: UInt8 = 0x80 + let OpCodeMask: UInt8 = 0x0F + let RSVMask: UInt8 = 0x70 + let RSV1Mask: UInt8 = 0x40 + let MaskMask: UInt8 = 0x80 + let PayloadLenMask: UInt8 = 0x7F + let MaxFrameSize: Int = 32 + let httpSwitchProtocolCode = 101 + let supportedSSLSchemes = ["wss", "https"] + + public class WSResponse { + var isFin = false + public var code: OpCode = .continueFrame + var bytesLeft = 0 + public var frameCount = 0 + public var buffer: NSMutableData? + public let firstFrame = { + return Date() + }() + } + + // MARK: - Delegates + + /// Responds to callback about new messages coming in over the WebSocket + /// and also connection/disconnect messages. + public weak var delegate: WebSocketDelegate? + + /// The optional advanced delegate can be used instead of of the delegate + public weak var advancedDelegate: WebSocketAdvancedDelegate? + + /// Receives a callback for each pong message recived. + public weak var pongDelegate: WebSocketPongDelegate? + + public var onConnect: (() -> Void)? + public var onDisconnect: ((Error?) -> Void)? + public var onText: ((String) -> Void)? + public var onData: ((Data) -> Void)? + public var onPong: ((Data?) -> Void)? + public var onHttpResponseHeaders: (([String: String]) -> Void)? + + public var disableSSLCertValidation = false + public var overrideTrustHostname = false + public var desiredTrustHostname: String? = nil + public var sslClientCertificate: SSLClientCertificate? = nil + + public var enableCompression = true + #if os(Linux) + #else + public var security: SSLTrustValidator? + public var enabledSSLCipherSuites: [SSLCipherSuite]? + #endif + + public var isConnected: Bool { + mutex.lock() + let isConnected = connected + mutex.unlock() + return isConnected + } + public var request: URLRequest //this is only public to allow headers, timeout, etc to be modified on reconnect + public var currentURL: URL { return request.url! } + + public var respondToPingWithPong: Bool = true + + // MARK: - Private + + private struct CompressionState { + var supportsCompression = false + var messageNeedsDecompression = false + var serverMaxWindowBits = 15 + var clientMaxWindowBits = 15 + var clientNoContextTakeover = false + var serverNoContextTakeover = false + var decompressor:Decompressor? = nil + var compressor:Compressor? = nil + } + + private var stream: WSStream + private var connected = false + private var isConnecting = false + private let mutex = NSLock() + private var compressionState = CompressionState() + private var writeQueue = OperationQueue() + private var readStack = [WSResponse]() + private var inputQueue = [Data]() + private var fragBuffer: Data? + private var certValidated = false + private var didDisconnect = false + private var readyToWrite = false + private var headerSecKey = "" + private var canDispatch: Bool { + mutex.lock() + let canWork = readyToWrite + mutex.unlock() + return canWork + } + + /// Used for setting protocols. + public init(request: URLRequest, protocols: [String]? = nil, stream: WSStream = FoundationStream()) { + self.request = request + self.stream = stream + if request.value(forHTTPHeaderField: headerOriginName) == nil { + guard let url = request.url else {return} + var origin = url.absoluteString + if let hostUrl = URL (string: "/", relativeTo: url) { + origin = hostUrl.absoluteString + origin.remove(at: origin.index(before: origin.endIndex)) + } + self.request.setValue(origin, forHTTPHeaderField: headerOriginName) + } + if let protocols = protocols, !protocols.isEmpty { + self.request.setValue(protocols.joined(separator: ","), forHTTPHeaderField: headerWSProtocolName) + } + writeQueue.maxConcurrentOperationCount = 1 + } + + public convenience init(url: URL, protocols: [String]? = nil) { + var request = URLRequest(url: url) + request.timeoutInterval = 5 + self.init(request: request, protocols: protocols) + } + + // Used for specifically setting the QOS for the write queue. + public convenience init(url: URL, writeQueueQOS: QualityOfService, protocols: [String]? = nil) { + self.init(url: url, protocols: protocols) + writeQueue.qualityOfService = writeQueueQOS + } + + /** + Connect to the WebSocket server on a background thread. + */ + open func connect() { + guard !isConnecting else { return } + didDisconnect = false + isConnecting = true + createHTTPRequest() + } + + /** + Disconnect from the server. I send a Close control frame to the server, then expect the server to respond with a Close control frame and close the socket from its end. I notify my delegate once the socket has been closed. + + If you supply a non-nil `forceTimeout`, I wait at most that long (in seconds) for the server to close the socket. After the timeout expires, I close the socket and notify my delegate. + + If you supply a zero (or negative) `forceTimeout`, I immediately close the socket (without sending a Close control frame) and notify my delegate. + + - Parameter forceTimeout: Maximum time to wait for the server to close the socket. + - Parameter closeCode: The code to send on disconnect. The default is the normal close code for cleanly disconnecting a webSocket. + */ + open func disconnect(forceTimeout: TimeInterval? = nil, closeCode: UInt16 = CloseCode.normal.rawValue) { + guard isConnected else { return } + switch forceTimeout { + case .some(let seconds) where seconds > 0: + let milliseconds = Int(seconds * 1_000) + callbackQueue.asyncAfter(deadline: .now() + .milliseconds(milliseconds)) { [weak self] in + self?.disconnectStream(nil) + } + fallthrough + case .none: + writeError(closeCode) + default: + disconnectStream(nil) + break + } + } + + /** + Write a string to the websocket. This sends it as a text frame. + + If you supply a non-nil completion block, I will perform it when the write completes. + + - parameter string: The string to write. + - parameter completion: The (optional) completion handler. + */ + open func write(string: String, completion: (() -> ())? = nil) { + guard isConnected else { return } + dequeueWrite(string.data(using: String.Encoding.utf8)!, code: .textFrame, writeCompletion: completion) + } + + /** + Write binary data to the websocket. This sends it as a binary frame. + + If you supply a non-nil completion block, I will perform it when the write completes. + + - parameter data: The data to write. + - parameter completion: The (optional) completion handler. + */ + open func write(data: Data, completion: (() -> ())? = nil) { + guard isConnected else { return } + dequeueWrite(data, code: .binaryFrame, writeCompletion: completion) + } + + /** + Write a ping to the websocket. This sends it as a control frame. + Yodel a sound to the planet. This sends it as an astroid. http://youtu.be/Eu5ZJELRiJ8?t=42s + */ + open func write(ping: Data, completion: (() -> ())? = nil) { + guard isConnected else { return } + dequeueWrite(ping, code: .ping, writeCompletion: completion) + } + + /** + Write a pong to the websocket. This sends it as a control frame. + Respond to a Yodel. + */ + open func write(pong: Data, completion: (() -> ())? = nil) { + guard isConnected else { return } + dequeueWrite(pong, code: .pong, writeCompletion: completion) + } + + /** + Private method that starts the connection. + */ + private func createHTTPRequest() { + guard let url = request.url else {return} + var port = url.port + if port == nil { + if supportedSSLSchemes.contains(url.scheme!) { + port = 443 + } else { + port = 80 + } + } + request.setValue(headerWSUpgradeValue, forHTTPHeaderField: headerWSUpgradeName) + request.setValue(headerWSConnectionValue, forHTTPHeaderField: headerWSConnectionName) + headerSecKey = generateWebSocketKey() + request.setValue(headerWSVersionValue, forHTTPHeaderField: headerWSVersionName) + request.setValue(headerSecKey, forHTTPHeaderField: headerWSKeyName) + + if enableCompression { + let val = "permessage-deflate; client_max_window_bits; server_max_window_bits=15" + request.setValue(val, forHTTPHeaderField: headerWSExtensionName) + } + let hostValue = request.allHTTPHeaderFields?[headerWSHostName] ?? "\(url.host!):\(port!)" + request.setValue(hostValue, forHTTPHeaderField: headerWSHostName) + + var path = url.absoluteString + let offset = (url.scheme?.count ?? 2) + 3 + path = String(path[path.index(path.startIndex, offsetBy: offset).. String { + var key = "" + let seed = 16 + for _ in 0.., bufferLen: Int) { + let code = processHTTP(buffer, bufferLen: bufferLen) + switch code { + case 0: + break + case -1: + fragBuffer = Data(bytes: buffer, count: bufferLen) + break // do nothing, we are going to collect more data + default: + doDisconnect(WSError(type: .upgradeError, message: "Invalid HTTP upgrade", code: code)) + } + } + + /** + Finds the HTTP Packet in the TCP stream, by looking for the CRLF. + */ + private func processHTTP(_ buffer: UnsafePointer, bufferLen: Int) -> Int { + let CRLFBytes = [UInt8(ascii: "\r"), UInt8(ascii: "\n"), UInt8(ascii: "\r"), UInt8(ascii: "\n")] + var k = 0 + var totalSize = 0 + for i in 0.. 0 { + let code = validateResponse(buffer, bufferLen: totalSize) + if code != 0 { + return code + } + isConnecting = false + mutex.lock() + connected = true + mutex.unlock() + didDisconnect = false + if canDispatch { + callbackQueue.async { [weak self] in + guard let self = self else { return } + self.onConnect?() + self.delegate?.websocketDidConnect(socket: self) + self.advancedDelegate?.websocketDidConnect(socket: self) + NotificationCenter.default.post(name: NSNotification.Name(WebsocketDidConnectNotification), object: self) + } + } + //totalSize += 1 //skip the last \n + let restSize = bufferLen - totalSize + if restSize > 0 { + processRawMessagesInBuffer(buffer + totalSize, bufferLen: restSize) + } + return 0 //success + } + return -1 // Was unable to find the full TCP header. + } + + /** + Validates the HTTP is a 101 as per the RFC spec. + */ + private func validateResponse(_ buffer: UnsafePointer, bufferLen: Int) -> Int { + guard let str = String(data: Data(bytes: buffer, count: bufferLen), encoding: .utf8) else { return -1 } + let splitArr = str.components(separatedBy: "\r\n") + var code = -1 + var i = 0 + var headers = [String: String]() + for str in splitArr { + if i == 0 { + let responseSplit = str.components(separatedBy: .whitespaces) + guard responseSplit.count > 1 else { return -1 } + if let c = Int(responseSplit[1]) { + code = c + } + } else { + let responseSplit = str.components(separatedBy: ":") + guard responseSplit.count > 1 else { break } + let key = responseSplit[0].trimmingCharacters(in: .whitespaces) + let val = responseSplit[1].trimmingCharacters(in: .whitespaces) + headers[key.lowercased()] = val + } + i += 1 + } + advancedDelegate?.websocketHttpUpgrade(socket: self, response: str) + onHttpResponseHeaders?(headers) + if code != httpSwitchProtocolCode { + return code + } + + if let extensionHeader = headers[headerWSExtensionName.lowercased()] { + processExtensionHeader(extensionHeader) + } + + if let acceptKey = headers[headerWSAcceptName.lowercased()] { + if acceptKey.count > 0 { + if headerSecKey.count > 0 { + let sha = "\(headerSecKey)258EAFA5-E914-47DA-95CA-C5AB0DC85B11".sha1Base64() + if sha != acceptKey as String { + return -1 + } + } + return 0 + } + } + return -1 + } + + /** + Parses the extension header, setting up the compression parameters. + */ + func processExtensionHeader(_ extensionHeader: String) { + let parts = extensionHeader.components(separatedBy: ";") + for p in parts { + let part = p.trimmingCharacters(in: .whitespaces) + if part == "permessage-deflate" { + compressionState.supportsCompression = true + } else if part.hasPrefix("server_max_window_bits=") { + let valString = part.components(separatedBy: "=")[1] + if let val = Int(valString.trimmingCharacters(in: .whitespaces)) { + compressionState.serverMaxWindowBits = val + } + } else if part.hasPrefix("client_max_window_bits=") { + let valString = part.components(separatedBy: "=")[1] + if let val = Int(valString.trimmingCharacters(in: .whitespaces)) { + compressionState.clientMaxWindowBits = val + } + } else if part == "client_no_context_takeover" { + compressionState.clientNoContextTakeover = true + } else if part == "server_no_context_takeover" { + compressionState.serverNoContextTakeover = true + } + } + if compressionState.supportsCompression { + compressionState.decompressor = Decompressor(windowBits: compressionState.serverMaxWindowBits) + compressionState.compressor = Compressor(windowBits: compressionState.clientMaxWindowBits) + } + } + + /** + Read a 16 bit big endian value from a buffer + */ + private static func readUint16(_ buffer: UnsafePointer, offset: Int) -> UInt16 { + return (UInt16(buffer[offset + 0]) << 8) | UInt16(buffer[offset + 1]) + } + + /** + Read a 64 bit big endian value from a buffer + */ + private static func readUint64(_ buffer: UnsafePointer, offset: Int) -> UInt64 { + var value = UInt64(0) + for i in 0...7 { + value = (value << 8) | UInt64(buffer[offset + i]) + } + return value + } + + /** + Write a 16-bit big endian value to a buffer. + */ + private static func writeUint16(_ buffer: UnsafeMutablePointer, offset: Int, value: UInt16) { + buffer[offset + 0] = UInt8(value >> 8) + buffer[offset + 1] = UInt8(value & 0xff) + } + + /** + Write a 64-bit big endian value to a buffer. + */ + private static func writeUint64(_ buffer: UnsafeMutablePointer, offset: Int, value: UInt64) { + for i in 0...7 { + buffer[offset + i] = UInt8((value >> (8*UInt64(7 - i))) & 0xff) + } + } + + /** + Process one message at the start of `buffer`. Return another buffer (sharing storage) that contains the leftover contents of `buffer` that I didn't process. + */ + private func processOneRawMessage(inBuffer buffer: UnsafeBufferPointer) -> UnsafeBufferPointer { + let response = readStack.last + guard let baseAddress = buffer.baseAddress else {return emptyBuffer} + let bufferLen = buffer.count + if response != nil && bufferLen < 2 { + fragBuffer = Data(buffer: buffer) + return emptyBuffer + } + if let response = response, response.bytesLeft > 0 { + var len = response.bytesLeft + var extra = bufferLen - response.bytesLeft + if response.bytesLeft > bufferLen { + len = bufferLen + extra = 0 + } + response.bytesLeft -= len + response.buffer?.append(Data(bytes: baseAddress, count: len)) + _ = processResponse(response) + return buffer.fromOffset(bufferLen - extra) + } else { + let isFin = (FinMask & baseAddress[0]) + let receivedOpcodeRawValue = (OpCodeMask & baseAddress[0]) + let receivedOpcode = OpCode(rawValue: receivedOpcodeRawValue) + let isMasked = (MaskMask & baseAddress[1]) + let payloadLen = (PayloadLenMask & baseAddress[1]) + var offset = 2 + if compressionState.supportsCompression && receivedOpcode != .continueFrame { + compressionState.messageNeedsDecompression = (RSV1Mask & baseAddress[0]) > 0 + } + if (isMasked > 0 || (RSVMask & baseAddress[0]) > 0) && receivedOpcode != .pong && !compressionState.messageNeedsDecompression { + let errCode = CloseCode.protocolError.rawValue + doDisconnect(WSError(type: .protocolError, message: "masked and rsv data is not currently supported", code: Int(errCode))) + writeError(errCode) + return emptyBuffer + } + let isControlFrame = (receivedOpcode == .connectionClose || receivedOpcode == .ping) + if !isControlFrame && (receivedOpcode != .binaryFrame && receivedOpcode != .continueFrame && + receivedOpcode != .textFrame && receivedOpcode != .pong) { + let errCode = CloseCode.protocolError.rawValue + doDisconnect(WSError(type: .protocolError, message: "unknown opcode: \(receivedOpcodeRawValue)", code: Int(errCode))) + writeError(errCode) + return emptyBuffer + } + if isControlFrame && isFin == 0 { + let errCode = CloseCode.protocolError.rawValue + doDisconnect(WSError(type: .protocolError, message: "control frames can't be fragmented", code: Int(errCode))) + writeError(errCode) + return emptyBuffer + } + var closeCode = CloseCode.normal.rawValue + if receivedOpcode == .connectionClose { + if payloadLen == 1 { + closeCode = CloseCode.protocolError.rawValue + } else if payloadLen > 1 { + closeCode = WebSocket.readUint16(baseAddress, offset: offset) + if closeCode < 1000 || (closeCode > 1003 && closeCode < 1007) || (closeCode > 1013 && closeCode < 3000) { + closeCode = CloseCode.protocolError.rawValue + } + } + if payloadLen < 2 { + doDisconnect(WSError(type: .protocolError, message: "connection closed by server", code: Int(closeCode))) + writeError(closeCode) + return emptyBuffer + } + } else if isControlFrame && payloadLen > 125 { + writeError(CloseCode.protocolError.rawValue) + return emptyBuffer + } + var dataLength = UInt64(payloadLen) + if dataLength == 127 { + dataLength = WebSocket.readUint64(baseAddress, offset: offset) + offset += MemoryLayout.size + } else if dataLength == 126 { + dataLength = UInt64(WebSocket.readUint16(baseAddress, offset: offset)) + offset += MemoryLayout.size + } + if bufferLen < offset || UInt64(bufferLen - offset) < dataLength { + fragBuffer = Data(bytes: baseAddress, count: bufferLen) + return emptyBuffer + } + var len = dataLength + if dataLength > UInt64(bufferLen) { + len = UInt64(bufferLen-offset) + } + if receivedOpcode == .connectionClose && len > 0 { + let size = MemoryLayout.size + offset += size + len -= UInt64(size) + } + let data: Data + if compressionState.messageNeedsDecompression, let decompressor = compressionState.decompressor { + do { + data = try decompressor.decompress(bytes: baseAddress+offset, count: Int(len), finish: isFin > 0) + if isFin > 0 && compressionState.serverNoContextTakeover { + try decompressor.reset() + } + } catch { + let closeReason = "Decompression failed: \(error)" + let closeCode = CloseCode.encoding.rawValue + doDisconnect(WSError(type: .protocolError, message: closeReason, code: Int(closeCode))) + writeError(closeCode) + return emptyBuffer + } + } else { + data = Data(bytes: baseAddress+offset, count: Int(len)) + } + + if receivedOpcode == .connectionClose { + var closeReason = "connection closed by server" + if let customCloseReason = String(data: data, encoding: .utf8) { + closeReason = customCloseReason + } else { + closeCode = CloseCode.protocolError.rawValue + } + doDisconnect(WSError(type: .protocolError, message: closeReason, code: Int(closeCode))) + writeError(closeCode) + return emptyBuffer + } + if receivedOpcode == .pong { + if canDispatch { + callbackQueue.async { [weak self] in + guard let self = self else { return } + let pongData: Data? = data.count > 0 ? data : nil + self.onPong?(pongData) + self.pongDelegate?.websocketDidReceivePong(socket: self, data: pongData) + } + } + return buffer.fromOffset(offset + Int(len)) + } + var response = readStack.last + if isControlFrame { + response = nil // Don't append pings. + } + if isFin == 0 && receivedOpcode == .continueFrame && response == nil { + let errCode = CloseCode.protocolError.rawValue + doDisconnect(WSError(type: .protocolError, message: "continue frame before a binary or text frame", code: Int(errCode))) + writeError(errCode) + return emptyBuffer + } + var isNew = false + if response == nil { + if receivedOpcode == .continueFrame { + let errCode = CloseCode.protocolError.rawValue + doDisconnect(WSError(type: .protocolError, message: "first frame can't be a continue frame", code: Int(errCode))) + writeError(errCode) + return emptyBuffer + } + isNew = true + response = WSResponse() + response!.code = receivedOpcode! + response!.bytesLeft = Int(dataLength) + response!.buffer = NSMutableData(data: data) + } else { + if receivedOpcode == .continueFrame { + response!.bytesLeft = Int(dataLength) + } else { + let errCode = CloseCode.protocolError.rawValue + doDisconnect(WSError(type: .protocolError, message: "second and beyond of fragment message must be a continue frame", code: Int(errCode))) + writeError(errCode) + return emptyBuffer + } + response!.buffer!.append(data) + } + if let response = response { + response.bytesLeft -= Int(len) + response.frameCount += 1 + response.isFin = isFin > 0 ? true : false + if isNew { + readStack.append(response) + } + _ = processResponse(response) + } + + let step = Int(offset + numericCast(len)) + return buffer.fromOffset(step) + } + } + + /** + Process all messages in the buffer if possible. + */ + private func processRawMessagesInBuffer(_ pointer: UnsafePointer, bufferLen: Int) { + var buffer = UnsafeBufferPointer(start: pointer, count: bufferLen) + repeat { + buffer = processOneRawMessage(inBuffer: buffer) + } while buffer.count >= 2 + if buffer.count > 0 { + fragBuffer = Data(buffer: buffer) + } + } + + /** + Process the finished response of a buffer. + */ + private func processResponse(_ response: WSResponse) -> Bool { + if response.isFin && response.bytesLeft <= 0 { + if response.code == .ping { + if respondToPingWithPong { + let data = response.buffer! // local copy so it is perverse for writing + dequeueWrite(data as Data, code: .pong) + } + } else if response.code == .textFrame { + guard let str = String(data: response.buffer! as Data, encoding: .utf8) else { + writeError(CloseCode.encoding.rawValue) + return false + } + if canDispatch { + callbackQueue.async { [weak self] in + guard let self = self else { return } + self.onText?(str) + self.delegate?.websocketDidReceiveMessage(socket: self, text: str) + self.advancedDelegate?.websocketDidReceiveMessage(socket: self, text: str, response: response) + } + } + } else if response.code == .binaryFrame { + if canDispatch { + let data = response.buffer! // local copy so it is perverse for writing + callbackQueue.async { [weak self] in + guard let self = self else { return } + self.onData?(data as Data) + self.delegate?.websocketDidReceiveData(socket: self, data: data as Data) + self.advancedDelegate?.websocketDidReceiveData(socket: self, data: data as Data, response: response) + } + } + } + readStack.removeLast() + return true + } + return false + } + + /** + Write an error to the socket + */ + private func writeError(_ code: UInt16) { + let buf = NSMutableData(capacity: MemoryLayout.size) + let buffer = UnsafeMutableRawPointer(mutating: buf!.bytes).assumingMemoryBound(to: UInt8.self) + WebSocket.writeUint16(buffer, offset: 0, value: code) + dequeueWrite(Data(bytes: buffer, count: MemoryLayout.size), code: .connectionClose) + } + + /** + Used to write things to the stream + */ + private func dequeueWrite(_ data: Data, code: OpCode, writeCompletion: (() -> ())? = nil) { + let operation = BlockOperation() + operation.addExecutionBlock { [weak self, weak operation] in + //stream isn't ready, let's wait + guard let self = self else { return } + guard let sOperation = operation else { return } + var offset = 2 + var firstByte:UInt8 = self.FinMask | code.rawValue + var data = data + if [.textFrame, .binaryFrame].contains(code), let compressor = self.compressionState.compressor { + do { + data = try compressor.compress(data) + if self.compressionState.clientNoContextTakeover { + try compressor.reset() + } + firstByte |= self.RSV1Mask + } catch { + // TODO: report error? We can just send the uncompressed frame. + } + } + let dataLength = data.count + let frame = NSMutableData(capacity: dataLength + self.MaxFrameSize) + let buffer = UnsafeMutableRawPointer(frame!.mutableBytes).assumingMemoryBound(to: UInt8.self) + buffer[0] = firstByte + if dataLength < 126 { + buffer[1] = CUnsignedChar(dataLength) + } else if dataLength <= Int(UInt16.max) { + buffer[1] = 126 + WebSocket.writeUint16(buffer, offset: offset, value: UInt16(dataLength)) + offset += MemoryLayout.size + } else { + buffer[1] = 127 + WebSocket.writeUint64(buffer, offset: offset, value: UInt64(dataLength)) + offset += MemoryLayout.size + } + buffer[1] |= self.MaskMask + let maskKey = UnsafeMutablePointer(buffer + offset) + _ = SecRandomCopyBytes(kSecRandomDefault, Int(MemoryLayout.size), maskKey) + offset += MemoryLayout.size + + for i in 0...size] + offset += 1 + } + var total = 0 + while !sOperation.isCancelled { + if !self.readyToWrite { + self.doDisconnect(WSError(type: .outputStreamWriteError, message: "output stream had an error during write", code: 0)) + break + } + let stream = self.stream + let writeBuffer = UnsafeRawPointer(frame!.bytes+total).assumingMemoryBound(to: UInt8.self) + let len = stream.write(data: Data(bytes: writeBuffer, count: offset-total)) + if len <= 0 { + self.doDisconnect(WSError(type: .outputStreamWriteError, message: "output stream had an error during write", code: 0)) + break + } else { + total += len + } + if total >= offset { + if let callback = writeCompletion { + self.callbackQueue.async { + callback() + } + } + + break + } + } + } + writeQueue.addOperation(operation) + } + + /** + Used to preform the disconnect delegate + */ + private func doDisconnect(_ error: Error?) { + guard !didDisconnect else { return } + didDisconnect = true + isConnecting = false + mutex.lock() + connected = false + mutex.unlock() + guard canDispatch else {return} + callbackQueue.async { [weak self] in + guard let self = self else { return } + self.onDisconnect?(error) + self.delegate?.websocketDidDisconnect(socket: self, error: error) + self.advancedDelegate?.websocketDidDisconnect(socket: self, error: error) + let userInfo = error.map{ [WebsocketDisconnectionErrorKeyName: $0] } + NotificationCenter.default.post(name: NSNotification.Name(WebsocketDidDisconnectNotification), object: self, userInfo: userInfo) + } + } + + // MARK: - Deinit + + deinit { + mutex.lock() + readyToWrite = false + cleanupStream() + mutex.unlock() + writeQueue.cancelAllOperations() + } + +} + +private extension String { + func sha1Base64() -> String { + let data = self.data(using: String.Encoding.utf8)! + var digest = [UInt8](repeating: 0, count:Int(CC_SHA1_DIGEST_LENGTH)) + data.withUnsafeBytes { _ = CC_SHA1($0, CC_LONG(data.count), &digest) } + return Data(bytes: digest).base64EncodedString() + } +} + +private extension Data { + + init(buffer: UnsafeBufferPointer) { + self.init(bytes: buffer.baseAddress!, count: buffer.count) + } + +} + +private extension UnsafeBufferPointer { + + func fromOffset(_ offset: Int) -> UnsafeBufferPointer { + return UnsafeBufferPointer(start: baseAddress?.advanced(by: offset), count: count - offset) + } + +} + +private let emptyBuffer = UnsafeBufferPointer(start: nil, count: 0) + +#if swift(>=4) +#else +fileprivate extension String { + var count: Int { + return self.characters.count + } +} +#endif diff --git a/Example/web3swiftExample/Pods/Target Support Files/BigInt/BigInt.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/BigInt/BigInt.xcconfig index 1e6120d78..83d660f14 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/BigInt/BigInt.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/BigInt/BigInt.xcconfig @@ -1,7 +1,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BigInt FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "SipHash" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist b/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist index 3e3c2e3d8..b6a1e3b4a 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.13.0 + 0.15.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig index ef79591e4..f3e023438 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig @@ -10,5 +10,5 @@ PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES SWIFT_COMPILATION_MODE = wholemodule SWIFT_DISABLE_SAFETY_CHECKS = YES -SWIFT_ENFORCE_EXCLUSIVE_ACCESS = compile-time +SWIFT_ENFORCE_EXCLUSIVE_ACCESS = debug-only SWIFT_OPTIMIZATION_LEVEL = -O diff --git a/Example/web3swiftExample/Pods/Target Support Files/EthereumABI/EthereumABI.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/EthereumABI/EthereumABI.xcconfig index 540f987ea..e25b62e9f 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/EthereumABI/EthereumABI.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/EthereumABI/EthereumABI.xcconfig @@ -2,7 +2,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CryptoSwift" -framework "EthereumAddress" -framework "SipHash" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/web3swiftExample/Pods/Target Support Files/EthereumAddress/EthereumAddress.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/EthereumAddress/EthereumAddress.xcconfig index bcb308c16..d2ee60bc5 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/EthereumAddress/EthereumAddress.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/EthereumAddress/EthereumAddress.xcconfig @@ -2,7 +2,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "CryptoSwift" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.markdown b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.markdown index 855987d47..0a4052054 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.markdown +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.markdown @@ -122,24 +122,186 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## SwiftRLP +## Starscream -Copyright 2018 Alex Vlasov + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + Copyright (c) 2014-2016 Dalton Cherry. - http://www.apache.org/licenses/LICENSE-2.0 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -## scrypt + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +## SwiftRLP Copyright 2018 Alex Vlasov diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.plist b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.plist index 6d4f0f863..a0be47fca 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.plist @@ -171,24 +171,186 @@ SOFTWARE. FooterText - Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + Copyright (c) 2014-2016 Dalton Cherry. - http://www.apache.org/licenses/LICENSE-2.0 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. License - Apache License 2.0 + Apache License, Version 2.0 Title - SwiftRLP + Starscream Type PSGroupSpecifier @@ -211,7 +373,7 @@ limitations under the License. License Apache License 2.0 Title - scrypt + SwiftRLP Type PSGroupSpecifier diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh index bcfc71015..0333e9358 100755 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh @@ -109,6 +109,14 @@ install_dsym() { fi } +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" +} + # Signs a framework with the provided identity code_sign_if_enabled() { if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then @@ -159,8 +167,8 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/EthereumAddress/EthereumAddress.framework" install_framework "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework" install_framework "${BUILT_PRODUCTS_DIR}/SwiftRLP/SwiftRLP.framework" - install_framework "${BUILT_PRODUCTS_DIR}/scrypt/scrypt.framework" install_framework "${BUILT_PRODUCTS_DIR}/secp256k1_swift/secp256k1_swift.framework" install_framework "${BUILT_PRODUCTS_DIR}/web3swift/Web3swift.framework" fi @@ -171,8 +179,8 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/EthereumAddress/EthereumAddress.framework" install_framework "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework" install_framework "${BUILT_PRODUCTS_DIR}/SwiftRLP/SwiftRLP.framework" - install_framework "${BUILT_PRODUCTS_DIR}/scrypt/scrypt.framework" install_framework "${BUILT_PRODUCTS_DIR}/secp256k1_swift/secp256k1_swift.framework" install_framework "${BUILT_PRODUCTS_DIR}/web3swift/Web3swift.framework" fi diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig index 73da986e3..80c38f3d4 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig @@ -1,12 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI/EthereumABI.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress/EthereumAddress.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash/SipHash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP/SwiftRLP.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt/scrypt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift/secp256k1_swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift/Web3swift.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI/EthereumABI.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress/EthereumAddress.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash/SipHash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP/SwiftRLP.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift/secp256k1_swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift/Web3swift.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CoreImage" -framework "CryptoSwift" -framework "EthereumABI" -framework "EthereumAddress" -framework "Foundation" -framework "PromiseKit" -framework "SipHash" -framework "SwiftRLP" -framework "UIKit" -framework "Web3swift" -framework "scrypt" -framework "secp256k1_swift" +OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CoreImage" -framework "CryptoSwift" -framework "EthereumABI" -framework "EthereumAddress" -framework "Foundation" -framework "PromiseKit" -framework "SipHash" -framework "Starscream" -framework "SwiftRLP" -framework "UIKit" -framework "Web3swift" -framework "secp256k1_swift" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(PODS_TARGET_SRCROOT)/scrypt diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig index 73da986e3..80c38f3d4 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig @@ -1,12 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI/EthereumABI.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress/EthereumAddress.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash/SipHash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP/SwiftRLP.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt/scrypt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift/secp256k1_swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift/Web3swift.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI/EthereumABI.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress/EthereumAddress.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash/SipHash.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP/SwiftRLP.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift/secp256k1_swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift/Web3swift.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CoreImage" -framework "CryptoSwift" -framework "EthereumABI" -framework "EthereumAddress" -framework "Foundation" -framework "PromiseKit" -framework "SipHash" -framework "SwiftRLP" -framework "UIKit" -framework "Web3swift" -framework "scrypt" -framework "secp256k1_swift" +OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CoreImage" -framework "CryptoSwift" -framework "EthereumABI" -framework "EthereumAddress" -framework "Foundation" -framework "PromiseKit" -framework "SipHash" -framework "Starscream" -framework "SwiftRLP" -framework "UIKit" -framework "Web3swift" -framework "secp256k1_swift" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(PODS_TARGET_SRCROOT)/scrypt diff --git a/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist b/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist index 0a3a4e6de..b51e629fb 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 6.5.2 + 6.4.1 CFBundleSignature ???? CFBundleVersion diff --git a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-Info.plist b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-Info.plist similarity index 96% rename from Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-Info.plist rename to Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-Info.plist index 0a12077e3..90db36aa4 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-Info.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.0.0 + 3.1.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-dummy.m b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-dummy.m new file mode 100644 index 000000000..94456b3b0 --- /dev/null +++ b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Starscream : NSObject +@end +@implementation PodsDummy_Starscream +@end diff --git a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-prefix.pch b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-prefix.pch similarity index 100% rename from Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-prefix.pch rename to Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-prefix.pch diff --git a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-umbrella.h b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-umbrella.h similarity index 60% rename from Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-umbrella.h rename to Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-umbrella.h index 5dccb1b3e..7bffee0b3 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-umbrella.h +++ b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream-umbrella.h @@ -10,8 +10,7 @@ #endif #endif -#import "scrypt.h" -FOUNDATION_EXPORT double scryptVersionNumber; -FOUNDATION_EXPORT const unsigned char scryptVersionString[]; +FOUNDATION_EXPORT double StarscreamVersionNumber; +FOUNDATION_EXPORT const unsigned char StarscreamVersionString[]; diff --git a/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream.modulemap b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream.modulemap new file mode 100644 index 000000000..2b9097079 --- /dev/null +++ b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream.modulemap @@ -0,0 +1,6 @@ +framework module Starscream { + umbrella header "Starscream-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream.xcconfig new file mode 100644 index 000000000..9b509fcca --- /dev/null +++ b/Example/web3swiftExample/Pods/Target Support Files/Starscream/Starscream.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Starscream +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Starscream +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Example/web3swiftExample/Pods/Target Support Files/SwiftRLP/SwiftRLP-Info.plist b/Example/web3swiftExample/Pods/Target Support Files/SwiftRLP/SwiftRLP-Info.plist index 2a9158a0b..21a30b4a6 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/SwiftRLP/SwiftRLP-Info.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/SwiftRLP/SwiftRLP-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.2.0 + 1.1.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/web3swiftExample/Pods/Target Support Files/SwiftRLP/SwiftRLP.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/SwiftRLP/SwiftRLP.xcconfig index 18c98691b..dd42cb79c 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/SwiftRLP/SwiftRLP.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/SwiftRLP/SwiftRLP.xcconfig @@ -2,7 +2,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP DEFINES_MODULE = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "SipHash" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-dummy.m b/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-dummy.m deleted file mode 100644 index 8976dcd72..000000000 --- a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_scrypt : NSObject -@end -@implementation PodsDummy_scrypt -@end diff --git a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt.modulemap b/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt.modulemap deleted file mode 100644 index 57d509dab..000000000 --- a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module scrypt { - umbrella header "scrypt-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt.xcconfig deleted file mode 100644 index 4e2add7a4..000000000 --- a/Example/web3swiftExample/Pods/Target Support Files/scrypt/scrypt.xcconfig +++ /dev/null @@ -1,19 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/scrypt -DEFINES_MODULE = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -GCC_UNROLL_LOOPS = YES -OTHER_LDFLAGS = $(inherited) -framework "CryptoSwift" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/scrypt -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_COMPILATION_MODE = wholemodule -SWIFT_DISABLE_SAFETY_CHECKS = YES -SWIFT_ENFORCE_EXCLUSIVE_ACCESS = compile-time -SWIFT_INCLUDE_PATHS = $(PODS_TARGET_SRCROOT)/scrypt -SWIFT_OPTIMIZATION_LEVEL = -O -SWIFT_WHOLE_MODULE_OPTIMIZATION = YES diff --git a/Example/web3swiftExample/Pods/Target Support Files/secp256k1_swift/secp256k1_swift.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/secp256k1_swift/secp256k1_swift.xcconfig index f92f9e729..76e47c0ec 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/secp256k1_swift/secp256k1_swift.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/secp256k1_swift/secp256k1_swift.xcconfig @@ -1,7 +1,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/secp256k1" -OTHER_CFLAGS = -DHAVE_CONFIG_H=1 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-shorten-64-to-32 -Wno-conditional-uninitialized -Wno-unused-function -Wno-long-long -Wno-overlength-strings -O3 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/secp256k1" +OTHER_CFLAGS = $(inherited) -DHAVE_CONFIG_H=1 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-shorten-64-to-32 -Wno-conditional-uninitialized -Wno-unused-function -Wno-long-long -Wno-overlength-strings -O3 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) @@ -9,4 +9,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/secp256k1_swift PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = ${PODS_ROOT} +SWIFT_INCLUDE_PATHS = $(inherited) ${PODS_ROOT} diff --git a/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift-Info.plist b/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift-Info.plist index bdac57c6a..d6204c02e 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift-Info.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.0.1 + 2.1.3 CFBundleSignature ???? CFBundleVersion diff --git a/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift.xcconfig index 17c8bafe1..cb24443b6 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift.xcconfig @@ -1,8 +1,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/web3swift DEFINES_MODULE = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "BigInt" -framework "CoreImage" -framework "CryptoSwift" -framework "EthereumABI" -framework "EthereumAddress" -framework "Foundation" -framework "PromiseKit" -framework "SipHash" -framework "SwiftRLP" -framework "UIKit" -framework "scrypt" -framework "secp256k1_swift" +OTHER_LDFLAGS = $(inherited) -framework "CoreImage" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/web3swiftExample/Pods/scrypt/LICENSE b/Example/web3swiftExample/Pods/scrypt/LICENSE deleted file mode 100755 index d49e6aa41..000000000 --- a/Example/web3swiftExample/Pods/scrypt/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/Example/web3swiftExample/Pods/scrypt/scrypt/Cimpl.c b/Example/web3swiftExample/Pods/scrypt/scrypt/Cimpl.c deleted file mode 100644 index fa2981d22..000000000 --- a/Example/web3swiftExample/Pods/scrypt/scrypt/Cimpl.c +++ /dev/null @@ -1,368 +0,0 @@ -// Original work recognition - -/*- - * Copyright 2009 Colin Percival - * Copyright 2013 Alexander Peslyak - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file was originally written by Colin Percival as part of the Tarsnap - * online backup system. - */ - -// Cleanup and putting it all together - -// -// Cimpl.c -// scrypt -// -// Created by Alex Vlasov on 04.09.2018. -// Copyright © 2018 Alexander Vlasov. All rights reserved. -// - -#include -#include -#include -#include -#include - -#if SIZE_MAX > 0xffffffffULL -#define ARCH_BITS 64 -#else -#define ARCH_BITS 32 -#endif - -#define LOAD32_LE(SRC) load32_le(SRC) -static inline uint32_t -load32_le(const uint8_t src[4]) -{ -#ifdef NATIVE_LITTLE_ENDIAN - uint32_t w; - memcpy(&w, src, sizeof w); - return w; -#else - uint32_t w = (uint32_t) src[0]; - w |= (uint32_t) src[1] << 8; - w |= (uint32_t) src[2] << 16; - w |= (uint32_t) src[3] << 24; - return w; -#endif -} - -#define STORE32_LE(DST, W) store32_le((DST), (W)) -static inline void -store32_le(uint8_t dst[4], uint32_t w) -{ -#ifdef NATIVE_LITTLE_ENDIAN - memcpy(dst, &w, sizeof w); -#else - dst[0] = (uint8_t) w; w >>= 8; - dst[1] = (uint8_t) w; w >>= 8; - dst[2] = (uint8_t) w; w >>= 8; - dst[3] = (uint8_t) w; -#endif -} - -typedef union { - uint64_t d[8]; - uint32_t w[16]; -} escrypt_block_t; - -static inline void -blkcpy_64(escrypt_block_t *dest, const escrypt_block_t *src) -{ - int i; - -#if (ARCH_BITS == 32) - for (i = 0; i < 16; ++i) { - dest->w[i] = src->w[i]; - } -#else - for (i = 0; i < 8; ++i) { - dest->d[i] = src->d[i]; - } -#endif -} - -static inline void -blkxor_64(escrypt_block_t *dest, const escrypt_block_t *src) -{ - int i; - -#if (ARCH_BITS == 32) - for (i = 0; i < 16; ++i) { - dest->w[i] ^= src->w[i]; - } -#else - for (i = 0; i < 8; ++i) { - dest->d[i] ^= src->d[i]; - } -#endif -} - -static inline void -blkcpy(escrypt_block_t *dest, const escrypt_block_t *src, size_t len) -{ - size_t i, L; - -#if (ARCH_BITS == 32) - L = (len >> 2); - for (i = 0; i < L; ++i) { - dest->w[i] = src->w[i]; - } -#else - L = (len >> 3); - for (i = 0; i < L; ++i) { - dest->d[i] = src->d[i]; - } -#endif -} - -static inline void -blkxor(escrypt_block_t *dest, const escrypt_block_t *src, size_t len) -{ - size_t i, L; - -#if (ARCH_BITS == 32) - L = (len >> 2); - for (i = 0; i < L; ++i) { - dest->w[i] ^= src->w[i]; - } -#else - L = (len >> 3); - for (i = 0; i < L; ++i) { - dest->d[i] ^= src->d[i]; - } -#endif -} - -/** - * salsa20_8(B): - * Apply the salsa20/8 core to the provided block. - */ -static void -salsa20_8(uint32_t B[16]) -{ - escrypt_block_t X; - uint32_t *x = X.w; - size_t i; - - blkcpy_64(&X, (escrypt_block_t *) B); - for (i = 0; i < 8; i += 2) { -#define R(a, b) (((a) << (b)) | ((a) >> (32 - (b)))) - /* Operate on columns. */ - x[4] ^= R(x[0] + x[12], 7); - x[8] ^= R(x[4] + x[0], 9); - x[12] ^= R(x[8] + x[4], 13); - x[0] ^= R(x[12] + x[8], 18); - - x[9] ^= R(x[5] + x[1], 7); - x[13] ^= R(x[9] + x[5], 9); - x[1] ^= R(x[13] + x[9], 13); - x[5] ^= R(x[1] + x[13], 18); - - x[14] ^= R(x[10] + x[6], 7); - x[2] ^= R(x[14] + x[10], 9); - x[6] ^= R(x[2] + x[14], 13); - x[10] ^= R(x[6] + x[2], 18); - - x[3] ^= R(x[15] + x[11], 7); - x[7] ^= R(x[3] + x[15], 9); - x[11] ^= R(x[7] + x[3], 13); - x[15] ^= R(x[11] + x[7], 18); - - /* Operate on rows. */ - x[1] ^= R(x[0] + x[3], 7); - x[2] ^= R(x[1] + x[0], 9); - x[3] ^= R(x[2] + x[1], 13); - x[0] ^= R(x[3] + x[2], 18); - - x[6] ^= R(x[5] + x[4], 7); - x[7] ^= R(x[6] + x[5], 9); - x[4] ^= R(x[7] + x[6], 13); - x[5] ^= R(x[4] + x[7], 18); - - x[11] ^= R(x[10] + x[9], 7); - x[8] ^= R(x[11] + x[10], 9); - x[9] ^= R(x[8] + x[11], 13); - x[10] ^= R(x[9] + x[8], 18); - - x[12] ^= R(x[15] + x[14], 7); - x[13] ^= R(x[12] + x[15], 9); - x[14] ^= R(x[13] + x[12], 13); - x[15] ^= R(x[14] + x[13], 18); -#undef R - } - for (i = 0; i < 16; i++) { - B[i] += x[i]; - } -} - -/** - * blockmix_salsa8(Bin, Bout, X, r): - * Compute Bout = BlockMix_{salsa20/8, r}(Bin). The input Bin must be 128r - * bytes in length; the output Bout must also be the same size. The - * temporary space X must be 64 bytes. - */ -static void -blockmix_salsa8(const uint32_t *Bin, uint32_t *Bout, uint32_t *X, size_t r) -{ - size_t i; - - /* 1: X <-- B_{2r - 1} */ - blkcpy_64((escrypt_block_t *) X, - (escrypt_block_t *) &Bin[(2 * r - 1) * 16]); - - /* 2: for i = 0 to 2r - 1 do */ - for (i = 0; i < 2 * r; i += 2) { - /* 3: X <-- H(X \xor B_i) */ - blkxor_64((escrypt_block_t *) X, (escrypt_block_t *) &Bin[i * 16]); - salsa20_8(X); - - /* 4: Y_i <-- X */ - /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ - blkcpy_64((escrypt_block_t *) &Bout[i * 8], (escrypt_block_t *) X); - - /* 3: X <-- H(X \xor B_i) */ - blkxor_64((escrypt_block_t *) X, (escrypt_block_t *) &Bin[i * 16 + 16]); - salsa20_8(X); - - /* 4: Y_i <-- X */ - /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ - blkcpy_64((escrypt_block_t *) &Bout[i * 8 + r * 16], - (escrypt_block_t *) X); - } -} - -/** - * integerify(B, r): - * Return the result of parsing B_{2r-1} as a little-endian integer. - */ -static inline uint64_t -integerify(const void *B, size_t r) -{ - const uint32_t *X = (const uint32_t *) ((uintptr_t)(B) + (2 * r - 1) * 64); - - return (((uint64_t)(X[1]) << 32) + X[0]); -} - -/** - * smix(B, r, N, V, XY): - * Compute B = SMix_r(B, N). The input B must be 128r bytes in length; - * the temporary storage V must be 128rN bytes in length; the temporary - * storage XY must be 256r + 64 bytes in length. The value N must be a - * power of 2 greater than 1. The arrays B, V, and XY must be aligned to a - * multiple of 64 bytes. - */ -static void -smix(uint8_t *B, size_t r, uint64_t N, uint32_t *V, uint32_t *XY) -{ - uint32_t *X = XY; - uint32_t *Y = &XY[32 * r]; - uint32_t *Z = &XY[64 * r]; - uint64_t i; - uint64_t j; - size_t k; - - /* 1: X <-- B */ - for (k = 0; k < 32 * r; k++) { - X[k] = LOAD32_LE(&B[4 * k]); - } - /* 2: for i = 0 to N - 1 do */ - for (i = 0; i < N; i += 2) { - /* 3: V_i <-- X */ - blkcpy((escrypt_block_t *) &V[i * (32 * r)], (escrypt_block_t *) X, - 128 * r); - - /* 4: X <-- H(X) */ - blockmix_salsa8(X, Y, Z, r); - - /* 3: V_i <-- X */ - blkcpy((escrypt_block_t *) &V[(i + 1) * (32 * r)], - (escrypt_block_t *) Y, 128 * r); - - /* 4: X <-- H(X) */ - blockmix_salsa8(Y, X, Z, r); - } - - /* 6: for i = 0 to N - 1 do */ - for (i = 0; i < N; i += 2) { - /* 7: j <-- Integerify(X) mod N */ - j = integerify(X, r) & (N - 1); - - /* 8: X <-- H(X \xor V_j) */ - blkxor((escrypt_block_t *) X, (escrypt_block_t *) &V[j * (32 * r)], - 128 * r); - blockmix_salsa8(X, Y, Z, r); - - /* 7: j <-- Integerify(X) mod N */ - j = integerify(Y, r) & (N - 1); - - /* 8: X <-- H(X \xor V_j) */ - blkxor((escrypt_block_t *) Y, (escrypt_block_t *) &V[j * (32 * r)], - 128 * r); - blockmix_salsa8(Y, X, Z, r); - } - /* 10: B' <-- X */ - for (k = 0; k < 32 * r; k++) { - STORE32_LE(&B[4 * k], X[k]); - } -} - -int -partial_Scrypt(uint64_t N, uint32_t _r, uint32_t _p, uint8_t *B, size_t B_size, - uint8_t *memory, size_t memory_size) -{ - size_t V_size, XY_size, need; - uint32_t *V, *XY; - size_t r = _r, p = _p; - uint32_t i; - - /* Allocate memory. */ - V_size = (size_t) 128 * r * (size_t) N; - need = V_size; - if (need < V_size) { - return -1; - } - XY_size = (size_t) 256 * r + 64; - need += XY_size; - if (need < XY_size) { - return -1; - } - - if (memory_size < need) { - return -1; - } - - V = (uint32_t *) ((uint8_t *) memory); - XY = (uint32_t *) ((uint8_t *) V + V_size); - - /* 2: for i = 0 to p - 1 do */ - for (i = 0; i < p; i++) { - /* 3: B_i <-- MF(B_i, N) */ - smix(&B[(size_t) 128 * i * r], r, N, V, XY); - } - - /* Success! */ - return 0; -} diff --git a/Example/web3swiftExample/Pods/scrypt/scrypt/Cimpl.h b/Example/web3swiftExample/Pods/scrypt/scrypt/Cimpl.h deleted file mode 100644 index 423fc7b4c..000000000 --- a/Example/web3swiftExample/Pods/scrypt/scrypt/Cimpl.h +++ /dev/null @@ -1,51 +0,0 @@ -// Original work recognition - -/*- - * Copyright 2009 Colin Percival - * Copyright 2013 Alexander Peslyak - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file was originally written by Colin Percival as part of the Tarsnap - * online backup system. - */ - -// Cleanup and putting it all together - -// -// Cimpl.h -// scrypt -// -// Created by Alex Vlasov on 04.09.2018. -// Copyright © 2018 Alexander Vlasov. All rights reserved. -// - -#ifndef SalsaCimpl_h -#define SalsaCimpl_h -#include - -int -partial_Scrypt(uint64_t N, uint32_t _r, uint32_t _p, uint8_t *B, size_t B_size, - uint8_t *memory, size_t memory_size); - -#endif /* SalsaCimpl_h */ diff --git a/Example/web3swiftExample/Pods/scrypt/scrypt/module.modulemap b/Example/web3swiftExample/Pods/scrypt/scrypt/module.modulemap deleted file mode 100644 index b184302fb..000000000 --- a/Example/web3swiftExample/Pods/scrypt/scrypt/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module scryptC { - header "Cimpl.h" - export * -} diff --git a/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt.h b/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt.h deleted file mode 100755 index adf224c44..000000000 --- a/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// scrypt_cryptoswift.h -// scrypt-cryptoswift -// -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Alexander Vlasov. All rights reserved. -// - -#if TARGET_OS_IPHONE -#import -#else -#import -#endif - -//! Project version number for scrypt_cryptoswift. -FOUNDATION_EXPORT double scrypt_cryptoswiftVersionNumber; - -//! Project version string for scrypt_cryptoswift. -FOUNDATION_EXPORT const unsigned char scrypt_cryptoswiftVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/BufferStorage.swift b/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/BufferStorage.swift deleted file mode 100755 index eccae9865..000000000 --- a/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/BufferStorage.swift +++ /dev/null @@ -1,158 +0,0 @@ -// -// BufferStorage.swift -// web3swift -// -// Created by Alexander Vlasov on 10.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. -// -import Foundation - -final class BufferStorage{ - - typealias Index = Int - typealias Indices = CountableRange - typealias Element = T - - struct refCountedPtr { - var ptr: UnsafeMutablePointer - var refCount: Int - } - - private var ptr: refCountedPtr - private let capacity: Int - - public var count : Int { - return self.capacity - } - - init(ptr: refCountedPtr, capacity: Int) { - self.ptr = refCountedPtr(ptr: ptr.ptr, refCount: 0) - self.capacity = capacity - } - - init(capacity: Int) { - let ptr = UnsafeMutablePointer.allocate(capacity: capacity) - self.ptr = refCountedPtr(ptr: ptr, refCount: 1) - self.capacity = capacity - } - - // copy with pointer being strong referenced - init(array: Array) { - self.capacity = array.count - let ptr = UnsafeMutablePointer.allocate(capacity: capacity) - self.ptr = refCountedPtr(ptr: ptr, refCount: 1) - for i in 0...allocate(capacity: capacity) - self.ptr = refCountedPtr(ptr: ptr, refCount: 1) - for i in 0.., count: Int) -> BufferStorage { - let storage = BufferStorage(capacity: buffer.capacity) - storage.ptr.ptr.initialize(from: buffer.ptr.ptr, count: count) - return storage - } - - func copy(to: BufferStorage, count: Int) { - precondition(to.capacity >= count) - to.ptr.ptr.initialize(from: self.ptr.ptr, count: count) - } - - // provide weak view - subscript(bounds: Range) -> BufferStorage { - precondition(bounds.lowerBound < self.capacity) - let shiftedPtr = self.ptr.ptr.advanced(by: bounds.lowerBound) - let reducedCapacity = bounds.count - return BufferStorage(ptr: refCountedPtr(ptr: shiftedPtr, refCount: 0), capacity: reducedCapacity) - } - - // provide weak view - subscript(bounds: CountablePartialRangeFrom) -> BufferStorage { - precondition(bounds.lowerBound < self.capacity) - let shiftedPtr = self.ptr.ptr.advanced(by: bounds.lowerBound) - let reducedCapacity = self.capacity - bounds.lowerBound - return BufferStorage(ptr: refCountedPtr(ptr: shiftedPtr, refCount: 0), capacity: reducedCapacity) - } - - subscript(_ at: Index) -> T { - get { - if at < self.capacity { - return self.ptr.ptr.advanced(by: at).pointee - } else { - preconditionFailure("Index beyond end of queue") - } - } - set (newValue) { - if at < self.capacity { - self.ptr.ptr.advanced(by: at).pointee = newValue - } else { - preconditionFailure("Index beyond end of queue") - } - } - } - - func replace(_ at: Index, with: T) { - if at < self.capacity { - self.ptr.ptr.advanced(by: at).pointee = with - } else { - preconditionFailure("Index beyond end of queue") - } - } - - func replaceSubrange(_ subrange: Range, with newElements: C) where C: Collection, C.Iterator.Element == T { - precondition(subrange.lowerBound >= 0, "Subrange lowerBound is negative") - precondition(subrange.upperBound < self.capacity, "Subrange upper bound is out of range") - for (offset, element) in newElements.enumerated() { - let at = subrange.lowerBound.advanced(by: offset) - self.ptr.ptr.advanced(by: at).pointee = element - } - } - - func replaceSubrange(_ subrange: Range, with newElements: BufferStorage) { - precondition(subrange.lowerBound >= 0, "Subrange lowerBound is negative") - precondition(subrange.upperBound <= self.capacity, "Subrange upper bound is out of range") - precondition(subrange.count <= newElements.capacity) - self.ptr.ptr.advanced(by: subrange.lowerBound).initialize(from: newElements.ptr.ptr, count: subrange.count) // copy assign - } - -// func replaceSubrange(_ subrange: CountableRange, with newElements: BufferStorage) { -// precondition(subrange.lowerBound >= 0, "Subrange lowerBound is negative") -// precondition(subrange.upperBound <= self.capacity, "Subrange upper bound is out of range") -// precondition(subrange.count <= newElements.capacity) -// self.ptr.ptr.advanced(by: subrange.lowerBound).initialize(from: newElements.ptr.ptr, count: subrange.count) // copy assign -// } - - func replaceSubrange(_ at: Index, with: T) { - if at < self.capacity { - self.ptr.ptr.advanced(by: at).pointee = with - } else { - preconditionFailure("Index beyond end of queue") - } - } - - func toArray() -> Array { - var result = Array() - result.reserveCapacity(self.count) - for i in 0 ..< self.count { - result.append(self.ptr.ptr.advanced(by: i).pointee) - } - return result - } - - deinit { - if self.ptr.refCount == 1 { -// print("Strong deinit") - self.ptr.ptr.deallocate() - } - } -} diff --git a/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/Salsa.swift b/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/Salsa.swift deleted file mode 100755 index fbaec0986..000000000 --- a/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/Salsa.swift +++ /dev/null @@ -1,198 +0,0 @@ -// -// Salsa.swift -// scrypt-cryptoswift -// -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Alexander Vlasov. All rights reserved. -// - -import Foundation - -extension Array where Element == UInt8 { - func cast() -> Array { - let tSize = MemoryLayout.size - let (numElements, remainder) = self.count.quotientAndRemainder(dividingBy: tSize) - precondition(remainder == 0) - var result = Array() - result.reserveCapacity(numElements) - self.withUnsafeBytes { (bytes) -> Void in - for i in 0 ..< numElements { - let t = bytes.load(fromByteOffset: i*tSize, as: T.self) - result.append(t) - } - } - return result - } -} - -extension Array where Element == UInt8 { - func castToUInt32LE() -> Array { - let tSize = 4 - let (numElements, remainder) = self.count.quotientAndRemainder(dividingBy: tSize) - precondition(remainder == 0) - var result = Array(repeating: 0, count: numElements) - self.withUnsafeBytes { (bytes) -> Void in - for i in 0 ..< numElements { - result[i] = bytes.load(fromByteOffset: i*tSize, as: UInt32.self).littleEndian - } - } - return result - } -} - -extension Array where Element == UInt32 { - func castToBytes() -> Array { - let numElements = self.count * 4 - var result = Array(repeating: 0, count: numElements) - self.withUnsafeBytes { (bytes) -> Void in - for i in 0 ..< numElements { - result[i] = bytes.load(fromByteOffset: i, as: UInt8.self) - } - } - return result - } -} - -struct Salsa { - private static func R(_ a: UInt32, _ b: UInt32) -> UInt32 { - return (a << b) | (a >> (32 - b)) - } - - static func salsa20(_ B: inout Array, rounds: Int) { - var x = B.castToUInt32LE() - salsa20(&x, rounds: rounds) - B = x.castToBytes() - } - - static func fastSalsa20(_ B: inout Array, rounds: Int) { - let x = B.castToUInt32LE() - let buffer = BufferStorage(array: x) - salsa20(buffer, rounds: rounds) - B = buffer.toArray().castToBytes() - } - - static func quarterround(_ B: inout Array) { - B[1] ^= R(B[0] &+ B[3], 7); - B[2] ^= R(B[1] &+ B[0], 9); - B[3] ^= R(B[2] &+ B[1], 13); - B[0] ^= R(B[3] &+ B[2], 18); - } - - @inline(__always) static func doubleround(_ x: inout Array) { - // column rounds - x[4] ^= R(x[0] &+ x[12], 7); - x[8] ^= R(x[4] &+ x[0], 9); - x[12] ^= R(x[8] &+ x[4], 13); - x[0] ^= R(x[12] &+ x[8], 18); - - x[9] ^= R(x[5] &+ x[1], 7); - x[13] ^= R(x[9] &+ x[5], 9); - x[1] ^= R(x[13] &+ x[9], 13); - x[5] ^= R(x[1] &+ x[13], 18); - - x[14] ^= R(x[10] &+ x[6], 7); - x[2] ^= R(x[14] &+ x[10], 9); - x[6] ^= R(x[2] &+ x[14], 13); - x[10] ^= R(x[6] &+ x[2], 18); - - x[3] ^= R(x[15] &+ x[11], 7); - x[7] ^= R(x[3] &+ x[15], 9); - x[11] ^= R(x[7] &+ x[3], 13); - x[15] ^= R(x[11] &+ x[7], 18); - - // row rounds - x[1] ^= R(x[0] &+ x[3], 7); - x[2] ^= R(x[1] &+ x[0], 9); - x[3] ^= R(x[2] &+ x[1], 13); - x[0] ^= R(x[3] &+ x[2], 18); - - x[6] ^= R(x[5] &+ x[4], 7); - x[7] ^= R(x[6] &+ x[5], 9); - x[4] ^= R(x[7] &+ x[6], 13); - x[5] ^= R(x[4] &+ x[7], 18); - - x[11] ^= R(x[10] &+ x[9], 7); - x[8] ^= R(x[11] &+ x[10], 9); - x[9] ^= R(x[8] &+ x[11], 13); - x[10] ^= R(x[9] &+ x[8], 18); - - x[12] ^= R(x[15] &+ x[14], 7); - x[13] ^= R(x[12] &+ x[15], 9); - x[14] ^= R(x[13] &+ x[12], 13); - x[15] ^= R(x[14] &+ x[13], 18); - } - - static func salsa20(_ B: inout Array, rounds: Int) { - var x = B - for _ in stride(from: 0, to: rounds, by: 2) { - doubleround(&x) - } - for i in 0 ..< 16 { - B[i] = B[i] &+ x[i] - } - } - - @inline(__always) static func doubleround(_ x: BufferStorage) { - // column rounds - x[4] ^= R(x[0] &+ x[12], 7); - x[8] ^= R(x[4] &+ x[0], 9); - x[12] ^= R(x[8] &+ x[4], 13); - x[0] ^= R(x[12] &+ x[8], 18); - - x[9] ^= R(x[5] &+ x[1], 7); - x[13] ^= R(x[9] &+ x[5], 9); - x[1] ^= R(x[13] &+ x[9], 13); - x[5] ^= R(x[1] &+ x[13], 18); - - x[14] ^= R(x[10] &+ x[6], 7); - x[2] ^= R(x[14] &+ x[10], 9); - x[6] ^= R(x[2] &+ x[14], 13); - x[10] ^= R(x[6] &+ x[2], 18); - - x[3] ^= R(x[15] &+ x[11], 7); - x[7] ^= R(x[3] &+ x[15], 9); - x[11] ^= R(x[7] &+ x[3], 13); - x[15] ^= R(x[11] &+ x[7], 18); - - // row rounds - x[1] ^= R(x[0] &+ x[3], 7); - x[2] ^= R(x[1] &+ x[0], 9); - x[3] ^= R(x[2] &+ x[1], 13); - x[0] ^= R(x[3] &+ x[2], 18); - - x[6] ^= R(x[5] &+ x[4], 7); - x[7] ^= R(x[6] &+ x[5], 9); - x[4] ^= R(x[7] &+ x[6], 13); - x[5] ^= R(x[4] &+ x[7], 18); - - x[11] ^= R(x[10] &+ x[9], 7); - x[8] ^= R(x[11] &+ x[10], 9); - x[9] ^= R(x[8] &+ x[11], 13); - x[10] ^= R(x[9] &+ x[8], 18); - - x[12] ^= R(x[15] &+ x[14], 7); - x[13] ^= R(x[12] &+ x[15], 9); - x[14] ^= R(x[13] &+ x[12], 13); - x[15] ^= R(x[14] &+ x[13], 18); - } - - static func salsa20(_ B: BufferStorage, rounds: Int) { - let x = BufferStorage.copy(buffer: B, count: B.count) - for _ in stride(from: 0, to: rounds, by: 2) { - doubleround(x) - } - for i in 0 ..< 16 { - B[i] = B[i] &+ x[i] - } - } - - static func salsa20(_ B: BufferStorage, rounds: Int, tmp: BufferStorage) { - B.copy(to: tmp, count: B.count) - for _ in stride(from: 0, to: rounds, by: 2) { - doubleround(tmp) - } - for i in 0 ..< 16 { - B[i] = B[i] &+ tmp[i] - } - } -} diff --git a/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/Scrypt.swift b/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/Scrypt.swift deleted file mode 100755 index a7d17fb0c..000000000 --- a/Example/web3swiftExample/Pods/scrypt/scrypt/scrypt/Scrypt.swift +++ /dev/null @@ -1,230 +0,0 @@ -// -// Scrypt.swift -// scrypt-cryptoswift -// -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Alexander Vlasov. All rights reserved. -// - -// https://www.ietf.org/rfc/rfc7914.txt -// -import CryptoSwift -import scryptC - -/// A key derivation function. -/// -/// Scrypt - Password-Based Key Derivation Function. Key stretching technique. -// Passphrase: Bytes string of characters to be hashed -// Salt: Bytes random salt -// CostFactor (N): Integer CPU/memory cost parameter -// BlockSizeFactor (r): Integer blocksize parameter (8 is commonly used) -// ParallelizationFactor (p): Integer Parallelization parameter. (1..232-1 * hLen/MFlen) -// DesiredKeyLen: - -public struct Scrypt { - public enum Error: Swift.Error { - case invalidInput - case derivedKeyTooLong - case pValueTooLarge - case nValueNotPowerOf2 - } - - private let salt: Array // S - private let password: Array - fileprivate let blocksize: Int // 128 * r - private let dkLen: Int - private let N: Int - private let r: Int - private let p: Int - - public init(password: Array, salt: Array, dkLen: Int, N: Int, r: Int, p: Int) throws { - precondition(dkLen > 0) - precondition(N > 0) - precondition(r > 0) - precondition(p > 0) - - let MFLen = Double(r)*128 - let hLen = Double(32) - - if N & (N-1) != 0 { - throw Error.nValueNotPowerOf2 - } - - if Double(p) > (pow(2, 32) - 1) * hLen / MFLen { - throw Error.pValueTooLarge - } - - if Double(dkLen) > (pow(2, 32) - 1) * hLen { - throw Error.derivedKeyTooLong - } - - self.blocksize = 128 * r - self.N = N - self.r = r - self.p = p - self.password = password - self.salt = salt - self.dkLen = dkLen - } - - public func calculate() throws -> Array { - return try calculateUsingC() - } - - public func calculateNatively() throws -> Array { - var kdf = try CryptoSwift.PKCS5.PBKDF2(password: password, salt: salt, iterations: 1, keyLength: blocksize*p, variant: .sha256) - var B = try kdf.calculate() - let v = BufferStorage(repeating: 0, count: 32*N*r) - let xy = BufferStorage(repeating: 0, count: 64*r) // 128*2*r bytes - // no parallelization here for now - for i in 0 ..< p { - Scrypt.smix(b: &B[(i*128*r)...], N: N, r: r, v: v, xy: xy) - } - kdf = try CryptoSwift.PKCS5.PBKDF2(password: self.password, salt: B, iterations: 1, keyLength: dkLen, variant: .sha256) - let ret = try kdf.calculate() - return Array(ret) - } - - public func calculateUsingC() throws -> Array { - var kdf = try CryptoSwift.PKCS5.PBKDF2(password: password, salt: salt, iterations: 1, keyLength: blocksize*p, variant: .sha256) - var B = try kdf.calculate() - - let extraMemoryLength = 128 * r * N + 256 * r + 64 - var extraMemory = [UInt8](repeating: 0, count: extraMemoryLength) - - let res = partial_Scrypt(UInt64(N), UInt32(r), UInt32(p), &B, B.count, &extraMemory, extraMemoryLength) - if res != 0 { - throw Error.derivedKeyTooLong - } - kdf = try CryptoSwift.PKCS5.PBKDF2(password: self.password, salt: B, iterations: 1, keyLength: dkLen, variant: .sha256) - let ret = try kdf.calculate() - return Array(ret) - } - -} - -extension Scrypt { - static func blockCopy(destination: BufferStorage, source: BufferStorage, n: Int) { - destination.replaceSubrange(0 ..< n, with: source) - } - - static func blockXOR(destination: BufferStorage, source: BufferStorage, n: Int) { - for i in 0 ..< n { - destination[i] ^= source[i] - } - } - - static func blockMix(tmp: BufferStorage, source: BufferStorage, destination: BufferStorage, r: Int) { - blockCopy(destination: tmp, source: source[((2*r-1)*16)...], n: 16) - for i in stride(from: 0, to: 2*r, by: 2) { - salsaXOR(tmp: tmp, source: source[(i*16)...], destination: destination[(i*8)...]) - salsaXOR(tmp: tmp, source: source[(i*16 + 16)...], destination: destination[(i*8 + r*16)...]) - } - } - - static func salsaXOR(tmp: BufferStorage, source: BufferStorage, destination: BufferStorage) { - blockXOR(destination: tmp, source: source, n: 16) - // reuse destination as a temporary memory - Salsa.salsa20(tmp, rounds: 8, tmp: destination) - blockCopy(destination: destination, source: tmp, n: 16) - } - - static func integerify(b : BufferStorage, r: Int) -> UInt64 { - let j = (2*r - 1) * 16 - return UInt64(b[j]) | (UInt64(b[j+1]) << 32) // LE - } - - @inline(__always) static func smix(b: inout ArraySlice, N: Int, r: Int, v: BufferStorage, xy: BufferStorage) { - let tmp = BufferStorage(repeating: 0, count: 16) - let x = xy - let y = xy[(32*r)...] - - var j = b.startIndex - for i in 0 ..< 32*r { - x[i] = UInt32(b[j]) | UInt32(b[j+1])<<8 | UInt32(b[j+2])<<16 | UInt32(b[j+3])<<24 // decode as LE Uint32 - j += 4 - } - for i in stride(from: 0, to: N, by: 2) { - Scrypt.blockCopy(destination: v[(i*(32*r))...], source: x, n: 32*r) - // blockMix starts with copy, so tmp can be garbage - Scrypt.blockMix(tmp: tmp, source: x, destination: y, r: r) - - Scrypt.blockCopy(destination: v[((i+1)*(32*r))...], source: y, n: 32*r) - // blockMix starts with copy, so tmp can be garbage - Scrypt.blockMix(tmp: tmp, source: y, destination: x, r: r) - } - - for _ in stride(from: 0, to: N, by: 2) { - var j = Int(Scrypt.integerify(b: x, r: r) & UInt64(N-1) ) - Scrypt.blockXOR(destination: x, source: v[(j*(32*r))...], n: 32*r) - // blockMix starts with copy, so tmp can be garbage - Scrypt.blockMix(tmp: tmp, source: x, destination: y, r: r) - - j = Int(Scrypt.integerify(b: y, r: r) & UInt64(N-1) ) - Scrypt.blockXOR(destination: y, source: v[(j*(32*r))...], n: 32*r) - // blockMix starts with copy, so tmp can be garbage - Scrypt.blockMix(tmp: tmp, source: y, destination: x, r: r) - } - j = b.startIndex - for i in 0 ..< 32*r { - let v = x[i] - b[j+0] = UInt8(v >> 0 & 0xff) - b[j+1] = UInt8(v >> 8 & 0xff) - b[j+2] = UInt8(v >> 16 & 0xff) - b[j+3] = UInt8(v >> 24 & 0xff) - j += 4 - } - } - - static func smix(b: inout ArraySlice, N: Int, r: Int, v: BufferStorage, x: BufferStorage, y: BufferStorage) { - let tmp = BufferStorage(repeating: 0, count: 16) - - var j = b.startIndex - for i in 0 ..< 32*r { - x[i] = UInt32(b[j]) | UInt32(b[j+1])<<8 | UInt32(b[j+2])<<16 | UInt32(b[j+3])<<24 // decode as LE Uint32 - j += 4 - } - for i in stride(from: 0, to: N, by: 2) { - Scrypt.blockCopy(destination: v[(i*(32*r))...], source: x, n: 32*r) - // blockMix starts with copy, so tmp can be garbage - Scrypt.blockMix(tmp: tmp, source: x, destination: y, r: r) - - Scrypt.blockCopy(destination: v[((i+1)*(32*r))...], source: y, n: 32*r) - // blockMix starts with copy, so tmp can be garbage - Scrypt.blockMix(tmp: tmp, source: y, destination: x, r: r) - } - - for _ in stride(from: 0, to: N, by: 2) { - var j = Int(Scrypt.integerify(b: x, r: r) & UInt64(N-1) ) - Scrypt.blockXOR(destination: x, source: v[(j*(32*r))...], n: 32*r) - // blockMix starts with copy, so tmp can be garbage - Scrypt.blockMix(tmp: tmp, source: x, destination: y, r: r) - - j = Int(Scrypt.integerify(b: y, r: r) & UInt64(N-1) ) - Scrypt.blockXOR(destination: y, source: v[(j*(32*r))...], n: 32*r) - // blockMix starts with copy, so tmp can be garbage - Scrypt.blockMix(tmp: tmp, source: y, destination: x, r: r) - } - j = b.startIndex - for i in 0 ..< 32*r { - let v = x[i] - b[j+0] = UInt8(v >> 0 & 0xff) - b[j+1] = UInt8(v >> 8 & 0xff) - b[j+2] = UInt8(v >> 16 & 0xff) - b[j+3] = UInt8(v >> 24 & 0xff) - j += 4 - } - } - - static func integerify(_ X: Array) -> UInt64 { - precondition(X.count >= 8) - let count = X.count - var result = UInt64(0) - var shift = 56 - for i in (count-8 ..< count).reversed() { - result |= UInt64(X[i]) << shift - shift -= 8 - } - return result - } -} diff --git a/Example/web3swiftExample/Pods/web3swift/README.md b/Example/web3swiftExample/Pods/web3swift/README.md index 6c24de4d2..b2e359e53 100755 --- a/Example/web3swiftExample/Pods/web3swift/README.md +++ b/Example/web3swiftExample/Pods/web3swift/README.md @@ -1,19 +1,20 @@ -![matter-github-swift](https://github.com/matterinc/web3swift/blob/develop/web3swift-logo.png) +![matter-github-swift](https://github.com/matter-labs/web3swift/blob/develop/web3swift-logo.png) # web3swift -[![Version](https://img.shields.io/cocoapods/v/web3swift.svg?style=flat)](http://cocoapods.org/pods/web3swift) -[![License](https://img.shields.io/cocoapods/l/web3swift.svg?style=flat)](http://cocoapods.org/pods/web3swift) +[![Build Status](https://travis-ci.com/matter-labs/web3swift.svg?branch=develop)](https://travis-ci.com/matter-labs/web3swift) +[![Swift](https://img.shields.io/badge/Swift-5.0-orange.svg?style=flat)](https://developer.apple.com/swift/) [![Platform](https://img.shields.io/cocoapods/p/web3swift.svg?style=flat)](http://cocoapods.org/pods/web3swift) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/web3swift.svg?style=flat)](http://cocoapods.org/pods/web3swift) +[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![License](https://img.shields.io/cocoapods/l/web3swift.svg?style=flat)](http://cocoapods.org/pods/web3swift) [![support](https://brianmacdonald.github.io/Ethonate/svg/eth-support-blue.svg)](https://brianmacdonald.github.io/Ethonate/address#0xe22b8979739d724343bd002f9f432f5990879901) -[![Build Status](https://travis-ci.com/matterinc/web3swift.svg?branch=develop)](https://travis-ci.com/matterinc/web3swift) - -[Ask questions](https://stackoverflow.com/questions/tagged/web3swift) +[![Stackoverflow](https://img.shields.io/badge/stackoverflow-ask-blue.svg)](https://stackoverflow.com/questions/tagged/web3swift) **web3swift** is your toolbelt for any kind interactions with Ethereum network. - * [Features](#features) + * [Ready Features](#features) * [Design Decisions](#design-decisions) * [Requirements](#requirements) * [Migration Guides](#migration-guides) @@ -22,43 +23,98 @@ + [CocoaPods](#cocoapods) + [Carthage](#carthage) * [Example Project](#example-project) + * [Popular questions](#popular-questions) + * [What's next](#whats-next) * [Credits](#credits) + [Security Disclosure](#security-disclosure) * [Donations](#donations) * [License](#license) --- - - [Usage Doc](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md) - - **Account Management** - - [Create Account](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md#create-account) - - [Import Account](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md#import-account) - - [Manage Keystore](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md#manage-keystore) - - [Ethereum Address](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md#ethereum-address) - - [Get Balance](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md#get-balance) - - **Transactions Operations** - - [Prepare Transaction](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md#prepare-transaction) - - [Send Transaction](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md#send-transaction) - - **Chain State** - - [Get Block Number](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/Usage.md#get-block-number) - - -## Features + - [Usage Doc](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md) + - **[Introduction](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#introduction)** + - *[Preffered models](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#preffered-models)* + - [Preffered keys Wallet Model](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#preffered-keys-wallet-model-account) + - [Preffered ERC-20 Model](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#preffered-erc-20-model) +- **[Account Management](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#account-management)** + - *[Create Account](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#create-account)* + - [Create Account With Private Key](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#create-account-with-private-key) + - [Create Account With Mnemonics Phrase](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#create-account-with-mnemonics-phrase) + - *[Import Account](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#create-account)* + - [Import Account With Private Key](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#import-account-with-private-key) + - [Import Account With Mnemonics Phrase](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#import-account-with-mnemonics-phrase) + - [Get Keystore Manager from wallet data](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#get-keystore-manager-from-wallet-data) + - [Get wallet Private key](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#get-wallet-private-key) +- **[Ethereum Endpoints interaction](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#ethereum-endpoints-interaction)** + - [web3 instance](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#web3-instance) + - [Ethereum Address](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#ethereum-address) + - *[Get Balance](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#get-balance)* + - [Getting ETH balance](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#getting-eth-balance) + - [Getting ERC20 token balance](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#getting-erc20-token-balance) + - *[Transactions Operations](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#transactions-operations)* + - [Preparing Transaction For Sending Ether](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#preparing-transaction-for-sending-ether) + - [Preparing Transaction For Sending ERC-20 Tokens](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#preparing-transaction-for-sending-erc-20-tokens) + - [Preparing Write Transaction for sending to some Contract and use its method](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#preparing-write-transaction-for-sending-to-some-contract-and-use-its-method) + - [Preparing Read Transaction to call some Contract method](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#preparing-read-transaction-to-call-some-contract-method) + - [Send write transaction](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#writing) + - [Send read transaction](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#reading) + - [Get Block number](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#get-block-number) +- **[Websockets](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#websockets)** + - [Web3socketDelegate](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#web3socketdelegate) + - [Get latest new pending transactions](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#get-latest-new-pending-transactions) + - *[Custom Websocket Provider](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#custom-websocket-provider)* + - [Connect to custom endpoint](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#connect-to-custom-endpoint) + - [Send message](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#send-message) + - *[Infura Websocket Provider](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#infura-websocket-provider)* + - [Connect to Infura endpoint](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#connect-to-infura-endpoint) + - [Connect to custom endpoint with API similar to Infura WSS endpoint](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#connect-to-custom-endpoint-with-api-similar-to-infura-wss-endpoint) + - [Create a filter in the node to notify when something happened](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#create-a-filter-in-the-node-to-notify-when-something-happened) + - [Get new pending transactions](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#get-new-pending-transactions) + - [Create a new subscription over particular events](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#create-a-new-subscription-over-particular-events) + - [Subscribe on new pending transactions](https://github.com/matter-labs/web3swift/blob/documentation/Documentation/Usage.md#subscribe-on-new-pending-transactions) +## Ready Features - [x] Swift implementation of [web3.js](https://github.com/ethereum/web3.js/) functionality :zap: - [x] Interaction with remote node via JSON RPC :thought_balloon: +- [x] Local keystore management (`geth` compatible) - [x] Smart-contract ABI parsing :book: - [x] ABI deconding (V2 is supported with return of structures from public functions. Part of 0.4.22 Solidity compiler) -- [x] RLP encoding +- [x] Ethereum Name Service (ENS) support - a secure & decentralised way to address resources both on and off the blockchain using simple, human-readable names - [x] Interactions (read/write to Smart contracts) :arrows_counterclockwise: -- [x] Local keystore management (`geth` compatible) -- [x] Batched requests in concurrent mode +- [x] Complete Infura Ethereum API support, patial Websockets API support +- [x] Parsing TxPool content into native values (ethereum addresses and transactions) - easy to get pending transactions +- [x] Event loops functionality +- [x] Supports Web3View functionality - WKWebView with injected "web3" provider +- [x] Possibility to add or remove "middleware" that intercepts, modifies and even cancel transaction workflow on stages "before assembly", "after assembly"and "before submission" - [x] Literally following the standards: - - [x] [BIP32](https://github.com/bitcoin/bips/blob/feature/readmeImprovement/bip-0032.mediawiki) HD Wallets: Deterministic Wallet - - [x] [BIP39](https://github.com/bitcoin/bips/blob/feature/readmeImprovement/bip-0039.mediawiki) (Seed phrases) - - [x] [BIP44](https://github.com/bitcoin/bips/blob/feature/readmeImprovement/bip-0044.mediawiki) (Key generation prefixes) - - [x] [EIP-155](https://github.com/ethereum/EIPs/blob/feature/readmeImprovement/EIPS/eip-155.md) (Replay attacks protection) *enforced!* + - [x] [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) HD Wallets: Deterministic Wallet + - [x] [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) (Seed phrases) + - [x] [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) (Key generation prefixes) + - [x] [EIP-20](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md) (A standard interface for tokens - ERC-20) + - [x] [EIP-67](https://github.com/ethereum/EIPs/issues/67) (Standard URI scheme with metadata, value and byte code) + - [x] [EIP-155](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md) (Replay attacks protection) *enforced!* + - [x] [EIP-681](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-681.md) (A standard way of representing various transactions, especially payment requests in Ethers and ERC-20 tokens as URLs) + - [x] [EIP-721](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md) (A standard interface for non-fungible tokens, also known as deeds - ERC-721) + - [x] [EIP-165](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md) (Standard Interface Detection, also known as ERC-165) + - [x] [EIP-777](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-777.md) (New Advanced Token Standard, also known as ERC-777) + - [x] [EIP-820](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-820.md) (Pseudo-introspection Registry Contract, also known as ERC-820) + - [x] [EIP-888](https://github.com/ethereum/EIPs/issues/888) (MultiDimensional Token Standard, also known as ERC-888) + - [x] [EIP-1400](https://github.com/ethereum/EIPs/issues/1411) (Security Token Standard, also known as ERC-1400) + - [x] [EIP-1410](https://github.com/ethereum/EIPs/issues/1410) (Partially Fungible Token Standard, also known as ERC-1410) + - [x] [EIP-1594](https://github.com/ethereum/EIPs/issues/1594) (Core Security Token Standard, also known as ERC-1594) + - [x] [EIP-1643](https://github.com/ethereum/EIPs/issues/1643) (Document Management Standard, also known as ERC-1643) + - [x] [EIP-1644](https://github.com/ethereum/EIPs/issues/1644) (Controller Token Operation Standard, also known as ERC-1644) + - [x] [EIP-1633](https://github.com/ethereum/EIPs/issues/1634) (Re-Fungible Token, also known as ERC-1633) + - [x] [EIP-721x](https://github.com/loomnetwork/erc721x) (An extension of ERC721 that adds support for multi-fungible tokens and batch transfers, while being fully backward-compatible, also known as ERC-721x) + - [x] [EIP-1155](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md) (Multi Token Standard, also known as ERC-1155) + - [x] [EIP-1376](https://github.com/ethereum/EIPs/issues/1376) (Service-Friendly Token, also known as ERC-1376) + - [x] [ST-20](https://github.com/PolymathNetwork/polymath-core) - ST-20 token is an Ethereum-based token implemented on top of the ERC-20 protocol that adds the ability for tokens to control transfers based on specific rules + +- [x] RLP encoding +- [x] Batched requests in concurrent mode +- [x] Base58 encoding scheme +- [x] Formatting to and from Ethereum Units - [x] Comprehensive Unit and Integration Test Coverage -- [x] [Complete Documentation](https://web3swift.github.io/web3swift) ## Design Decisions @@ -70,26 +126,26 @@ ## Requirements - iOS 9.0+ / macOS 10.11+ -- Xcode 9.0+ -- Swift 4.1+ +- Xcode 10.2+ +- Swift 5.0+ ## Migration Guides -- [web3swift 2.0 Migration Guide](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/Documentation/web3swift%202.0%20Migration%20Guide.md) +- [web3swift 2.0 Migration Guide](https://github.com/matterinc/web3swift/blob/documentation/Documentation/web3swift%202.0%20Migration%20Guide.md) ## Communication When using this lib, please make references to this repo and give your start! :) *Nothing makes developers happier than seeing someone else use our work and go wild with it.* -If you are using web3swift in your app or know of an app that uses it, please add it to [this list](https://github.com/matterinc/web3swift/wiki/Apps-using-web3swift). +If you are using web3swift in your app or know of an app that uses it, please add it to [this list](https://github.com/matter-labs/web3swift/wiki/Apps-using-web3swift). - If you **need help**, use [Stack Overflow](https://stackoverflow.com/questions/tagged/web3swift) and tag `web3swift`. - If you need to **find or understand an API**, check [our documentation](http://web3swift.github.io/web3swift/). -- If you'd like to **see web3swift best practices**, check [Apps using this library](https://github.com/matterinc/web3swift/wiki/Apps-using-web3swift). -- If you **found a bug**, [open an issue](https://github.com/matterinc/web3swift/issues). -- If you **have a feature request**, [open an issue](https://github.com/matterinc/web3swift/issues). -- If you **want to contribute**, [submit a pull request](https://github.com/matterinc/web3swift/pulls). +- If you'd like to **see web3swift best practices**, check [Apps using this library](https://github.com/matter-labs/web3swift/wiki/Apps-using-web3swift). +- If you **found a bug**, [open an issue](https://github.com/matter-labs/web3swift/issues). +- If you **have a feature request**, [open an issue](https://github.com/matter-labs/web3swift/issues). +- If you **want to contribute**, [submit a pull request](https://github.com/matter-labs/web3swift/pulls). ## Installation @@ -109,7 +165,7 @@ platform :ios, '9.0' target '' do use_frameworks! - pod 'web3swift' + pod 'web3swift', '~> 2.1.3' end ``` @@ -130,36 +186,111 @@ $ brew update $ brew install carthage ``` -To integrate web3swift into your Xcode project using Carthage, specify it in your `Cartfile`: +To integrate web3swift into your Xcode project using Carthage, specify it in your `Cartfile`. +Create an empty Cartfile with the touch command and open it: + +```bash +$ touch Cartfile +$ open -a Xcode Cartfile +``` + +Add the following line to the Cartfile and save it: ```ogdl -github "matterinc/web3swift" "carthage" +github "matter-labs/web3swift" "carthage" ``` -Run `carthage update` to build the framework and drag the built `web3swift.framework` into your Xcode project. +Run `carthage update` to build the framework. By default, Carthage performs checkouts and builds in a new directory 'Carthage' in the same location as your Cartfile. Open this directory, go to 'Build' directory, choose iOS or macOS directory and use framework from chosen directory in your Xcode project. ## Example Project You can try lib by running the example project: -- Clone the repo: `git clone https://github.com/matterinc/web3swift.git` +- Clone the repo: `git clone https://github.com/matter-labs/web3swift.git` - Move to the repo: `cd web3swift/Example/web3swiftExample` - Install Dependencies: `pod install` - Open: `open ./web3swiftExample.xcworkspace` +## Popular questions + +#### Is it possible to get Mnemonic Phrase (Seed Phrase) from Private key using web3swift? + +In web3swift there is no backward conversion from Private key to Mnemonic Phrase. Also it is theoretically impossible to recover a phrase from a Private key. After Seed Phrase is converted to some initial entropy the “master key is derived” and the initial entropy is discarded. + +The simplest solution is to encrypt the phrase using users pincode and save it in some other secure keystore. +Mnemonic Phrase is very sensitive data and you must be very careful to let the user get it. +Our advise if you want to show it to user - ask to save a Passphrase when creating BIP32Keystore. + +#### How to interact with custom smart-contract with web3swift? + +For example: you want to interact with smart-contract and all you know is - its address (address example: 0xfa28eC7198028438514b49a3CF353BcA5541ce1d). + +You can get the ABI of your contract directly from [Remix IDE](https://remix.ethereum.org/) ([Solution](https://ethereum.stackexchange.com/questions/27536/where-to-find-contract-abi-in-new-version-of-online-remix-solidity-compiler?rq=1)) + +Then you should use contract address and ABI in creating contract object. In example we use Infura Mainnet: +```swift +let yourContractABI: String = +let toEthereumAddress: EthereumAddress = +let abiVersion: Int = + +let contract = Web3.InfuraMainnetWeb3().contract(yourContractABI, at: toEthereumAddress, abiVersion: abiVersion) +``` +Here is the example how you should call some contract method: +```swift +let method: String = +let parameters: [AnyObject] = +let extraData: Data = +let transactionOptions: TransactionOptions = + +let transaction = contract.read(method, parameters: parameters, extraData: extraData, transactionOptions: transactionOptions) +``` + +Here is the example how you should send transaction to some contract method: +```swift +let method: String = +let parameters: [AnyObject] = +let extraData: Data = +let transactionOptions: TransactionOptions = + +let transaction = contract.write(method, parameters: parameters, extraData: extraData, transactionOptions: transactionOptions) +``` + +#### How to set test local node? +You can write something like that: +```swift +func setLocalNode(port: Int = 8545) -> Web3? { + guard let web3 = Web3(url: URL(string: "http://127.0.0.1:\(port)")!) else { return nil } + return web3 +} +``` + +## What's next + +- [x] Objective-C - a proxy bridge to build your DApp on Objective-C using web3swift +- [x] Complete Documentation (https://web3swift.github.io/web3swift) +- [x] Modularity with the basic Web3 subspec/SPM (the most basic functions like transaction signing and interacting with an http rpc server) and other modules with additional functionality +- [x] [R-Token](https://github.com/harborhq/r-token) - Smart Contracts for applying regulatory compliance to tokenized securities issuance and trading +- [x] Complete support Infura Websockets API +- [x] Support IPFS via Infura public IPFS gateway +- [x] Support more blockchains - Ripple, Bitcoin, EOS, etc. +- [x] Performance Improvements +- [x] More convenient methods for basic namespaces + ## Credits Alex Vlasov, [@shamatar](https://github.com/shamatar), alex.m.vlasov@gmail.com Petr Korolev, [@skywinder](https://github.com/skywinder) +Anton Grigorev [@baldyash](https://github.com/BaldyAsh), antongrigorjev2010@gmail.com + ### Security Disclosure If you believe you have identified a security vulnerability with web3swift, you should report it as soon as possible via email to [Alex Vlasov](https://github.com/shamatar) alex.m.vlasov@gmail.com. Please do not post it to a public issue tracker. ## Donations -[The Matters](https://github.com/orgs/matterinc/people) are charged with open-sorсe and do not require money for using their web3swift lib. +[The Matters](https://github.com/orgs/matterinc/people) are charged with open-sourсe and do not require money for using their web3swift lib. We want to continue to do everything we can to move the needle forward. If you use any of our libraries for work, see if your employers would be interested in donating. Any amount you can donate today to help us reach our goal would be greatly appreciated. @@ -169,4 +300,4 @@ Our Ether wallet address: 0xe22b8979739d724343bd002f9f432f5990879901 ## License -web3swift is available under the Apache License 2.0 license. See the [LICENSE](https://github.com/matterinc/web3swift/blob/feature/readmeImprovement/LICENSE) for details. +web3swift is available under the Apache License 2.0 license. See the [LICENSE](https://github.com/matter-labs/web3swift/blob/documentation/LICENSE) for details. diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ContractProtocol.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ContractProtocol.swift index 61d776ce2..bff1d131c 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ContractProtocol.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ContractProtocol.swift @@ -2,8 +2,8 @@ // ContractProtocol.swift // web3swift // -// Created by Alexander Vlasov on 04.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -12,14 +12,11 @@ import EthereumAddress public protocol ContractProtocol { var address: EthereumAddress? {get set} - var options: Web3Options? {get set} var transactionOptions: TransactionOptions? {get set} var allMethods: [String] {get} var allEvents: [String] {get} func deploy(bytecode:Data, parameters: [AnyObject], extraData: Data) -> EthereumTransaction? func method(_ method:String, parameters: [AnyObject], extraData: Data) -> EthereumTransaction? -// func deploy(bytecode:Data, parameters: [AnyObject], extraData: Data, options: Web3Options?) -> EthereumTransaction? -// func method(_ method:String, parameters: [AnyObject], extraData: Data, options: Web3Options?) -> EthereumTransaction? init?(_ abiString: String, at: EthereumAddress?) func decodeReturnData(_ method:String, data: Data) -> [String:Any]? func decodeInputData(_ method:String, data: Data) -> [String:Any]? diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumContract.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumContract.swift index 516c01ad7..5d5fd944c 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumContract.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumContract.swift @@ -9,7 +9,6 @@ import EthereumAddress import EthereumABI public struct EthereumContract:ContractProtocol { - public var options: Web3Options? = Web3Options.defaultOptions() public var transactionOptions: TransactionOptions? = TransactionOptions.defaultOptions public var address: EthereumAddress? = nil diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/Base58.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/Base58.swift index 6e0accdc3..397b389cd 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/Base58.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/Base58.swift @@ -56,7 +56,8 @@ struct Base58 { } for b in base58 { - str = "\(str)\(base58Alphabet[String.Index(encodedOffset: Int(b))])" + //str = "\(str)\(base58Alphabet[String.Index(encodedOffset: Int(b))])" + str = "\(str)\(base58Alphabet[String.Index(utf16Offset: Int(b), in: base58Alphabet)])" } return str @@ -82,7 +83,8 @@ struct Base58 { // search for base58 character guard let base58Index = base58Alphabet.index(of: c) else { return [] } - var carry = base58Index.encodedOffset +// var carry = base58Index.encodedOffset + var carry = base58Index.utf16Offset(in: base58Alphabet) var i = 0 for j in 0...base58.count where carry != 0 || i < length { carry += 58 * Int(base58[base58.count - j - 1]) diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/BigUInt+Extensions.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/BigUInt+Extensions.swift old mode 100644 new mode 100755 diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/CryptoExtensions.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/CryptoExtensions.swift index ae389d0df..737da519b 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/CryptoExtensions.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/CryptoExtensions.swift @@ -5,7 +5,7 @@ // import Foundation -import scrypt +import CryptoSwift func toByteArray(_ value: T) -> [UInt8] { var value = value diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/Data+Extension.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/Data+Extension.swift index d02fcac37..a91338c33 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/Data+Extension.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/Data+Extension.swift @@ -19,6 +19,17 @@ public extension Data { } } +// func toArray(type: T.Type) throws -> [T] { +// return try self.withUnsafeBytes { (body: UnsafeRawBufferPointer) in +// if let bodyAddress = body.baseAddress, body.count > 0 { +// let pointer = bodyAddress.assumingMemoryBound(to: T.self) +// return [T](UnsafeBufferPointer(start: pointer, count: self.count/MemoryLayout.stride)) +// } else { +// throw Web3Error.dataError +// } +// } +// } + public func constantTimeComparisonTo(_ other:Data?) -> Bool { guard let rhs = other else {return false} guard self.count == rhs.count else {return false} @@ -38,6 +49,13 @@ public extension Data { } } +// static func zero(_ data: inout Data) { +// let count = data.count +// data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) in +// body.baseAddress?.assumingMemoryBound(to: UInt8.self).initialize(repeating: 0, count: count) +// } +// } + static func randomBytes(length: Int) -> Data? { for _ in 0...1024 { var data = Data(repeating: 0, count: length) @@ -52,6 +70,24 @@ public extension Data { return nil } +// static func randomBytes(length: Int) -> Data? { +// for _ in 0...1024 { +// var data = Data(repeating: 0, count: length) +// let result = data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) -> Int32? in +// if let bodyAddress = body.baseAddress, body.count > 0 { +// let pointer = bodyAddress.assumingMemoryBound(to: UInt8.self) +// return SecRandomCopyBytes(kSecRandomDefault, 32, pointer) +// } else { +// return nil +// } +// } +// if let notNilResult = result, notNilResult == errSecSuccess { +// return data +// } +// } +// return nil +// } + static func fromHex(_ hex: String) -> Data? { let string = hex.lowercased().stripHexPrefix() let array = Array(hex: string) @@ -77,4 +113,20 @@ public extension Data { uintRepresentation = uintRepresentation >> UInt64(64 - length) return uintRepresentation } + +// func bitsInRange(_ startingBit:Int, _ length:Int) -> UInt64? { //return max of 8 bytes for simplicity, non-public +// if startingBit + length / 8 > self.count, length > 64, startingBit > 0, length >= 1 {return nil} +// let bytes = self[(startingBit/8) ..< (startingBit+length+7)/8] +// let padding = Data(repeating: 0, count: 8 - bytes.count) +// let padded = bytes + padding +// guard padded.count == 8 else {return nil} +// let pointee = padded.withUnsafeBytes { (body: UnsafeRawBufferPointer) in +// body.baseAddress?.assumingMemoryBound(to: UInt64.self).pointee +// } +// guard let ptee = pointee else {return nil} +// var uintRepresentation = UInt64(bigEndian: ptee) +// uintRepresentation = uintRepresentation << (startingBit % 8) +// uintRepresentation = uintRepresentation >> UInt64(64 - length) +// return uintRepresentation +// } } diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/RIPEMD160+StackOveflow.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/RIPEMD160+StackOveflow.swift index 9a6735580..7bc71036e 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/RIPEMD160+StackOveflow.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Convenience/Classes/RIPEMD160+StackOveflow.swift @@ -368,6 +368,92 @@ public struct RIPEMD160 { return data } + +// public mutating func update(data: Data) throws { +// try data.withUnsafeBytes { (body: UnsafeRawBufferPointer) in +// +// if let bodyAddress = body.baseAddress, body.count > 0 { +// var ptr = bodyAddress.assumingMemoryBound(to: UInt8.self) +// var length = data.count +// var X = [UInt32](repeating: 0, count: 16) +// +// // Process remaining bytes from last call: +// if buffer.count > 0 && buffer.count + length >= 64 { +// let amount = 64 - buffer.count +// buffer.append(ptr, count: amount) +// try buffer.withUnsafeBytes { (body: UnsafeRawBufferPointer) in +// if let bodyAddress = body.baseAddress, body.count > 0 { +// let pointer = bodyAddress.assumingMemoryBound(to: Void.self) +// _ = memcpy(&X, pointer, 64) +// } else { +// throw Web3Error.dataError +// } +// } +// compress(X) +// ptr += amount +// length -= amount +// } +// // Process 64 byte chunks: +// while length >= 64 { +// memcpy(&X, ptr, 64) +// compress(X) +// ptr += 64 +// length -= 64 +// } +// // Save remaining unprocessed bytes: +// buffer = Data(bytes: ptr, count: length) +// } else { +// throw Web3Error.dataError +// } +// +// } +// count += Int64(data.count) +// } +// +// public mutating func finalize() throws -> Data { +// var X = [UInt32](repeating: 0, count: 16) +// /* append the bit m_n == 1 */ +// buffer.append(0x80) +// try buffer.withUnsafeBytes { (body: UnsafeRawBufferPointer) in +// if let bodyAddress = body.baseAddress, body.count > 0 { +// let pointer = bodyAddress.assumingMemoryBound(to: Void.self) +// _ = memcpy(&X, pointer, buffer.count) +// } else { +// throw Web3Error.dataError +// } +// } +// +// if (count & 63) > 55 { +// /* length goes to next block */ +// compress(X) +// X = [UInt32](repeating: 0, count: 16) +// } +// +// /* append length in bits */ +// let lswlen = UInt32(truncatingIfNeeded: count) +// let mswlen = UInt32(UInt64(count) >> 32) +// X[14] = lswlen << 3 +// X[15] = (lswlen >> 29) | (mswlen << 3) +// compress(X) +// +// var data = Data(count: 20) +// try data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) in +// if let bodyAddress = body.baseAddress, body.count > 0 { +// let pointer = bodyAddress.assumingMemoryBound(to: UInt32.self) +// pointer[0] = MDbuf.0 +// pointer[1] = MDbuf.1 +// pointer[2] = MDbuf.2 +// pointer[3] = MDbuf.3 +// pointer[4] = MDbuf.4 +// } else { +// throw Web3Error.dataError +// } +// } +// +// buffer = Data() +// +// return data +// } } public extension RIPEMD160 { @@ -376,10 +462,12 @@ public extension RIPEMD160 { var md = RIPEMD160() md.update(data: message) return md.finalize() +// return try md.finalize() } public static func hash(message: String) -> Data { return RIPEMD160.hash(message: message.data(using: .utf8)!) +// return try RIPEMD160.hash(message: message.data(using: .utf8)!) } } @@ -390,25 +478,34 @@ public extension RIPEMD160 { var key = key key.count = 64 // Truncate to 64 bytes or fill-up with zeros. - let outerKeyPad = Data(bytes: key.map { $0 ^ 0x5c }) - let innerKeyPad = Data(bytes: key.map { $0 ^ 0x36 }) +// let outerKeyPad = Data(bytes: key.map { $0 ^ 0x5c }) +// let innerKeyPad = Data(bytes: key.map { $0 ^ 0x36 }) + let outerKeyPad = Data(key.map { $0 ^ 0x5c }) + let innerKeyPad = Data(key.map { $0 ^ 0x36 }) var innerMd = RIPEMD160() innerMd.update(data: innerKeyPad) innerMd.update(data: message) +// try innerMd.update(data: innerKeyPad) +// try innerMd.update(data: message) var outerMd = RIPEMD160() outerMd.update(data: outerKeyPad) outerMd.update(data: innerMd.finalize()) +// try outerMd.update(data: outerKeyPad) +// try outerMd.update(data: innerMd.finalize()) return outerMd.finalize() +// return try outerMd.finalize() } public static func hmac(key: Data, message: String) -> Data { return RIPEMD160.hmac(key: key, message: message.data(using: .utf8)!) +// return try RIPEMD160.hmac(key: key, message: message.data(using: .utf8)!) } public static func hmac(key: String, message: String) -> Data { return RIPEMD160.hmac(key: key.data(using: .utf8)!, message: message) +// return try RIPEMD160.hmac(key: key.data(using: .utf8)!, message: message) } } diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift new file mode 100755 index 000000000..5f31ebecc --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift @@ -0,0 +1,202 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation +import BigInt +import secp256k1_swift +import EthereumAddress + +extension web3.BrowserFunctions { + + public func getAccounts() -> [String]? { + do { + let accounts = try self.web3.eth.getAccounts() + return accounts.compactMap({$0.address}) + } catch { + return [String]() + } + } + + public func getCoinbase() -> String? { + guard let addresses = self.getAccounts() else {return nil} + guard addresses.count > 0 else {return nil} + return addresses[0] + } + + public func personalSign(_ personalMessage: String, account: String, password: String = "web3swift") -> String? { + return self.sign(personalMessage, account: account, password: password) + } + + public func sign(_ personalMessage: String, account: String, password: String = "web3swift") -> String? { + guard let data = Data.fromHex(personalMessage) else {return nil} + return self.sign(data, account: account, password: password) + } + + public func sign(_ personalMessage: Data, account: String, password: String = "web3swift") -> String? { + do { + guard let keystoreManager = self.web3.provider.attachedKeystoreManager else {return nil} + guard let from = EthereumAddress(account, ignoreChecksum: true) else {return nil} + guard let signature = try Web3Signer.signPersonalMessage(personalMessage, keystore: keystoreManager, account: from, password: password) else {return nil} + return signature.toHexString().addHexPrefix() + } + catch{ + print(error) + return nil + } + } + + public func personalECRecover(_ personalMessage: String, signature: String) -> String? { + guard let data = Data.fromHex(personalMessage) else {return nil} + guard let sig = Data.fromHex(signature) else {return nil} + return self.personalECRecover(data, signature:sig) + } + + public func personalECRecover(_ personalMessage: Data, signature: Data) -> String? { + if signature.count != 65 { return nil} + let rData = signature[0..<32].bytes + let sData = signature[32..<64].bytes + let vData = signature[64] + guard let signatureData = SECP256K1.marshalSignature(v: vData, r: rData, s: sData) else {return nil} + guard let hash = Web3.Utils.hashPersonalMessage(personalMessage) else {return nil} + guard let publicKey = SECP256K1.recoverPublicKey(hash: hash, signature: signatureData) else {return nil} + return Web3.Utils.publicToAddressString(publicKey) + } + + + public func sendTransaction(_ transactionJSON: [String: Any], password: String = "web3swift") -> [String:Any]? { + guard let transaction = EthereumTransaction.fromJSON(transactionJSON) else {return nil} + guard let options = TransactionOptions.fromJSON(transactionJSON) else {return nil} + var transactionOptions = TransactionOptions() + transactionOptions.from = options.from + transactionOptions.to = options.to + transactionOptions.value = options.value != nil ? options.value! : BigUInt(0) + transactionOptions.gasLimit = options.gasLimit != nil ? options.gasLimit! : .automatic + transactionOptions.gasPrice = options.gasPrice != nil ? options.gasPrice! : .automatic + return self.sendTransaction(transaction, transactionOptions: transactionOptions, password: password) + } + + public func sendTransaction(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions, password: String = "web3swift") -> [String:Any]? { + do { + let result = try self.web3.eth.sendTransaction(transaction, transactionOptions: transactionOptions, password: password) + return ["txhash": result.hash] + } catch { + return nil + } + } + + public func estimateGas(_ transactionJSON: [String: Any]) -> BigUInt? { + guard let transaction = EthereumTransaction.fromJSON(transactionJSON) else {return nil} + guard let options = TransactionOptions.fromJSON(transactionJSON) else {return nil} + var transactionOptions = TransactionOptions() + transactionOptions.from = options.from + transactionOptions.to = options.to + transactionOptions.value = options.value != nil ? options.value! : BigUInt(0) + transactionOptions.gasLimit = .automatic + transactionOptions.gasPrice = options.gasPrice != nil ? options.gasPrice! : .automatic + return self.estimateGas(transaction, transactionOptions: transactionOptions) + } + + public func estimateGas(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions) -> BigUInt? { + do { + let result = try self.web3.eth.estimateGas(transaction, transactionOptions: transactionOptions) + return result + } catch { + return nil + } + } + + public func prepareTxForApproval(_ transactionJSON: [String: Any]) -> (transaction: EthereumTransaction?, options: TransactionOptions?) { + guard let transaction = EthereumTransaction.fromJSON(transactionJSON) else {return (nil, nil)} + guard let options = TransactionOptions.fromJSON(transactionJSON) else {return (nil, nil)} + do { + return try self.prepareTxForApproval(transaction, options: options) + } catch { + return (nil, nil) + } + } + + public func prepareTxForApproval(_ trans: EthereumTransaction, options opts: TransactionOptions) throws -> (transaction: EthereumTransaction?, options: TransactionOptions?) { + do { + var transaction = trans + var options = opts + guard let _ = options.from else {return (nil, nil)} + let gasPrice = try self.web3.eth.getGasPrice() + transaction.gasPrice = gasPrice + options.gasPrice = .manual(gasPrice) + guard let gasEstimate = self.estimateGas(transaction, transactionOptions: options) else {return (nil, nil)} + transaction.gasLimit = gasEstimate + options.gasLimit = .limited(gasEstimate) + print(transaction) + return (transaction, options) + } catch { + return (nil, nil) + } + } + + public func signTransaction(_ transactionJSON: [String: Any], password: String = "web3swift") -> String? { + guard let transaction = EthereumTransaction.fromJSON(transactionJSON) else {return nil} + guard let options = TransactionOptions.fromJSON(transactionJSON) else {return nil} + var transactionOptions = TransactionOptions() + transactionOptions.from = options.from + transactionOptions.to = options.to + transactionOptions.value = options.value != nil ? options.value! : BigUInt(0) + transactionOptions.gasLimit = options.gasLimit != nil ? options.gasLimit! : .automatic + transactionOptions.gasPrice = options.gasPrice != nil ? options.gasPrice! : .automatic + if let nonceString = transactionJSON["nonce"] as? String, let nonce = BigUInt(nonceString.stripHexPrefix(), radix: 16) { + transactionOptions.nonce = .manual(nonce) + } else { + transactionOptions.nonce = .pending + } + return self.signTransaction(transaction, transactionOptions: transactionOptions, password: password) + } + + public func signTransaction(_ trans: EthereumTransaction, transactionOptions: TransactionOptions, password: String = "web3swift") -> String? { + do { + var transaction = trans + guard let from = transactionOptions.from else {return nil} + guard let keystoreManager = self.web3.provider.attachedKeystoreManager else {return nil} + guard let gasPricePolicy = transactionOptions.gasPrice else {return nil} + guard let gasLimitPolicy = transactionOptions.gasLimit else {return nil} + guard let noncePolicy = transactionOptions.nonce else {return nil} + switch gasPricePolicy { + case .manual(let gasPrice): + transaction.gasPrice = gasPrice + default: + let gasPrice = try self.web3.eth.getGasPrice() + transaction.gasPrice = gasPrice + } + + switch gasLimitPolicy { + case .manual(let gasLimit): + transaction.gasLimit = gasLimit + default: + let gasLimit = try self.web3.eth.estimateGas(transaction, transactionOptions: transactionOptions) + transaction.gasLimit = gasLimit + } + + switch noncePolicy { + case .manual(let nonce): + transaction.nonce = nonce + default: + let nonce = try self.web3.eth.getTransactionCount(address: from, onBlock: "pending") + transaction.nonce = nonce + } + + if (self.web3.provider.network != nil) { + transaction.chainID = self.web3.provider.network?.chainID + } + + guard let keystore = keystoreManager.walletForAddress(from) else {return nil} + try Web3Signer.signTX(transaction: &transaction, keystore: keystore, account: from, password: password) + print(transaction) + let signedData = transaction.encode(forSignature: false, chainID: nil)?.toHexString().addHexPrefix() + return signedData + } + catch { + return nil + } + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP32Keystore.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP32Keystore.swift index a2ca855e1..4f08e24ca 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP32Keystore.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP32Keystore.swift @@ -29,8 +29,8 @@ public class BIP32Keystore: AbstractKeystore { public func UNSAFE_getPrivateKeyData(password: String, account: EthereumAddress) throws -> Data { if let key = self.paths.keyForValue(value: account) { - guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to decrypt a keystore")} - guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} + guard let decryptedRootNode = try? self.getPrefixNodeData(password) else {throw AbstractKeystoreError.encryptionError("Failed to decrypt a keystore")} + guard let rootNode = HDNode(decryptedRootNode) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} guard rootNode.depth == (self.rootPrefix.components(separatedBy: "/").count - 1) else {throw AbstractKeystoreError.encryptionError("Derivation depth mismatch")} // guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count - 1 else {throw AbstractKeystoreError.encryptionError("Derivation depth mismatch")} guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Derivation depth mismatch")} @@ -82,8 +82,8 @@ public class BIP32Keystore: AbstractKeystore { } public func createNewChildAccount(password: String = "web3swift") throws { - guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to decrypt a keystore")} - guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} + guard let decryptedRootNode = try? self.getPrefixNodeData(password) else {throw AbstractKeystoreError.encryptionError("Failed to decrypt a keystore")} + guard let rootNode = HDNode(decryptedRootNode) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} let prefixPath = self.rootPrefix guard rootNode.depth == prefixPath.components(separatedBy: "/").count - 1 else {throw AbstractKeystoreError.encryptionError("Derivation depth mismatch")} try createNewAccount(parentNode: rootNode, password: password) @@ -112,8 +112,8 @@ public class BIP32Keystore: AbstractKeystore { } public func createNewCustomChildAccount(password: String = "web3swift", path: String) throws { - guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to decrypt a keystore")} - guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} + guard let decryptedRootNode = try? self.getPrefixNodeData(password) else {throw AbstractKeystoreError.encryptionError("Failed to decrypt a keystore")} + guard let rootNode = HDNode(decryptedRootNode) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} let prefixPath = self.rootPrefix var pathAppendix: String? = nil if path.hasPrefix(prefixPath) { @@ -174,7 +174,8 @@ public class BIP32Keystore: AbstractKeystore { throw AbstractKeystoreError.aesError } guard let encryptedKey = try aesCipher?.encrypt(data!.bytes) else {throw AbstractKeystoreError.aesError} - let encryptedKeyData = Data(bytes:encryptedKey) +// let encryptedKeyData = Data(bytes:encryptedKey) Data(encryptedKey) + let encryptedKeyData = Data(encryptedKey) var dataForMAC = Data() dataForMAC.append(last16bytes) dataForMAC.append(encryptedKeyData) @@ -229,7 +230,8 @@ public class BIP32Keystore: AbstractKeystore { guard let c = keystorePars.crypto.kdfparams.c else {return nil} guard let passData = password.data(using: .utf8) else {return nil} guard let derivedArray = try? PKCS5.PBKDF2(password: passData.bytes, salt: saltData.bytes, iterations: c, keyLength: derivedLen, variant: hashVariant!).calculate() else {return nil} - passwordDerivedKey = Data(bytes:derivedArray) +// passwordDerivedKey = Data(bytes:derivedArray) + passwordDerivedKey = Data(derivedArray) default: return nil } @@ -238,7 +240,7 @@ public class BIP32Keystore: AbstractKeystore { let derivedKeyLast16bytes = derivedKey[(derivedKey.count - 16)...(derivedKey.count - 1)] dataForMAC.append(derivedKeyLast16bytes) guard let cipherText = Data.fromHex(keystorePars.crypto.ciphertext) else {return nil} - guard (cipherText.count % 32 == 0) else {return nil} + guard (cipherText.count.isMultiple(of: 32)) else {return nil} dataForMAC.append(cipherText) let mac = dataForMAC.sha3(.keccak256) guard let calculatedMac = Data.fromHex(keystorePars.crypto.mac), mac.constantTimeComparisonTo(calculatedMac) else {return nil} @@ -258,7 +260,8 @@ public class BIP32Keystore: AbstractKeystore { } guard decryptedPK != nil else {return nil} guard decryptedPK?.count == 82 else {return nil} - return Data(bytes:decryptedPK!) +// return Data(bytes:decryptedPK!) + return Data(decryptedPK!) } public func serialize() throws -> Data? { @@ -268,8 +271,8 @@ public class BIP32Keystore: AbstractKeystore { } public func serializeRootNodeToString(password: String = "web3swift") throws -> String { - guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to decrypt a keystore")} - guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} + guard let decryptedRootNode = try? self.getPrefixNodeData(password) else {throw AbstractKeystoreError.encryptionError("Failed to decrypt a keystore")} + guard let rootNode = HDNode(decryptedRootNode) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} guard let string = rootNode.serializeToString(serializePublic: false) else {throw AbstractKeystoreError.encryptionError("Failed to deserialize a root node")} return string } diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP39.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP39.swift index 58067ca81..3baa25227 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP39.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP39.swift @@ -91,7 +91,7 @@ public class BIP39 { } static public func generateMnemonics(bitsOfEntropy: Int, language: BIP39Language = BIP39Language.english) throws -> String? { - guard bitsOfEntropy >= 128 && bitsOfEntropy <= 256 && bitsOfEntropy % 32 == 0 else {return nil} + guard bitsOfEntropy >= 128 && bitsOfEntropy <= 256 && bitsOfEntropy.isMultiple(of: 32) else {return nil} guard let entropy = Data.randomBytes(length: bitsOfEntropy/8) else {throw AbstractKeystoreError.noEntropyError} return BIP39.generateMnemonicsFromEntropy(entropy: entropy, language: language) @@ -99,10 +99,11 @@ public class BIP39 { static public func mnemonicsToEntropy(_ mnemonics: String, language: BIP39Language = BIP39Language.english) -> Data? { let wordList = mnemonics.components(separatedBy: " ") - guard wordList.count >= 12 && wordList.count % 4 == 0 else {return nil} + guard wordList.count >= 12 && wordList.count.isMultiple(of: 4) else {return nil} var bitString = "" for word in wordList { - let idx = language.words.index(of: word) +// let idx = language.words.index(of: word) + let idx = language.words.firstIndex(of: word) if (idx == nil) { return nil } @@ -111,7 +112,7 @@ public class BIP39 { bitString.append(stringForm) } let stringCount = bitString.count - if stringCount % 33 != 0 { + if !stringCount.isMultiple(of: 33) { return nil } let entropyBits = bitString[0 ..< (bitString.count - bitString.count/33)] @@ -135,7 +136,8 @@ public class BIP39 { let salt = "mnemonic" + password guard let saltData = salt.decomposedStringWithCompatibilityMapping.data(using: .utf8) else {return nil} guard let seedArray = try? PKCS5.PBKDF2(password: mnemData.bytes, salt: saltData.bytes, iterations: 2048, keyLength: 64, variant: HMAC.Variant.sha512).calculate() else {return nil} - let seed = Data(bytes:seedArray) +// let seed = Data(bytes:seedArray) + let seed = Data(seedArray) return seed } diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift index 569420224..55918fa78 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift @@ -31,8 +31,7 @@ public class EthereumKeystoreV3: AbstractKeystore { public func UNSAFE_getPrivateKeyData(password: String, account: EthereumAddress) throws -> Data { if self.addresses?.count == 1 && account == self.addresses?.last { - guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.invalidPasswordError} - guard let privateKey = pk else {throw AbstractKeystoreError.invalidAccountError} + guard let privateKey = try? self.getKeyData(password) else {throw AbstractKeystoreError.invalidPasswordError} return privateKey } throw AbstractKeystoreError.invalidAccountError @@ -100,7 +99,8 @@ public class EthereumKeystoreV3: AbstractKeystore { throw AbstractKeystoreError.aesError } guard let encryptedKey = try aesCipher?.encrypt(keyData!.bytes) else {throw AbstractKeystoreError.aesError} - let encryptedKeyData = Data(bytes:encryptedKey) +// let encryptedKeyData = Data(bytes:encryptedKey) + let encryptedKeyData = Data(encryptedKey) var dataForMAC = Data() dataForMAC.append(last16bytes) dataForMAC.append(encryptedKeyData) @@ -152,7 +152,8 @@ public class EthereumKeystoreV3: AbstractKeystore { guard let c = keystoreParams.crypto.kdfparams.c else {return nil} guard let passData = password.data(using: .utf8) else {return nil} guard let derivedArray = try? PKCS5.PBKDF2(password: passData.bytes, salt: saltData.bytes, iterations: c, keyLength: derivedLen, variant: hashVariant!).calculate() else {return nil} - passwordDerivedKey = Data(bytes:derivedArray) +// passwordDerivedKey = Data(bytes:derivedArray) + passwordDerivedKey = Data(derivedArray) default: return nil } @@ -180,7 +181,8 @@ public class EthereumKeystoreV3: AbstractKeystore { return nil } guard decryptedPK != nil else {return nil} - return Data(bytes:decryptedPK!) +// return Data(bytes:decryptedPK!) + return Data(decryptedPK!) } public func serialize() throws -> Data? { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/KeystoreManager.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/KeystoreManager.swift index e9a6193c8..5e9d6873e 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/KeystoreManager.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/KeystoreManager.swift @@ -51,7 +51,7 @@ public class KeystoreManager: AbstractKeystore { } public static func managerForPath(_ path: String, scanForHDwallets: Bool = false, suffix: String? = nil) -> KeystoreManager? { - guard let newManager = try? KeystoreManager(path, scanForHDwallets: scanForHDwallets, suffix: suffix), let manager = newManager else {return nil} + guard let manager = try? KeystoreManager(path, scanForHDwallets: scanForHDwallets, suffix: suffix) else {return nil} return manager } diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift new file mode 100644 index 000000000..7d129d82e --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift @@ -0,0 +1,147 @@ +// +// Web3+ERC1155.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 20/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import PromiseKit +import EthereumAddress + +//Multi Token Standard +protocol IERC1155: IERC165 { + + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, id: BigUInt, value: BigUInt, data: [UInt8]) throws -> WriteTransaction + + func safeBatchTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, ids: [BigUInt], values: [BigUInt], data: [UInt8]) throws -> WriteTransaction + + func balanceOf(account: EthereumAddress, id: BigUInt) throws -> BigUInt + + func setApprovalForAll(from: EthereumAddress, operator user: EthereumAddress, approved: Bool, scope: Data) throws -> WriteTransaction + + func isApprovedForAll(owner: EthereumAddress, operator user: EthereumAddress, scope: Data) throws -> Bool +} + +protocol IERC1155Metadata { + func uri(id: BigUInt) throws -> String + func name(id: BigUInt) throws -> String +} + +public class ERC1155: IERC1155 { + + private var _tokenId: BigUInt? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc1155ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var tokenId: BigUInt { + self.readProperties() + if self._tokenId != nil { + return self._tokenId! + } + return 0 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + + guard let tokenIdPromise = contract.read("id", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [tokenIdPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let tokenIdResult) = resolvedPromises[0] else {return} + guard let tokenId = tokenIdResult["0"] as? BigUInt else {return} + self._tokenId = tokenId + + self._hasReadProperties = true + }.wait() + } + + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, id: BigUInt, value: BigUInt, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeTransferFrom", parameters: [originalOwner, to, id, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func safeBatchTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, ids: [BigUInt], values: [BigUInt], data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeBatchTransferFrom", parameters: [originalOwner, to, ids, values, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func balanceOf(account: EthereumAddress, id: BigUInt) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account, id] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func setApprovalForAll(from: EthereumAddress, operator user: EthereumAddress, approved: Bool, scope: Data) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setApprovalForAll", parameters: [user, approved, scope] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func isApprovedForAll(owner: EthereumAddress, operator user: EthereumAddress, scope: Data) throws -> Bool { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.callOnBlock = .latest + let result = try contract.read("isApprovedForAll", parameters: [owner, user, scope] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + transactionOptions.gasLimit = .manual(30000) + let result = try contract.read("supportsInterface", parameters: [interfaceID] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift new file mode 100644 index 000000000..868dbb7c3 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift @@ -0,0 +1,502 @@ +// +// Web3+ERC1376.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 20/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +public enum IERC1376DelegateMode: UInt { + case PublicMsgSender = 0 + case PublicTxOrigin = 1 + case PrivateMsgSender = 2 + case PrivateTxOrigin = 3 +} + +public struct DirectDebitInfo { + let amount: BigUInt + let startTime: BigUInt + let interval: BigUInt +} + +public struct DirectDebit { + let info: DirectDebitInfo + let epoch: BigUInt +} + +extension DirectDebit: Hashable { +} + +extension DirectDebitInfo: Hashable { +} + +//Service-Friendly Token Standard +protocol IERC1376: IERC20 { + func approve(from: EthereumAddress, spender: EthereumAddress, expectedValue: String, newValue: String) throws -> WriteTransaction + func increaseAllowance(from: EthereumAddress, spender: EthereumAddress, value: String) throws -> WriteTransaction + func decreaseAllowance(from: EthereumAddress, spender: EthereumAddress, value: String, strict: Bool) throws -> WriteTransaction + func setERC20ApproveChecking(from: EthereumAddress, approveChecking: Bool) throws -> WriteTransaction + + func spendableAllowance(owner: EthereumAddress, spender: EthereumAddress) throws -> BigUInt + func transfer(from: EthereumAddress, data: String) throws -> WriteTransaction + func transferAndCall(from: EthereumAddress, to: EthereumAddress, value: String, data: [UInt8]) throws -> WriteTransaction + + func nonceOf(owner: EthereumAddress) throws -> BigUInt + func increaseNonce(from: EthereumAddress) throws -> WriteTransaction + func delegateTransferAndCall(from: EthereumAddress, + nonce: BigUInt, + fee: BigUInt, + gasAmount: BigUInt, + to: EthereumAddress, + value: String, + data: [UInt8], + mode: IERC1376DelegateMode, + v: UInt8, + r: Data, + s: Data) throws -> WriteTransaction + + func directDebit(debtor: EthereumAddress, receiver: EthereumAddress) throws -> DirectDebit + func setupDirectDebit(from: EthereumAddress, receiver: EthereumAddress, info: DirectDebitInfo) throws -> WriteTransaction + func terminateDirectDebit(from: EthereumAddress, receiver: EthereumAddress) throws -> WriteTransaction + func withdrawDirectDebit(from: EthereumAddress, debtor: EthereumAddress) throws -> WriteTransaction + func withdrawDirectDebit(from: EthereumAddress, debtors: [EthereumAddress], strict: Bool) throws -> WriteTransaction +} + +public class ERC1376: IERC1376 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc1376ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func approve(from: EthereumAddress, spender: EthereumAddress, expectedValue: String, newValue: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let eValue = Web3.Utils.parseToBigUInt(expectedValue, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + guard let nValue = Web3.Utils.parseToBigUInt(newValue, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, eValue, nValue] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func increaseAllowance(from: EthereumAddress, spender: EthereumAddress, value: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let amount = Web3.Utils.parseToBigUInt(value, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("increaseAllowance", parameters: [spender, amount] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func decreaseAllowance(from: EthereumAddress, spender: EthereumAddress, value: String, strict: Bool) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let amount = Web3.Utils.parseToBigUInt(value, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("decreaseAllowance", parameters: [spender, amount, strict] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func setERC20ApproveChecking(from: EthereumAddress, approveChecking: Bool) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setERC20ApproveChecking", parameters: [approveChecking] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func spendableAllowance(owner: EthereumAddress, spender: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("spendableAllowance", parameters: [owner, spender] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func transfer(from: EthereumAddress, data: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(data, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func transferAndCall(from: EthereumAddress, to: EthereumAddress, value: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let amount = Web3.Utils.parseToBigUInt(value, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transferAndCall", parameters: [to, amount, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func nonceOf(owner: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("nonceOf", parameters: [owner] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func increaseNonce(from: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + let tx = contract.write("increaseNonce", parameters: [] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func delegateTransferAndCall(from: EthereumAddress, nonce: BigUInt, fee: BigUInt, gasAmount: BigUInt, to: EthereumAddress, value: String, data: [UInt8], mode: IERC1376DelegateMode, v: UInt8, r: Data, s: Data) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let amount = Web3.Utils.parseToBigUInt(value, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let modeValue = mode.rawValue + + let tx = contract.write("delegateTransferAndCall", parameters: [nonce, fee, gasAmount, to, amount, data, modeValue, v, r, s] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func directDebit(debtor: EthereumAddress, receiver: EthereumAddress) throws -> DirectDebit { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("directDebit", parameters: [debtor, receiver] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? DirectDebit else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func setupDirectDebit(from: EthereumAddress, receiver: EthereumAddress, info: DirectDebitInfo) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setupDirectDebit", parameters: [receiver, info] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func terminateDirectDebit(from: EthereumAddress, receiver: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("terminateDirectDebit", parameters: [receiver] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func withdrawDirectDebit(from: EthereumAddress, debtor: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("withdrawDirectDebit", parameters: [debtor] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func withdrawDirectDebit(from: EthereumAddress, debtors: [EthereumAddress], strict: Bool) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("withdrawDirectDebit", parameters: [debtors, strict] as [AnyObject], transactionOptions: basicOptions)! + return tx + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift new file mode 100644 index 000000000..ae51bf0ad --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift @@ -0,0 +1,931 @@ +// +// Web3+ERC1400.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 14/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +//Security Token Standard +protocol IERC1400: IERC20 { + + // Document Management + func getDocument(name: Data) throws -> (String, Data) + func setDocument(from: EthereumAddress, name: Data, uri: String, documentHash: Data) throws -> WriteTransaction + + // Token Information + func balanceOfByPartition(partition: Data, tokenHolder: EthereumAddress) throws -> BigUInt + func partitionsOf(tokenHolder: EthereumAddress) throws -> [Data] + + // Transfers + func transferWithData(from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func transferFromWithData(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + + // Partition Token Transfers + func transferByPartition(partition: Data, from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func operatorTransferByPartition(partition: Data, from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction + + // Controller Operation + func isControllable() throws -> Bool + func controllerTransfer(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction + func controllerRedeem(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction + + // Operator Management + func authorizeOperator(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction + func revokeOperator(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction + func authorizeOperatorByPartition(from: EthereumAddress, partition: Data, operator user: EthereumAddress) throws -> WriteTransaction + func revokeOperatorByPartition(from: EthereumAddress, partition: Data, operator user: EthereumAddress) throws -> WriteTransaction + + // Operator Information + func isOperator(operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool + func isOperatorForPartition(partition: Data, operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool + + // Token Issuance + func isIssuable() throws -> Bool + func issue(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func issueByPartition(from: EthereumAddress, partition: Data, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + + // Token Redemption + func redeem(from: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func redeemFrom(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func redeemByPartition(from: EthereumAddress, partition: Data, amount: String, data: [UInt8]) throws -> WriteTransaction + func operatorRedeemByPartition(from: EthereumAddress, partition: Data, tokenHolder: EthereumAddress, amount: String, operatorData: [UInt8]) throws -> WriteTransaction + + // Transfer Validity + func canTransfer(to: EthereumAddress, amount: String, data: [UInt8]) throws -> ([UInt8], Data) + func canTransferFrom(originalOwner: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> ([UInt8], Data) + func canTransferByPartition(originalOwner: EthereumAddress, to: EthereumAddress, partition: Data, amount: String, data: [UInt8]) throws -> ([UInt8], Data, Data) +} + +// This namespace contains functions to work with ERC1400 tokens. +// variables are lazyly evaluated or global token information (name, ticker, total supply) +// can be imperatively read and saved +public class ERC1400: IERC1400 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc1400ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + //ERC1400 methods + public func getDocument(name: Data) throws -> (String, Data) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getDocument", parameters: [name] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? (String, Data) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func setDocument(from: EthereumAddress, name: Data, uri: String, documentHash: Data) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setDocument", parameters: [name, uri, documentHash] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func balanceOfByPartition(partition: Data, tokenHolder: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOfByPartition", parameters: [partition, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func partitionsOf(tokenHolder: EthereumAddress) throws -> [Data] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("partitionsOf", parameters: [tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [Data] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transferWithData(from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferWithData", parameters: [to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFromWithData(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFromWithData", parameters: [originalOwner, to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferByPartition(partition: Data, from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferByPartition", parameters: [partition, to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorTransferByPartition(partition: Data, from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("operatorTransferByPartition", parameters: [partition, originalOwner, to, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func isControllable() throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isControllable", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func controllerTransfer(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("controllerTransfer", parameters: [originalOwner, to, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func controllerRedeem(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("controllerRedeem", parameters: [tokenHolder, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func authorizeOperator(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("authorizeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func revokeOperator(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("revokeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func authorizeOperatorByPartition(from: EthereumAddress, partition: Data, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("authorizeOperatorByPartition", parameters: [partition, user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func revokeOperatorByPartition(from: EthereumAddress, partition: Data, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("revokeOperatorByPartition", parameters: [partition, user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func isOperator(operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isOperator", parameters: [user, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func isOperatorForPartition(partition: Data, operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isOperatorForPartition", parameters: [partition, user, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func isIssuable() throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isIssuable", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func issue(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("issue", parameters: [tokenHolder, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func issueByPartition(from: EthereumAddress, partition: Data, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("issueByPartition", parameters: [partition, tokenHolder, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func redeem(from: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("redeem", parameters: [value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func redeemFrom(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("redeemFrom", parameters: [tokenHolder, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func redeemByPartition(from: EthereumAddress, partition: Data, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("redeemByPartition", parameters: [partition, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorRedeemByPartition(from: EthereumAddress, partition: Data, tokenHolder: EthereumAddress, amount: String, operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("operatorRedeemByPartition", parameters: [partition, tokenHolder, value, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func canTransfer(to: EthereumAddress, amount: String, data: [UInt8]) throws -> ([UInt8], Data) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: transactionOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let result = try contract.read("canTransfer", parameters: [to, value, data] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? ([UInt8], Data) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func canTransferFrom(originalOwner: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> ([UInt8], Data) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: transactionOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let result = try contract.read("canTransfer", parameters: [originalOwner, to, value, data] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? ([UInt8], Data) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func canTransferByPartition(originalOwner: EthereumAddress, to: EthereumAddress, partition: Data, amount: String, data: [UInt8]) throws -> ([UInt8], Data, Data) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: transactionOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let result = try contract.read("canTransfer", parameters: [originalOwner, to, partition, value, data] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? ([UInt8], Data, Data) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } +} + +extension ERC1400: IERC777 { + public func canImplementInterfaceForAddress(interfaceHash: Data, addr: EthereumAddress) throws -> Data { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("canImplementInterfaceForAddress", parameters: [interfaceHash, addr] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Data else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getInterfaceImplementer(addr: EthereumAddress, interfaceHash: Data) throws -> EthereumAddress { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getInterfaceImplementer", parameters: [addr, interfaceHash] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func setInterfaceImplementer(from: EthereumAddress, addr: EthereumAddress, interfaceHash: Data, implementer: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setInterfaceImplementer", parameters: [addr, interfaceHash, implementer] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setManager(from: EthereumAddress, addr: EthereumAddress, newManager: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setManager", parameters: [addr, newManager] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func interfaceHash(interfaceName: String) throws -> Data { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("interfaceHash", parameters: [interfaceName] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Data else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func updateERC165Cache(from: EthereumAddress, contract: EthereumAddress, interfaceId: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("updateERC165Cache", parameters: [contract, interfaceId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + transactionOptions.gasLimit = .manual(30000) + let result = try contract.read("supportsInterface", parameters: [interfaceID] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getGranularity() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("granularity", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getDefaultOperators() throws -> [EthereumAddress] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("defaultOperators", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [EthereumAddress] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func authorize(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + let tx = contract.write("authorizeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func revoke(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + let tx = contract.write("revokeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func isOperatorFor(operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isOperatorFor", parameters: [user, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func send(from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("send", parameters: [to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorSend(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("operatorSend", parameters: [originalOwner, to, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func burn(from: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("burn", parameters: [value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorBurn(from: EthereumAddress, amount: String, originalOwner: EthereumAddress, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("burn", parameters: [originalOwner, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift new file mode 100644 index 000000000..8bdec4635 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift @@ -0,0 +1,664 @@ +// +// Web3+ERC1410.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 19/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +//Partially Fungible Token Standard +protocol IERC1410: IERC20 { + + // Token Information + func getBalance(account: EthereumAddress) throws -> BigUInt + func balanceOfByPartition(partition: Data, tokenHolder: EthereumAddress) throws -> BigUInt + func partitionsOf(tokenHolder: EthereumAddress) throws -> [Data] + func totalSupply() throws -> BigUInt + + // Token Transfers + func transferByPartition(partition: Data, from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func operatorTransferByPartition(partition: Data, from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction + func canTransferByPartition(originalOwner: EthereumAddress, to: EthereumAddress, partition: Data, amount: String, data: [UInt8]) throws -> ([UInt8], Data, Data) + + // Operator Information + func isOperator(operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool + func isOperatorForPartition(partition: Data, operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool + + // Operator Management + func authorizeOperator(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction + func revokeOperator(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction + func authorizeOperatorByPartition(from: EthereumAddress, partition: Data, operator user: EthereumAddress) throws -> WriteTransaction + func revokeOperatorByPartition(from: EthereumAddress, partition: Data, operator user: EthereumAddress) throws -> WriteTransaction + + // Issuance / Redemption + func issueByPartition(from: EthereumAddress, partition: Data, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func redeemByPartition(from: EthereumAddress, partition: Data, amount: String, data: [UInt8]) throws -> WriteTransaction + func operatorRedeemByPartition(from: EthereumAddress, partition: Data, tokenHolder: EthereumAddress, amount: String, operatorData: [UInt8]) throws -> WriteTransaction + +} + +public class ERC1410: IERC1410 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _totalSupply: BigUInt? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc1410ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + //ERC1410 methods + public func balanceOfByPartition(partition: Data, tokenHolder: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOfByPartition", parameters: [partition, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func partitionsOf(tokenHolder: EthereumAddress) throws -> [Data] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("partitionsOf", parameters: [tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [Data] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transferByPartition(partition: Data, from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferByPartition", parameters: [partition, to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorTransferByPartition(partition: Data, from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("operatorTransferByPartition", parameters: [partition, originalOwner, to, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func canTransferByPartition(originalOwner: EthereumAddress, to: EthereumAddress, partition: Data, amount: String, data: [UInt8]) throws -> ([UInt8], Data, Data) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: transactionOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let result = try contract.read("canTransfer", parameters: [originalOwner, to, partition, value, data] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? ([UInt8], Data, Data) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func isOperator(operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isOperator", parameters: [user, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func isOperatorForPartition(partition: Data, operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isOperatorForPartition", parameters: [partition, user, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func authorizeOperator(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("authorizeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func revokeOperator(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("revokeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func authorizeOperatorByPartition(from: EthereumAddress, partition: Data, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("authorizeOperatorByPartition", parameters: [partition, user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func revokeOperatorByPartition(from: EthereumAddress, partition: Data, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("revokeOperatorByPartition", parameters: [partition, user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func issueByPartition(from: EthereumAddress, partition: Data, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("issueByPartition", parameters: [partition, tokenHolder, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func redeemByPartition(from: EthereumAddress, partition: Data, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("redeemByPartition", parameters: [partition, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorRedeemByPartition(from: EthereumAddress, partition: Data, tokenHolder: EthereumAddress, amount: String, operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("operatorRedeemByPartition", parameters: [partition, tokenHolder, value, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } +} + +extension ERC1410: IERC777 { + public func canImplementInterfaceForAddress(interfaceHash: Data, addr: EthereumAddress) throws -> Data { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("canImplementInterfaceForAddress", parameters: [interfaceHash, addr] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Data else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getInterfaceImplementer(addr: EthereumAddress, interfaceHash: Data) throws -> EthereumAddress { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getInterfaceImplementer", parameters: [addr, interfaceHash] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func setInterfaceImplementer(from: EthereumAddress, addr: EthereumAddress, interfaceHash: Data, implementer: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + + let tx = contract.write("setInterfaceImplementer", parameters: [addr, interfaceHash, implementer] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setManager(from: EthereumAddress, addr: EthereumAddress, newManager: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + + let tx = contract.write("setManager", parameters: [addr, newManager] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func interfaceHash(interfaceName: String) throws -> Data { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("interfaceHash", parameters: [interfaceName] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Data else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func updateERC165Cache(from: EthereumAddress, contract: EthereumAddress, interfaceId: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + + let tx = contract.write("updateERC165Cache", parameters: [contract, interfaceId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + transactionOptions.gasLimit = .manual(30000) + let result = try contract.read("supportsInterface", parameters: [interfaceID] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func authorize(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.callOnBlock = .latest + + let tx = contract.write("authorizeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func revoke(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.callOnBlock = .latest + + let tx = contract.write("revokeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func isOperatorFor(operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isOperatorFor", parameters: [user, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func send(from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("send", parameters: [to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorSend(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("operatorSend", parameters: [originalOwner, to, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func burn(from: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("burn", parameters: [value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorBurn(from: EthereumAddress, amount: String, originalOwner: EthereumAddress, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("burn", parameters: [originalOwner, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func getGranularity() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("granularity", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getDefaultOperators() throws -> [EthereumAddress] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("defaultOperators", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [EthereumAddress] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift new file mode 100644 index 000000000..3590a2de3 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift @@ -0,0 +1,409 @@ +// +// Web3+ERC1594.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 19/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +//Core Security Token Standard +protocol IERC1594: IERC20 { + + // Transfers + func transferWithData(from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func transferFromWithData(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + + // Token Issuance + func isIssuable() throws -> Bool + func issue(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + + // Token Redemption + func redeem(from: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func redeemFrom(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + + // Transfer Validity + func canTransfer(to: EthereumAddress, amount: String, data: [UInt8]) throws -> ([UInt8], Data) + func canTransferFrom(originalOwner: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> ([UInt8], Data) + +} + +public class ERC1594: IERC1594 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc1594ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + //ERC1594 + public func transferWithData(from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferWithData", parameters: [to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFromWithData(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFromWithData", parameters: [originalOwner, to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func isIssuable() throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isIssuable", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func issue(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("issue", parameters: [tokenHolder, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func redeem(from: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("redeem", parameters: [value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func redeemFrom(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("redeemFrom", parameters: [tokenHolder, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func canTransfer(to: EthereumAddress, amount: String, data: [UInt8]) throws -> ([UInt8], Data) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: transactionOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let result = try contract.read("canTransfer", parameters: [to, value, data] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? ([UInt8], Data) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func canTransferFrom(originalOwner: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> ([UInt8], Data) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: transactionOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let result = try contract.read("canTransfer", parameters: [originalOwner, to, value, data] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? ([UInt8], Data) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } +} + + diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift new file mode 100644 index 000000000..a71e051b8 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift @@ -0,0 +1,254 @@ +// +// Web3+ERC1634.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 20/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +///Re-Fungible Token Standard (RFT) +protocol IERC1633: IERC20, IERC165 { + + func parentToken() throws -> EthereumAddress + func parentTokenId() throws -> BigUInt + +} + +public class ERC1633: IERC1633 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc1633ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func parentToken() throws -> EthereumAddress { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("parentToken", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func parentTokenId() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("parentTokenId", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + transactionOptions.gasLimit = .manual(30000) + let result = try contract.read("supportsInterface", parameters: [interfaceID] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift new file mode 100644 index 000000000..231d8b5df --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift @@ -0,0 +1,267 @@ +// +// Web3+ERC1643.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 19/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +//Document Management Standard +protocol IERC1643: IERC20 { + + // Document Management + func getDocument(name: Data) throws -> (String, Data) + func setDocument(from: EthereumAddress, name: Data, uri: String, documentHash: Data) throws -> WriteTransaction + func removeDocument(from: EthereumAddress, name: Data) throws -> WriteTransaction + func getAllDocuments() throws -> [Data] + +} + +public class ERC1643: IERC1643 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc1643ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + //ERC1643 methods + public func getDocument(name: Data) throws -> (String, Data) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getDocument", parameters: [name] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? (String, Data) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func setDocument(from: EthereumAddress, name: Data, uri: String, documentHash: Data) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setDocument", parameters: [name, uri, documentHash] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func removeDocument(from: EthereumAddress, name: Data) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("removeDocument", parameters: [name] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func getAllDocuments() throws -> [Data] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getAllDocuments", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [Data] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift new file mode 100644 index 000000000..a82cc2da7 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift @@ -0,0 +1,283 @@ +// +// Web3+ERC1644.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 19/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +//Controller Token Operation Standard +protocol IERC1644: IERC20 { + + // Controller Operation + func isControllable() throws -> Bool + func controllerTransfer(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction + func controllerRedeem(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction + +} + +public class ERC1644: IERC1644 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc1644ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + //ERC1644 + public func isControllable() throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isControllable", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func controllerTransfer(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("controllerTransfer", parameters: [originalOwner, to, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func controllerRedeem(from: EthereumAddress, tokenHolder: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("controllerRedeem", parameters: [tokenHolder, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC165/Web3+ERC165.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC165/Web3+ERC165.swift new file mode 100644 index 000000000..6687e9c4e --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC165/Web3+ERC165.swift @@ -0,0 +1,16 @@ +// +// Web3+ERC165.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 15/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation + +//Standard Interface Detection +protocol IERC165 { + + func supportsInterface(interfaceID: [UInt8]) throws -> Bool + +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift new file mode 100644 index 000000000..b4116e264 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift @@ -0,0 +1,228 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +//Token Standard +protocol IERC20 { + func getBalance(account: EthereumAddress) throws -> BigUInt + func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt + func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction + func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction + func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction + func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction + func totalSupply() throws -> BigUInt +} + +// This namespace contains functions to work with ERC20 tokens. +// variables are lazyly evaluated or global token information (name, ticker, total supply) +// can be imperatively read and saved +public class ERC20: IERC20 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(Web3.Utils.erc20ABI, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift new file mode 100644 index 000000000..1960b095a --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift @@ -0,0 +1,256 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation +import BigInt +import PromiseKit +import EthereumAddress + +//Non-Fungible Token Standard +protocol IERC721: IERC165 { + + func getBalance(account: EthereumAddress) throws -> BigUInt + + func getOwner(tokenId: BigUInt) throws -> EthereumAddress + + func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction + + func transfer(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction + + func approve(from: EthereumAddress, approved: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction + + func setApprovalForAll(from: EthereumAddress, operator user: EthereumAddress, approved: Bool) throws -> WriteTransaction + + func getApproved(tokenId: BigUInt) throws -> EthereumAddress + + func isApprovedForAll(owner: EthereumAddress, operator user: EthereumAddress) throws -> Bool +} + +protocol IERC721Metadata { + + func name() throws -> String + + func symbol() throws -> String + + func tokenURI(tokenId: BigUInt) throws -> String + +} + +protocol IERC721Enumerable { + + func totalSupply() throws -> BigUInt + + func tokenByIndex(index: BigUInt) throws -> BigUInt + + func tokenOfOwnerByIndex(owner: EthereumAddress, index: BigUInt) throws -> BigUInt +} + +// This namespace contains functions to work with ERC721 tokens. +// can be imperatively read and saved +public class ERC721: IERC721 { + + private var _tokenId: BigUInt? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(Web3.Utils.erc721ABI, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.transactionOptions = mergedOptions + } + + public var tokenId: BigUInt { + self.readProperties() + if self._tokenId != nil { + return self._tokenId! + } + return 0 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + + guard let tokenIdPromise = contract.read("tokenId", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [tokenIdPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let tokenIdResult) = resolvedPromises[0] else {return} + guard let tokenId = tokenIdResult["0"] as? BigUInt else {return} + self._tokenId = tokenId + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getOwner(tokenId: BigUInt) throws -> EthereumAddress { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("ownerOf", parameters: [tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getApproved(tokenId: BigUInt) throws -> EthereumAddress { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getApproved", parameters: [tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("transfer", parameters: [to, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func approve(from: EthereumAddress, approved: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("approve", parameters: [approved, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setApprovalForAll(from: EthereumAddress, operator user: EthereumAddress, approved: Bool) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setApprovalForAll", parameters: [user, approved] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func isApprovedForAll(owner: EthereumAddress, operator user: EthereumAddress) throws -> Bool { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.callOnBlock = .latest + let result = try contract.read("isApprovedForAll", parameters: [owner, user] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + transactionOptions.gasLimit = .manual(30000) + let result = try contract.read("supportsInterface", parameters: [interfaceID] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + +} + +extension ERC721: IERC721Enumerable { + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func tokenByIndex(index: BigUInt) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenByIndex", parameters: [index] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func tokenOfOwnerByIndex(owner: EthereumAddress, index: BigUInt) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenOfOwnerByIndex", parameters: [owner, index] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + +} + +extension ERC721: IERC721Metadata { + + public func name() throws -> String { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("name", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? String else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func symbol() throws -> String { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("symbol", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? String else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func tokenURI(tokenId: BigUInt) throws -> String { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenId", parameters: [tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? String else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift new file mode 100644 index 000000000..ccaff5438 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift @@ -0,0 +1,312 @@ +// +// Web3+ERC721x.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 20/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import PromiseKit +import EthereumAddress + +///A Smarter Token for the Future of Crypto Collectibles +///ERC721x is an extension of ERC721 that adds support for multi-fungible tokens and batch transfers, while being fully backward-compatible. + +protocol IERC721x: IERC721, IERC721Metadata, IERC721Enumerable { + func implementsERC721X() throws -> Bool + func getOwner(tokenId: BigUInt) throws -> EthereumAddress + func getBalance(account: EthereumAddress) throws -> BigUInt + func getBalance(account: EthereumAddress, tokenId: BigUInt) throws -> BigUInt + + func tokensOwned(account: EthereumAddress) throws -> ([BigUInt], [BigUInt]) + + func transfer(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt, quantity: BigUInt) throws -> WriteTransaction + func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, quantity: BigUInt) throws -> WriteTransaction + + // Fungible Safe Transfer From + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, amount: BigUInt) throws -> WriteTransaction + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, amount: BigUInt, data: [UInt8]) throws -> WriteTransaction + + // Batch Safe Transfer From + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenIds: [BigUInt], amounts: [BigUInt], data: [UInt8]) throws -> WriteTransaction + + func name() throws -> String + func symbol() throws -> String +} + +public class ERC721x: IERC721x { + + private var _tokenId: BigUInt? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc721xABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var tokenId: BigUInt { + self.readProperties() + if self._tokenId != nil { + return self._tokenId! + } + return 0 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + + guard let tokenIdPromise = contract.read("tokenId", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [tokenIdPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let tokenIdResult) = resolvedPromises[0] else {return} + guard let tokenId = tokenIdResult["0"] as? BigUInt else {return} + self._tokenId = tokenId + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getOwner(tokenId: BigUInt) throws -> EthereumAddress { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("ownerOf", parameters: [tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getApproved(tokenId: BigUInt) throws -> EthereumAddress { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getApproved", parameters: [tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("transfer", parameters: [to, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func approve(from: EthereumAddress, approved: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("approve", parameters: [approved, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setApprovalForAll(from: EthereumAddress, operator user: EthereumAddress, approved: Bool) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setApprovalForAll", parameters: [user, approved] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func isApprovedForAll(owner: EthereumAddress, operator user: EthereumAddress) throws -> Bool { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.callOnBlock = .latest + let result = try contract.read("isApprovedForAll", parameters: [owner, user] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + transactionOptions.gasLimit = .manual(30000) + let result = try contract.read("supportsInterface", parameters: [interfaceID] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func tokenByIndex(index: BigUInt) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenByIndex", parameters: [index] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func tokenOfOwnerByIndex(owner: EthereumAddress, index: BigUInt) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenOfOwnerByIndex", parameters: [owner, index] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func name() throws -> String { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("name", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? String else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func symbol() throws -> String { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("symbol", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? String else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func tokenURI(tokenId: BigUInt) throws -> String { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenId", parameters: [tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? String else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func implementsERC721X() throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("implementsERC721X", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func getBalance(account: EthereumAddress, tokenId: BigUInt) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account, tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func tokensOwned(account: EthereumAddress) throws -> ([BigUInt], [BigUInt]) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokensOwned", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? ([BigUInt], [BigUInt]) else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func transfer(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt, quantity: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("transfer", parameters: [to, tokenId, quantity] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, quantity: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, tokenId, quantity] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, amount: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeTransferFrom", parameters: [originalOwner, to, tokenId, amount] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, amount: BigUInt, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeTransferFrom", parameters: [originalOwner, to, tokenId, amount, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenIds: [BigUInt], amounts: [BigUInt], data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeTransferFrom", parameters: [originalOwner, to, tokenIds, amounts, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift new file mode 100644 index 000000000..8127bf0fe --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift @@ -0,0 +1,445 @@ +// +// Web3+ERC777.swift +// web3swift +// +// Created by Anton Grigorev on 07/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// +import Foundation +import BigInt +import PromiseKit +import EthereumAddress + +//A New Advanced Token Standard +protocol IERC777: IERC20, IERC820 { + func getDefaultOperators() throws -> [EthereumAddress] + func getGranularity() throws -> BigUInt + func getBalance(account: EthereumAddress) throws -> BigUInt + func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt + func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction + func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction + func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction + func authorize(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction + func revoke(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction + func isOperatorFor(operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool + func send(from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func operatorSend(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction + func burn(from: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction + func operatorBurn(from: EthereumAddress, amount: String, originalOwner: EthereumAddress, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction +} + +// This namespace contains functions to work with ERC777 tokens. +// can be imperatively read and saved +public class ERC777: IERC777 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc777ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + /// Must be 18! + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 18 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getGranularity() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("granularity", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getDefaultOperators() throws -> [EthereumAddress] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("defaultOperators", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [EthereumAddress] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + /// ERC777 methods + public func authorize(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + let tx = contract.write("authorizeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func revoke(from: EthereumAddress, operator user: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + let tx = contract.write("revokeOperator", parameters: [user] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func isOperatorFor(operator user: EthereumAddress, tokenHolder: EthereumAddress) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("isOperatorFor", parameters: [user, tokenHolder] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func send(from: EthereumAddress, to: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("send", parameters: [to, value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorSend(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("operatorSend", parameters: [originalOwner, to, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func burn(from: EthereumAddress, amount: String, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("burn", parameters: [value, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func operatorBurn(from: EthereumAddress, amount: String, originalOwner: EthereumAddress, data: [UInt8], operatorData: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("burn", parameters: [originalOwner, value, data, operatorData] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func canImplementInterfaceForAddress(interfaceHash: Data, addr: EthereumAddress) throws -> Data { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("canImplementInterfaceForAddress", parameters: [interfaceHash, addr] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Data else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getInterfaceImplementer(addr: EthereumAddress, interfaceHash: Data) throws -> EthereumAddress { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getInterfaceImplementer", parameters: [addr, interfaceHash] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func setInterfaceImplementer(from: EthereumAddress, addr: EthereumAddress, interfaceHash: Data, implementer: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setInterfaceImplementer", parameters: [addr, interfaceHash, implementer] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setManager(from: EthereumAddress, addr: EthereumAddress, newManager: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("setManager", parameters: [addr, newManager] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func interfaceHash(interfaceName: String) throws -> Data { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("interfaceHash", parameters: [interfaceName] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Data else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func updateERC165Cache(from: EthereumAddress, contract: EthereumAddress, interfaceId: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("updateERC165Cache", parameters: [contract, interfaceId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + transactionOptions.gasLimit = .manual(30000) + let result = try contract.read("supportsInterface", parameters: [interfaceID] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + +} + diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift new file mode 100644 index 000000000..4ae4e3cdb --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift @@ -0,0 +1,20 @@ +// +// Web3+ERC820.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 15/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import EthereumAddress + +//Pseudo-introspection using a registry contract +protocol IERC820: IERC165 { + func canImplementInterfaceForAddress(interfaceHash: Data, addr: EthereumAddress) throws -> Data + func getInterfaceImplementer(addr: EthereumAddress, interfaceHash: Data) throws -> EthereumAddress + func setInterfaceImplementer(from: EthereumAddress, addr: EthereumAddress, interfaceHash: Data, implementer: EthereumAddress) throws -> WriteTransaction + func setManager(from: EthereumAddress, addr: EthereumAddress, newManager: EthereumAddress) throws -> WriteTransaction + func interfaceHash(interfaceName: String) throws -> Data + func updateERC165Cache(from: EthereumAddress, contract: EthereumAddress, interfaceId: [UInt8]) throws -> WriteTransaction +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift new file mode 100644 index 000000000..f5201c158 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift @@ -0,0 +1,138 @@ +// +// Web3+ERC888.swift +// web3swift-iOS +// +// Created by Anton Grigorev on 15/12/2018. +// Copyright © 2018 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress +import PromiseKit + +//MultiDimensional Token Standard +protocol IERC888 { + func getBalance(account: EthereumAddress) throws -> BigUInt + func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction +} + +public class ERC888: IERC888 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.erc888ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 255 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + +} + diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift new file mode 100644 index 000000000..933dc32db --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift @@ -0,0 +1,314 @@ +// +// Web3+ST20.swift +// web3swift +// +// Created by Anton on 05/03/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import PromiseKit +import EthereumAddress + +//NPolymath Token Standard +protocol IST20: IERC20 { + // off-chain hash + func tokenDetails() throws -> [UInt32] + + //transfer, transferFrom must respect the result of verifyTransfer + func verifyTransfer(from: EthereumAddress, originalOwner: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction + + //used to create tokens + func mint(from: EthereumAddress, investor: EthereumAddress, amount: String) throws -> WriteTransaction + + //Burn function used to burn the securityToken + func burn(from: EthereumAddress, amount: String) throws -> WriteTransaction +} + +// This namespace contains functions to work with ST-20 tokens. +// can be imperatively read and saved +public class ST20: IST20 { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.st20ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + /// Must be 18! + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 18 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + func tokenDetails() throws -> [UInt32] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenDetails", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [UInt32] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func verifyTransfer(from: EthereumAddress, originalOwner: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("verifyTransfer", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func mint(from: EthereumAddress, investor: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("mint", parameters: [investor, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func burn(from: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("burn", parameters: [value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift new file mode 100644 index 000000000..3a60b5ac1 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift @@ -0,0 +1,473 @@ +// +// Web3+SecurityToken.swift +// web3swift +// +// Created by Anton on 05/03/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import PromiseKit +import EthereumAddress + +//The Ownable contract has an owner address, and provides basic authorization control functions, this simplifies the implementation of "user permissions". +protocol IOwnable { + //Allows the current owner to relinquish control of the contract. + func renounceOwnership(from: EthereumAddress) throws -> WriteTransaction + + //Allows the current owner to transfer control of the contract to a newOwner. + func transferOwnership(from: EthereumAddress, newOwner: EthereumAddress) throws -> WriteTransaction +} + +//Security token interface +protocol ISecurityToken: IST20, IOwnable { + // Value of current checkpoint + func currentCheckpointId() throws -> BigUInt + + func getGranularity() throws -> BigUInt + + // Total number of non-zero token holders + func investorCount() throws -> BigUInt + + // List of token holders + func investors() throws -> [EthereumAddress] + + // Permissions this to a Permission module, which has a key of 1 + // If no Permission return false - note that IModule withPerm will allow ST owner all permissions anyway + // this allows individual modules to override this logic if needed (to not allow ST owner all permissions) + func checkPermission(delegate: EthereumAddress, module: EthereumAddress, perm: [UInt32]) throws -> Bool + + //returns module list for a module type + //params: + //- moduleType is which type of module we are trying to remove + //- moduleIndex is the index of the module within the chosen type + func getModule(moduleType: UInt8, moduleIndex: UInt8) throws -> ([UInt32], EthereumAddress) + + //returns module list for a module name - will return first match + //params: + //- moduleType is which type of module we are trying to remove + //- name is the name of the module within the chosen type + func getModuleByName(moduleType: UInt8, name: [UInt32]) throws -> ([UInt32], EthereumAddress) + + //Queries totalSupply as of a defined checkpoint + func totalSupplyAt(checkpointId: BigUInt) throws -> BigUInt + + //Queries balances as of a defined checkpoint + func balanceOfAt(investor: EthereumAddress, checkpointId: BigUInt) throws -> BigUInt + + //Creates a checkpoint that can be used to query historical balances / totalSuppy + func createCheckpoint(from: EthereumAddress) throws -> WriteTransaction + + //gets length of investors array + func getInvestorsLength() throws -> BigUInt +} + +public class SecurityToken: ISecurityToken { + + private var _name: String? = nil + private var _symbol: String? = nil + private var _decimals: UInt8? = nil + + private var _hasReadProperties: Bool = false + + public var transactionOptions: TransactionOptions + public var web3: web3 + public var provider: Web3Provider + public var address: EthereumAddress + public var abi: String + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(self.abi, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public init(web3: web3, provider: Web3Provider, address: EthereumAddress, abi: String = Web3.Utils.st20ABI) { + self.web3 = web3 + self.provider = provider + self.address = address + var mergedOptions = web3.transactionOptions + mergedOptions.to = address + self.abi = abi + self.transactionOptions = mergedOptions + } + + public var name: String { + self.readProperties() + if self._name != nil { + return self._name! + } + return "" + } + + public var symbol: String { + self.readProperties() + if self._symbol != nil { + return self._symbol! + } + return "" + } + + /// Must be 18! + public var decimals: UInt8 { + self.readProperties() + if self._decimals != nil { + return self._decimals! + } + return 18 + } + + public func readProperties() { + if self._hasReadProperties { + return + } + let contract = self.contract + guard contract.contract.address != nil else {return} + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() + } + + func tokenDetails() throws -> [UInt32] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenDetails", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [UInt32] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + func verifyTransfer(from: EthereumAddress, originalOwner: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("verifyTransfer", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + func mint(from: EthereumAddress, investor: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("mint", parameters: [investor, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func burn(from: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("burn", parameters: [value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func getBalance(account: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func approve(from: EthereumAddress, spender: EthereumAddress, amount: String) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + // get the decimals manually + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() + var decimals = BigUInt(0) + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { + throw Web3Error.inputError(desc: "Can not parse inputted amount") + } + + let tx = contract.write("approve", parameters: [spender, value] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func totalSupply() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupply", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func renounceOwnership(from: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + let tx = contract.write("renounceOwnership", parameters: [AnyObject](), transactionOptions: basicOptions)! + return tx + } + + public func transferOwnership(from: EthereumAddress, newOwner: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + let tx = contract.write("transferOwnership", parameters: [newOwner] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func currentCheckpointId() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("currentCheckpointId", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getGranularity() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("granularity", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func investorCount() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("investorCount", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func investors() throws -> [EthereumAddress] { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("investors", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? [EthereumAddress] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func checkPermission(delegate: EthereumAddress, module: EthereumAddress, perm: [UInt32]) throws -> Bool { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("checkPermission", parameters: [delegate, module, perm] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func getModule(moduleType: UInt8, moduleIndex: UInt8) throws -> ([UInt32], EthereumAddress) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getModule", parameters: [moduleType, moduleIndex] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let moduleList = result["0"] as? [UInt32] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + guard let moduleAddress = result["1"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return (moduleList, moduleAddress) + } + + public func getModuleByName(moduleType: UInt8, name: [UInt32]) throws -> ([UInt32], EthereumAddress) { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getModuleByName", parameters: [moduleType, name] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let moduleList = result["0"] as? [UInt32] else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + guard let moduleAddress = result["1"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return (moduleList, moduleAddress) + } + + public func totalSupplyAt(checkpointId: BigUInt) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("totalSupplyAt", parameters: [checkpointId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func balanceOfAt(investor: EthereumAddress, checkpointId: BigUInt) throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOfAt", parameters: [investor, checkpointId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } + + public func createCheckpoint(from: EthereumAddress) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + basicOptions.callOnBlock = .latest + + let tx = contract.write("createCheckpoint", parameters: [AnyObject](), transactionOptions: basicOptions)! + return tx + } + + public func getInvestorsLength() throws -> BigUInt { + let contract = self.contract + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getInvestorsLength", parameters: [AnyObject](), extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Batching.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Batching.swift index 982efa0e9..0d2184580 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Batching.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Batching.swift @@ -16,7 +16,7 @@ public class JSONRPCrequestDispatcher { private var lockQueue: DispatchQueue private var batches: [Batch] = [Batch]() - init(provider: Web3Provider, queue: DispatchQueue, policy: DispatchPolicy) { + public init(provider: Web3Provider, queue: DispatchQueue, policy: DispatchPolicy) { self.provider = provider self.queue = queue self.policy = policy @@ -99,7 +99,7 @@ public class JSONRPCrequestDispatcher { throw Web3Error.inputError(desc: "Trying to batch a request when policy is not to batch") } let currentBatch = self.batches.last! - if currentBatch.requests.count % batchLength == 0 || currentBatch.triggered { + if currentBatch.requests.count.isMultiple(of: batchLength) || currentBatch.triggered { let newBatch = Batch(provider: self.provider, capacity: Int(batchLength), queue: self.queue, lockQueue: self.lockQueue) self.batches.append(newBatch) return newBatch diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift old mode 100644 new mode 100755 diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+TxPool.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+TxPool.swift old mode 100644 new mode 100755 diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/EthereumTransaction.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/EthereumTransaction.swift index 09af7a233..dbe203f8d 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/EthereumTransaction.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/EthereumTransaction.swift @@ -67,17 +67,6 @@ public struct EthereumTransaction: CustomStringConvertible { self.to = to } - public init(to: EthereumAddress, data: Data, options: Web3Options) { - let defaults = Web3Options.defaultOptions() - let merged = Web3Options.merge(defaults, with: options) - self.nonce = BigUInt(0) - self.gasLimit = merged!.gasLimit! - self.gasPrice = merged!.gasPrice! - self.value = merged!.value! - self.to = to - self.data = data - } - public init (nonce: BigUInt, gasPrice: BigUInt, gasLimit: BigUInt, to: EthereumAddress, value: BigUInt, data: Data, v: BigUInt, r: BigUInt, s: BigUInt) { self.nonce = nonce @@ -91,23 +80,6 @@ public struct EthereumTransaction: CustomStringConvertible { self.s = s } - public func mergedWithOptions(_ options: Web3Options) -> EthereumTransaction { - var tx = self; - if options.gasPrice != nil { - tx.gasPrice = options.gasPrice! - } - if options.gasLimit != nil { - tx.gasLimit = options.gasLimit! - } - if options.value != nil { - tx.value = options.value! - } - if options.to != nil { - tx.to = options.to! - } - return tx - } - public var description: String { get { var toReturn = "" @@ -229,52 +201,6 @@ public struct EthereumTransaction: CustomStringConvertible { return hash } - static func fromJSON(_ json: [String: Any]) -> EthereumTransaction? { - guard let options = Web3Options.fromJSON(json) else {return nil} - guard let toString = json["to"] as? String else {return nil} - var to: EthereumAddress - if toString == "0x" || toString == "0x0" { - to = EthereumAddress.contractDeploymentAddress() - } else { - guard let ethAddr = EthereumAddress(toString) else {return nil} - to = ethAddr - } -// if (!to.isValid) { -// return nil -// } - var dataString = json["data"] as? String - if (dataString == nil) { - dataString = json["input"] as? String - } - guard dataString != nil, let data = Data.fromHex(dataString!) else {return nil} - var transaction = EthereumTransaction(to: to, data: data, options: options) - if let nonceString = json["nonce"] as? String { - guard let nonce = BigUInt(nonceString.stripHexPrefix(), radix: 16) else {return nil} - transaction.nonce = nonce - } - if let vString = json["v"] as? String { - guard let v = BigUInt(vString.stripHexPrefix(), radix: 16) else {return nil} - transaction.v = v - } - if let rString = json["r"] as? String { - guard let r = BigUInt(rString.stripHexPrefix(), radix: 16) else {return nil} - transaction.r = r - } - if let sString = json["s"] as? String { - guard let s = BigUInt(sString.stripHexPrefix(), radix: 16) else {return nil} - transaction.s = s - } - if let valueString = json["value"] as? String { - guard let value = BigUInt(valueString.stripHexPrefix(), radix: 16) else {return nil} - transaction.value = value - } - let inferedChainID = transaction.inferedChainID - if (transaction.inferedChainID != nil && transaction.v >= BigUInt(37)) { - transaction.chainID = inferedChainID - } - return transaction - } - public static func fromRaw(_ raw: Data) -> EthereumTransaction? { guard let totalItem = RLP.decode(raw) else {return nil} guard let rlpItem = totalItem[0] else {return nil} @@ -322,9 +248,9 @@ public struct EthereumTransaction: CustomStringConvertible { static func createRequest(method: JSONRPCmethod, transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> JSONRPCrequest? { let onBlock = transactionOptions?.callOnBlock?.stringValue var request = JSONRPCrequest() +// var tx = transaction request.method = method let from = transactionOptions?.from -// guard let from = options?.from else {return nil} guard var txParams = transaction.encodeAsDictionary(from: from) else {return nil} if method == .estimateGas || transactionOptions?.gasLimit == nil { txParams.gas = nil @@ -352,3 +278,110 @@ public struct EthereumTransaction: CustomStringConvertible { return request } } + +public extension EthereumTransaction { + public init(to: EthereumAddress, data: Data, options: TransactionOptions) { + let defaults = TransactionOptions.defaultOptions + let merged = defaults.merge(options) + self.nonce = BigUInt(0) + + if let gP = merged.gasPrice { + switch gP { + case .manual(let value): + self.gasPrice = value + default: + self.gasPrice = BigUInt("5000000000") + } + } + + if let gL = merged.gasLimit { + switch gL { + case .manual(let value): + self.gasLimit = value + default: + self.gasLimit = BigUInt(UInt64(21000)) + } + } + + self.value = merged.value! + self.to = to + self.data = data + } + + public func mergedWithOptions(_ options: TransactionOptions) -> EthereumTransaction { + var tx = self; + + if let gP = options.gasPrice { + switch gP { + case .manual(let value): + tx.gasPrice = value + default: + tx.gasPrice = BigUInt("5000000000") + } + } + + if let gL = options.gasLimit { + switch gL { + case .manual(let value): + tx.gasLimit = value + default: + tx.gasLimit = BigUInt(UInt64(21000)) + } + } + + if options.value != nil { + tx.value = options.value! + } + if options.to != nil { + tx.to = options.to! + } + return tx + } + + static func fromJSON(_ json: [String: Any]) -> EthereumTransaction? { + guard let options = TransactionOptions.fromJSON(json) else {return nil} + guard let toString = json["to"] as? String else {return nil} + var to: EthereumAddress + if toString == "0x" || toString == "0x0" { + to = EthereumAddress.contractDeploymentAddress() + } else { + guard let ethAddr = EthereumAddress(toString) else {return nil} + to = ethAddr + } + // if (!to.isValid) { + // return nil + // } + var dataString = json["data"] as? String + if (dataString == nil) { + dataString = json["input"] as? String + } + guard dataString != nil, let data = Data.fromHex(dataString!) else {return nil} + var transaction = EthereumTransaction(to: to, data: data, options: options) + if let nonceString = json["nonce"] as? String { + guard let nonce = BigUInt(nonceString.stripHexPrefix(), radix: 16) else {return nil} + transaction.nonce = nonce + } + if let vString = json["v"] as? String { + guard let v = BigUInt(vString.stripHexPrefix(), radix: 16) else {return nil} + transaction.v = v + } + if let rString = json["r"] as? String { + guard let r = BigUInt(rString.stripHexPrefix(), radix: 16) else {return nil} + transaction.r = r + } + if let sString = json["s"] as? String { + guard let s = BigUInt(sString.stripHexPrefix(), radix: 16) else {return nil} + transaction.s = s + } + if let valueString = json["value"] as? String { + guard let value = BigUInt(valueString.stripHexPrefix(), radix: 16) else {return nil} + transaction.value = value + } + let inferedChainID = transaction.inferedChainID + if (transaction.inferedChainID != nil && transaction.v >= BigUInt(37)) { + transaction.chainID = inferedChainID + } + return transaction + } + +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/TransactionSigner.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/TransactionSigner.swift index b00b5d8c4..4b46af649 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/TransactionSigner.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/TransactionSigner.swift @@ -23,11 +23,7 @@ public struct Web3Signer { try FallbackSigner.sign(transaction: &transaction, privateKey: privateKey, useExtraEntropy: useExtraEntropy) } } -// public static func signIntermediate(intermediate:inout TransactionIntermediate, keystore: AbstractKeystore, account: EthereumAddress, password: String, useExtraEntropy: Bool = false) throws { -// var tx = intermediate.transaction -// try Web3Signer.signTX(transaction: &tx, keystore: keystore, account: account, password: password, useExtraEntropy: useExtraEntropy) -// intermediate.transaction = tx -// } + public static func signPersonalMessage(_ personalMessage: Data, keystore: AbstractKeystore, account: EthereumAddress, password: String, useExtraEntropy: Bool = false) throws -> Data? { var privateKey = try keystore.UNSAFE_getPrivateKeyData(password: password, account: account) defer {Data.zero(&privateKey)} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Utils/Classes/EIP67Code.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Utils/Classes/EIP67Code.swift index e2951a93b..ff35a1b68 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Utils/Classes/EIP67Code.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Utils/Classes/EIP67Code.swift @@ -89,7 +89,7 @@ extension Web3 { public static func createImage(from: EIP67Code, scale: Double = 1.0) -> CIImage { guard let string = from.toString().addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else {return CIImage()} guard let data = string.data(using: .utf8, allowLossyConversion: false) else {return CIImage()} - let filter = CIFilter(name: "CIQRCodeGenerator", withInputParameters: ["inputMessage" : data, "inputCorrectionLevel":"L"]) + let filter = CIFilter(name: "CIQRCodeGenerator", parameters: ["inputMessage" : data, "inputCorrectionLevel":"L"]) guard var image = filter?.outputImage else {return CIImage()} let transformation = CGAffineTransform(scaleX: CGFloat(scale), y: CGFloat(scale)) image = image.transformed(by: transformation) diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Contract.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Contract.swift index 13b22971f..52ac7087d 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Contract.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Contract.swift @@ -29,9 +29,14 @@ extension web3 { self.web3 = web3Instance self.transactionOptions = web3.transactionOptions switch abiVersion { - default: + case 1: + print("ABIv1 bound contract is now deprecated") + return nil + case 2: guard let c = EthereumContract(abiString, at: at) else {return nil} contract = c + default: + return nil } var mergedOptions = self.transactionOptions?.merge(transactionOptions) if at != nil { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eth+Websocket.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eth+Websocket.swift new file mode 100644 index 000000000..73901a777 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eth+Websocket.swift @@ -0,0 +1,41 @@ +// +// Web3+Eth+Websocket.swift +// web3swift +// +// Created by Anton on 03/04/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// +import Starscream +import PromiseKit +import BigInt +import Foundation + +extension web3.Eth { + + public func getWebsocketProvider(forDelegate delegate: Web3SocketDelegate) throws -> InfuraWebsocketProvider { + var infuraWSProvider: InfuraWebsocketProvider + if !(provider is InfuraWebsocketProvider) { + guard let infuraNetwork = provider.network else { + throw Web3Error.processingError(desc: "Wrong network") + } + guard let infuraProvider = InfuraWebsocketProvider(infuraNetwork, delegate: delegate, keystoreManager: provider.attachedKeystoreManager) else { + throw Web3Error.processingError(desc: "Wrong network") + } + infuraWSProvider = infuraProvider + } else { + infuraWSProvider = provider as! InfuraWebsocketProvider + } + infuraWSProvider.connectSocket() + return infuraWSProvider + } + + public func getLatestPendingTransactions(forDelegate delegate: Web3SocketDelegate) throws { + let provider = try getWebsocketProvider(forDelegate: delegate) + try provider.filter(method: .newPendingTransactionFilter) + } + + public func subscribeOnPendingTransactions(forDelegate delegate: Web3SocketDelegate) throws { + let provider = try getWebsocketProvider(forDelegate: delegate) + try provider.subscribeOnNewPendingTransactions() + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+EventParser.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+EventParser.swift index 26fdd1f88..2d22054f4 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+EventParser.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+EventParser.swift @@ -18,7 +18,8 @@ extension web3.web3contract { public var filter: EventFilter? var web3: web3 public init? (web3 web3Instance: web3, eventName: String, contract: ContractProtocol, filter: EventFilter? = nil) { - guard let _ = contract.allEvents.index(of: eventName) else {return nil} +// guard let _ = contract.allEvents.index(of: eventName) else {return nil} + guard let _ = contract.allEvents.firstIndex(of: eventName) else {return nil} self.eventName = eventName self.web3 = web3Instance self.contract = contract diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eventloop.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eventloop.swift old mode 100644 new mode 100755 diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Infura.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Infura.swift deleted file mode 100755 index 57b325b85..000000000 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Infura.swift +++ /dev/null @@ -1,21 +0,0 @@ -// web3swift -// -// Created by Alex Vlasov. -// Copyright © 2018 Alex Vlasov. All rights reserved. -// - -import Foundation -import BigInt - -/// Custom Web3 HTTP provider of Infura nodes. -public final class InfuraProvider: Web3HttpProvider { - public init?(_ net:Networks, accessToken token: String? = nil, keystoreManager manager: KeystoreManager? = nil) { - var requestURLstring = "https://" + net.name + ".infura.io/" - if token != nil { - requestURLstring = requestURLstring + token! - } - let providerURL = URL(string: requestURLstring) - super.init(providerURL!, network: net, keystoreManager: manager) - } -} - diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+InfuraProviders.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+InfuraProviders.swift new file mode 100755 index 000000000..7bdbd6b59 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+InfuraProviders.swift @@ -0,0 +1,197 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// +import Foundation +import BigInt +import Starscream + +/// Custom Web3 HTTP provider of Infura nodes. +public final class InfuraProvider: Web3HttpProvider { + public init?(_ net:Networks, accessToken token: String? = nil, keystoreManager manager: KeystoreManager? = nil) { + var requestURLstring = "https://" + net.name + ".infura.io/" + if token != nil { + requestURLstring = requestURLstring + token! + } + let providerURL = URL(string: requestURLstring) + super.init(providerURL!, network: net, keystoreManager: manager) + } +} + +/// Custom Websocket provider of Infura nodes. +public final class InfuraWebsocketProvider: WebsocketProvider { + public var filterID: String? + public var subscriptionIDs = Set() + private var subscriptionIDforUnsubscribing: String? = nil + private var filterTimer: Timer? + + public init?(_ network: Networks, + delegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil) { + guard network == Networks.Kovan + || network == Networks.Rinkeby + || network == Networks.Ropsten + || network == Networks.Mainnet else {return nil} + let networkName = network.name + let urlString = "wss://\(networkName).infura.io/ws" + guard URL(string: urlString) != nil else {return nil} + super.init(urlString, + delegate: delegate, + keystoreManager: manager, + network: network) + } + + public init?(_ endpoint: String, + delegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil) { + guard URL(string: endpoint) != nil else {return nil} + super.init(endpoint, + delegate: delegate, + keystoreManager: manager) + } + + public init?(_ endpoint: URL, + delegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil) { + super.init(endpoint, + delegate: delegate, + keystoreManager: manager) + } + + override public class func connectToSocket(_ endpoint: String, + delegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil, + network net: Networks? = nil) -> WebsocketProvider? { + guard let socketProvider = InfuraWebsocketProvider(endpoint, + delegate: delegate, + keystoreManager: manager) else {return nil} + socketProvider.connectSocket() + return socketProvider + } + + override public class func connectToSocket(_ endpoint: URL, + delegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil, + network net: Networks? = nil) -> WebsocketProvider? { + guard let socketProvider = InfuraWebsocketProvider(endpoint, + delegate: delegate, + keystoreManager: manager) else {return nil} + socketProvider.connectSocket() + return socketProvider + } + + public static func connectToInfuraSocket(_ network: Networks, + delegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil) -> InfuraWebsocketProvider? { + guard let socketProvider = InfuraWebsocketProvider(network, + delegate: delegate, + keystoreManager: manager) else {return nil} + socketProvider.connectSocket() + return socketProvider + } + + public func writeMessage(method: InfuraWebsocketMethod, params: [Encodable]) throws { + let request = JSONRPCRequestFabric.prepareRequest(method, parameters: params) + let encoder = JSONEncoder() + let requestData = try encoder.encode(request) + writeMessage(requestData) + } + + public func filter(method: InfuraWebsocketMethod, params: [Encodable]? = nil) throws { + filterTimer?.invalidate() + filterID = nil + let params = params ?? [] + let paramsCount = params.count + guard method.requiredNumOfParameters == paramsCount || method.requiredNumOfParameters == nil else { + throw Web3Error.inputError(desc: "Wrong number of params: need - \(method.requiredNumOfParameters!), got - \(paramsCount)") + } + try writeMessage(method: method, params: params) + filterTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(getFilterChanges), userInfo: nil, repeats: true) + } + + @objc public func getFilterChanges() throws { + if let id = self.filterID { + filterTimer?.invalidate() + let method = InfuraWebsocketMethod.getFilterChanges + try writeMessage(method: method, params: [id]) + } + } + + public func getFilterLogs() throws { + if let id = self.filterID { + let method = InfuraWebsocketMethod.getFilterLogs + try writeMessage(method: method, params: [id]) + } + } + + public func unistallFilter() throws { + if let id = self.filterID { + let method = InfuraWebsocketMethod.uninstallFilter + try writeMessage(method: method, params: [id]) + } + } + + public func subscribe(params: [Encodable]) throws { + let method = InfuraWebsocketMethod.subscribe + try writeMessage(method: method, params: params) + } + + public func unsubscribe(subscriptionID: String) throws { + let method = InfuraWebsocketMethod.unsubscribe + subscriptionIDforUnsubscribing = subscriptionID + try writeMessage(method: method, params: [subscriptionID]) + } + + public func subscribeOnNewHeads() throws { + let method = InfuraWebsocketMethod.subscribe + let params = ["newHeads"] + try writeMessage(method: method, params: params) + } + + public func subscribeOnNewPendingTransactions() throws { + let method = InfuraWebsocketMethod.subscribe + let params = ["newPendingTransactions"] + try writeMessage(method: method, params: params) + } + + public func subscribeOnSyncing() throws { + guard network != Networks.Kovan else { + throw Web3Error.inputError(desc: "Can't sync on Kovan") + } + let method = InfuraWebsocketMethod.subscribe + let params = ["syncing"] + try writeMessage(method: method, params: params) + } + + override public func websocketDidReceiveMessage(socket: WebSocketClient, text: String) { + if let data = text.data(using: String.Encoding.utf8), + let dictionary = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { + if filterID == nil, + let result = dictionary["result"] as? String { + // setting filter id + filterID = result + } else if let params = dictionary["params"] as? [String: Any], + let subscription = params["subscription"] as? String, + let result = params["result"] { + // subscription result + subscriptionIDs.insert(subscription) + delegate.received(message: result) + } else if let unsubscribed = dictionary["result"] as? Bool { + // unsubsribe result + if unsubscribed == true, let id = subscriptionIDforUnsubscribing { + subscriptionIDs.remove(id) + } else if let id = subscriptionIDforUnsubscribing { + delegate.gotError(error: Web3Error.processingError(desc: "Can\'t unsubscribe \(id)")) + } else { + delegate.received(message: unsubscribed) + } + } else if let message = dictionary["result"] { + // filter result + delegate.received(message: message) + } else { + delegate.gotError(error: Web3Error.processingError(desc: "Can\'t get known result. Message is: \(text)")) + } + } + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Instance.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Instance.swift index c674bd0a5..f87c354c5 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Instance.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Instance.swift @@ -9,9 +9,8 @@ import BigInt import PromiseKit /// A web3 instance bound to provider. All further functionality is provided under web.*. namespaces. -public class web3: Web3OptionsInheritable { +public class web3 { public var provider : Web3Provider - public var options : Web3Options = Web3Options.defaultOptions() public var transactionOptions: TransactionOptions = TransactionOptions.defaultOptions public var defaultBlock = "latest" public var requestDispatcher: JSONRPCrequestDispatcher @@ -48,12 +47,12 @@ public class web3: Web3OptionsInheritable { return self.ethInstance! } - public class Eth:Web3OptionsInheritable { + public class Eth:TransactionOptionsInheritable { var provider:Web3Provider // weak var web3: web3? var web3: web3 - public var options: Web3Options { - return self.web3.options + public var transactionOptions: TransactionOptions { + return self.web3.transactionOptions } public init(provider prov: Web3Provider, web3 web3instance: web3) { provider = prov @@ -72,12 +71,12 @@ public class web3: Web3OptionsInheritable { return self.personalInstance! } - public class Personal:Web3OptionsInheritable { + public class Personal:TransactionOptionsInheritable { var provider:Web3Provider // weak var web3: web3? var web3: web3 - public var options: Web3Options { - return self.web3.options + public var transactionOptions: TransactionOptions { + return self.web3.transactionOptions } public init(provider prov: Web3Provider, web3 web3instance: web3) { provider = prov @@ -96,12 +95,12 @@ public class web3: Web3OptionsInheritable { return self.txPoolInstance! } - public class TxPool: Web3OptionsInheritable { + public class TxPool: TransactionOptionsInheritable { var provider:Web3Provider // weak var web3: web3? var web3: web3 - public var options: Web3Options { - return self.web3.options + public var transactionOptions: TransactionOptions { + return self.web3.transactionOptions } public init(provider prov: Web3Provider, web3 web3instance: web3) { provider = prov @@ -141,12 +140,12 @@ public class web3: Web3OptionsInheritable { return self.browserFunctionsInstance! } - public class BrowserFunctions:Web3OptionsInheritable { + public class BrowserFunctions:TransactionOptionsInheritable { var provider:Web3Provider // weak var web3: web3? var web3: web3 - public var options: Web3Options { - return self.web3.options + public var transactionOptions: TransactionOptions { + return self.web3.transactionOptions } public init(provider prov: Web3Provider, web3 web3instance: web3) { provider = prov @@ -165,7 +164,7 @@ public class web3: Web3OptionsInheritable { return self.eventLoopInstance! } - public class Eventloop: Web3OptionsInheritable { + public class Eventloop: TransactionOptionsInheritable { public typealias EventLoopCall = (web3) -> Void public typealias EventLoopContractCall = (web3contract) -> Void @@ -191,8 +190,8 @@ public class web3: Web3OptionsInheritable { // public var monitoredContracts: [MonitoredContract] = [MonitoredContract]() public var monitoredUserFunctions: [EventLoopRunnableProtocol] = [EventLoopRunnableProtocol]() - public var options: Web3Options { - return self.web3.options + public var transactionOptions: TransactionOptions { + return self.web3.transactionOptions } public init(provider prov: Web3Provider, web3 web3instance: web3) { provider = prov diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+JSONRPC.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+JSONRPC.swift index 37d6d9a86..652c03132 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+JSONRPC.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+JSONRPC.swift @@ -24,10 +24,10 @@ public struct Counter { /// JSON RPC request structure for serialization and deserialization purposes. public struct JSONRPCrequest: Encodable { - var jsonrpc: String = "2.0" - var method: JSONRPCmethod? - var params: JSONRPCparams? - var id: UInt64 = Counter.increment() + public var jsonrpc: String = "2.0" + public var method: JSONRPCmethod? + public var params: JSONRPCparams? + public var id: UInt64 = Counter.increment() enum CodingKeys: String, CodingKey { case jsonrpc diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Methods.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Methods.swift index ff67bb278..f3ab0f28b 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Methods.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Methods.swift @@ -79,4 +79,12 @@ public struct JSONRPCRequestFabric { request.params = pars return request } + + public static func prepareRequest(_ method: InfuraWebsocketMethod, parameters: [Encodable]) -> InfuraWebsocketRequest { + var request = InfuraWebsocketRequest() + request.method = method + let pars = JSONRPCparams(params: parameters) + request.params = pars + return request + } } diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift old mode 100644 new mode 100755 index d5a399582..d52fdb8e8 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift @@ -37,7 +37,9 @@ public class WriteTransaction: ReadTransaction { } var mergedOptions = self.transactionOptions.merge(transactionOptions) - + if mergedOptions.value != nil { + assembledTransaction.value = mergedOptions.value! + } var forAssemblyPipeline : (EthereumTransaction, EthereumContract, TransactionOptions) = (assembledTransaction, self.contract, mergedOptions) for hook in self.web3.preAssemblyHooks { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Options.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Options.swift index 78291448e..a0790932a 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Options.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Options.swift @@ -8,140 +8,8 @@ import Foundation import BigInt import EthereumAddress -public protocol Web3OptionsInheritable { - var options: Web3Options {get} -} - -/// Options for sending or calling a particular Ethereum transaction -public struct Web3Options { - /// Sets the transaction destination. It can either be a contract address or a private key controlled wallet address. - /// - /// Usually should never be nil. - public var to: EthereumAddress? = nil - /// Sets from what account a transaction should be sent. Used only internally as the sender of Ethereum transaction - /// is determined purely from the transaction signature. Indicates to the Ethereum node or to the local keystore what private key - /// should be used to sign a transaction. - /// - /// Can be nil if one reads the information from the blockchain. - public var from: EthereumAddress? = nil - /// Sets the gas limit for a transaction. - /// - /// If set to nil it's usually determined automatically. - public var gasLimit: BigUInt? = nil - /// Sets the gas price for a transaction. - /// - /// If set to nil it's usually determined automatically. - public var gasPrice: BigUInt? = nil - /// Sets the value (amount of Wei) sent along the transaction. - /// - /// If set to nil it's equal to zero - public var value: BigUInt? = nil - - public init() { - } - - /// Default options filler. Sets gas limit, gas price and value to zeroes. - public static func defaultOptions() -> Web3Options{ - var options = Web3Options() - options.gasLimit = BigUInt(0) - options.gasPrice = BigUInt(0) - options.value = BigUInt(0) - return options - } - - - public static func fromJSON(_ json: [String: Any]) -> Web3Options? { - var options = Web3Options() - if let gas = json["gas"] as? String, let gasBiguint = BigUInt(gas.stripHexPrefix().lowercased(), radix: 16) { - options.gasLimit = gasBiguint - } - if let gasPrice = json["gasPrice"] as? String, let gasPriceBiguint = BigUInt(gasPrice.stripHexPrefix().lowercased(), radix: 16) { - options.gasPrice = gasPriceBiguint - } - if let value = json["value"] as? String, let valueBiguint = BigUInt(value.stripHexPrefix().lowercased(), radix: 16) { - options.value = valueBiguint - } - if let fromString = json["from"] as? String { - guard let addressFrom = EthereumAddress(fromString) else {return nil} - options.from = addressFrom - } - return options - } - - /// Merges two sets of topions by overriding the parameters from the first set by parameters from the second - /// set if those are not nil. - /// - /// Returns default options if both parameters are nil. - public static func merge(_ options:Web3Options?, with other:Web3Options?) -> Web3Options? { - if (other == nil && options == nil) { - return Web3Options.defaultOptions() - } - var newOptions = Web3Options.defaultOptions() - if (other?.to != nil) { - newOptions.to = other?.to - } else { - newOptions.to = options?.to - } - if (other?.from != nil) { - newOptions.from = other?.from - } else { - newOptions.from = options?.from - } - if (other?.gasLimit != nil) { - newOptions.gasLimit = other?.gasLimit - } else { - newOptions.gasLimit = options?.gasLimit - } - if (other?.gasPrice != nil) { - newOptions.gasPrice = other?.gasPrice - } else { - newOptions.gasPrice = options?.gasPrice - } - if (other?.value != nil) { - newOptions.value = other?.value - } else { - newOptions.value = options?.value - } - return newOptions - } - - /// merges two sets of options along with a gas estimate to try to guess the final gas limit value required by user. - /// - /// Please refer to the source code for a logic. - public static func smartMergeGasLimit(originalOptions: Web3Options?, extraOptions: Web3Options?, gasEstimate: BigUInt) -> BigUInt? { - guard let mergedOptions = Web3Options.merge(originalOptions, with: extraOptions) else {return nil} //just require any non-nils - if mergedOptions.gasLimit == nil { - return gasEstimate // for user's convenience we just use an estimate -// return nil // there is no opinion from user, so we can not proceed - } else { - if originalOptions != nil, originalOptions!.gasLimit != nil, originalOptions!.gasLimit! < gasEstimate { // original gas estimate was less than what's required, so we check extra options - if extraOptions != nil, extraOptions!.gasLimit != nil, extraOptions!.gasLimit! >= gasEstimate { - return extraOptions!.gasLimit! - } else { - return gasEstimate // for user's convenience we just use an estimate -// return nil // estimate is lower than allowed - } - } else { - if extraOptions != nil, extraOptions!.gasLimit != nil, extraOptions!.gasLimit! >= gasEstimate { - return extraOptions!.gasLimit! - } else { - return gasEstimate // for user's convenience we just use an estimate - // return nil // estimate is lower than allowed - } - } - } - } - - public static func smartMergeGasPrice(originalOptions: Web3Options?, extraOptions: Web3Options?, priceEstimate: BigUInt) -> BigUInt? { - guard let mergedOptions = Web3Options.merge(originalOptions, with: extraOptions) else {return nil} //just require any non-nils - if mergedOptions.gasPrice == nil { - return priceEstimate - } else if mergedOptions.gasPrice == 0 { - return priceEstimate - } else { - return mergedOptions.gasPrice! - } - } +public protocol TransactionOptionsInheritable { + var transactionOptions: TransactionOptions {get} } /// Options for sending or calling a particular Ethereum transaction @@ -252,61 +120,84 @@ public struct TransactionOptions { opts.callOnBlock = mergeIfNotNil(first: self.callOnBlock, second: other.callOnBlock) return opts } - -// public static func fromJSON(_ json: [String: Any]) -> Web3Options? { -// var options = Web3Options() -// if let gas = json["gas"] as? String, let gasBiguint = BigUInt(gas.stripHexPrefix().lowercased(), radix: 16) { -// options.gasLimit = gasBiguint -// } -// if let gasPrice = json["gasPrice"] as? String, let gasPriceBiguint = BigUInt(gasPrice.stripHexPrefix().lowercased(), radix: 16) { -// options.gasPrice = gasPriceBiguint -// } -// if let value = json["value"] as? String, let valueBiguint = BigUInt(value.stripHexPrefix().lowercased(), radix: 16) { -// options.value = valueBiguint -// } -// if let fromString = json["from"] as? String { -// guard let addressFrom = EthereumAddress(fromString) else {return nil} -// options.from = addressFrom -// } -// return options -// } -// -// /// Merges two sets of topions by overriding the parameters from the first set by parameters from the second -// /// set if those are not nil. -// /// -// /// Returns default options if both parameters are nil. -// public static func merge(_ options:Web3Options?, with other:Web3Options?) -> Web3Options? { -// if (other == nil && options == nil) { -// return Web3Options.defaultOptions() -// } -// var newOptions = Web3Options.defaultOptions() -// if (other?.to != nil) { -// newOptions.to = other?.to -// } else { -// newOptions.to = options?.to -// } -// if (other?.from != nil) { -// newOptions.from = other?.from -// } else { -// newOptions.from = options?.from -// } -// if (other?.gasLimit != nil) { -// newOptions.gasLimit = other?.gasLimit -// } else { -// newOptions.gasLimit = options?.gasLimit -// } -// if (other?.gasPrice != nil) { -// newOptions.gasPrice = other?.gasPrice -// } else { -// newOptions.gasPrice = options?.gasPrice -// } -// if (other?.value != nil) { -// newOptions.value = other?.value -// } else { -// newOptions.value = options?.value -// } -// return newOptions -// } + + public static func fromJSON(_ json: [String: Any]) -> TransactionOptions? { + var options = TransactionOptions() + if let gas = json["gas"] as? String, let gasBiguint = BigUInt(gas.stripHexPrefix().lowercased(), radix: 16) { + options.gasLimit = .limited(gasBiguint) + } else { + options.gasLimit = .automatic + } + if let gasLimit = json["gasLimit"] as? String, let gasgasLimitBiguint = BigUInt(gasLimit.stripHexPrefix().lowercased(), radix: 16) { + options.gasLimit = .limited(gasgasLimitBiguint) + } else { + options.gasLimit = .automatic + } + if let gasPrice = json["gasPrice"] as? String, let gasPriceBiguint = BigUInt(gasPrice.stripHexPrefix().lowercased(), radix: 16) { + options.gasPrice = .manual(gasPriceBiguint) + } else { + options.gasPrice = .automatic + } + if let value = json["value"] as? String, let valueBiguint = BigUInt(value.stripHexPrefix().lowercased(), radix: 16) { + options.value = valueBiguint + } + if let toString = json["to"] as? String { + guard let addressTo = EthereumAddress(toString) else {return nil} + options.to = addressTo + } + if let fromString = json["from"] as? String { + guard let addressFrom = EthereumAddress(fromString) else {return nil} + options.from = addressFrom + } + if let nonceString = json["nonce"] as? String, let nonce = BigUInt(nonceString.stripHexPrefix(), radix: 16) { + options.nonce = .manual(nonce) + } else { + options.nonce = .pending + } + if let callOnBlockString = json["callOnBlock"] as? String, let callOnBlock = BigUInt(callOnBlockString.stripHexPrefix(), radix: 16) { + options.callOnBlock = .exactBlockNumber(callOnBlock) + } else { + options.callOnBlock = .pending + } + return options + } + + /// Merges two sets of topions by overriding the parameters from the first set by parameters from the second + /// set if those are not nil. + /// + /// Returns default options if both parameters are nil. + public static func merge(_ options:TransactionOptions?, with other:TransactionOptions?) -> TransactionOptions? { + if (other == nil && options == nil) { + return TransactionOptions.defaultOptions + } + var newOptions = TransactionOptions.defaultOptions + if (other?.to != nil) { + newOptions.to = other?.to + } else { + newOptions.to = options?.to + } + if (other?.from != nil) { + newOptions.from = other?.from + } else { + newOptions.from = options?.from + } + if (other?.gasLimit != nil) { + newOptions.gasLimit = other?.gasLimit + } else { + newOptions.gasLimit = options?.gasLimit + } + if (other?.gasPrice != nil) { + newOptions.gasPrice = other?.gasPrice + } else { + newOptions.gasPrice = options?.gasPrice + } + if (other?.value != nil) { + newOptions.value = other?.value + } else { + newOptions.value = options?.value + } + return newOptions + } // // /// merges two sets of options along with a gas estimate to try to guess the final gas limit value required by user. // /// diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Protocols.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Protocols.swift index df1b20adc..885f29ab4 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Protocols.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Protocols.swift @@ -76,6 +76,13 @@ public enum Networks { } } +extension Networks: Equatable { + public static func ==(lhs: Networks, rhs: Networks) -> Bool { + return lhs.chainID == rhs.chainID + && lhs.name == rhs.name + } +} + public protocol EventLoopRunnableProtocol { var name: String {get} var queue: DispatchQueue {get} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift old mode 100644 new mode 100755 index 3d1740a56..8e2e52a05 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift @@ -30,7 +30,7 @@ public class ReadTransaction { } public func callPromise(transactionOptions: TransactionOptions? = nil) -> Promise<[String: Any]> { - let assembledTransaction : EthereumTransaction = self.transaction + var assembledTransaction : EthereumTransaction = self.transaction let queue = self.web3.requestDispatcher.queue let returnPromise = Promise<[String:Any]> { seal in let mergedOptions = self.transactionOptions.merge(transactionOptions) @@ -39,6 +39,9 @@ public class ReadTransaction { optionsForCall.to = mergedOptions.to optionsForCall.value = mergedOptions.value optionsForCall.callOnBlock = mergedOptions.callOnBlock + if mergedOptions.value != nil { + assembledTransaction.value = mergedOptions.value! + } let callPromise : Promise = self.web3.eth.callPromise(assembledTransaction, transactionOptions: optionsForCall) callPromise.done(on: queue) {(data:Data) throws in do { @@ -63,7 +66,7 @@ public class ReadTransaction { } public func estimateGasPromise(transactionOptions: TransactionOptions? = nil) -> Promise{ - let assembledTransaction : EthereumTransaction = self.transaction + var assembledTransaction : EthereumTransaction = self.transaction let queue = self.web3.requestDispatcher.queue let returnPromise = Promise { seal in let mergedOptions = self.transactionOptions.merge(transactionOptions) @@ -71,7 +74,21 @@ public class ReadTransaction { optionsForGasEstimation.from = mergedOptions.from optionsForGasEstimation.to = mergedOptions.to optionsForGasEstimation.value = mergedOptions.value + + // MARK: - Fixing estimate gas problem: gas price param shouldn't be nil + if let gasPricePolicy = mergedOptions.gasPrice { + switch gasPricePolicy { + case .manual( _): + optionsForGasEstimation.gasPrice = gasPricePolicy + default: + optionsForGasEstimation.gasPrice = .manual(1) // 1 wei to fix wrong estimating gas problem + } + } + optionsForGasEstimation.callOnBlock = mergedOptions.callOnBlock + if mergedOptions.value != nil { + assembledTransaction.value = mergedOptions.value! + } let promise = self.web3.eth.estimateGasPromise(assembledTransaction, transactionOptions: optionsForGasEstimation) promise.done(on: queue) {(estimate: BigUInt) in seal.fulfill(estimate) diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Structures.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Structures.swift index 4aca8d629..31ece1c87 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Structures.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Structures.swift @@ -38,7 +38,7 @@ fileprivate func decodeHexToBigUInt(_ container: KeyedDecodingContainer, k } } -extension Web3Options:Decodable { +extension TransactionOptions: Decodable { enum CodingKeys: String, CodingKey { case from @@ -46,15 +46,23 @@ extension Web3Options:Decodable { case gasPrice case gas case value + case nonce + case callOnBlock } public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) - let gasLimit = try decodeHexToBigUInt(container, key: .gas) - self.gasLimit = gasLimit + if let gasLimit = try decodeHexToBigUInt(container, key: .gas) { + self.gasLimit = .manual(gasLimit) + } else { + self.gasLimit = .automatic + } - let gasPrice = try decodeHexToBigUInt(container, key: .gasPrice) - self.gasPrice = gasPrice + if let gasPrice = try decodeHexToBigUInt(container, key: .gasPrice) { + self.gasPrice = .manual(gasPrice) + } else { + self.gasPrice = .automatic + } let toString = try container.decode(String?.self, forKey: .to) var to: EthereumAddress? @@ -67,15 +75,27 @@ extension Web3Options:Decodable { } self.to = to let from = try container.decodeIfPresent(EthereumAddress.self, forKey: .to) -// var from: EthereumAddress? -// if fromString != nil { -// guard let ethAddr = EthereumAddress(toString) else {throw Web3Error.dataError} -// from = ethAddr -// } + // var from: EthereumAddress? + // if fromString != nil { + // guard let ethAddr = EthereumAddress(toString) else {throw Web3Error.dataError} + // from = ethAddr + // } self.from = from let value = try decodeHexToBigUInt(container, key: .value) self.value = value + + if let nonce = try decodeHexToBigUInt(container, key: .nonce) { + self.nonce = .manual(nonce) + } else { + self.nonce = .pending + } + + if let callOnBlock = try decodeHexToBigUInt(container, key: .nonce) { + self.callOnBlock = .exactBlockNumber(callOnBlock) + } else { + self.callOnBlock = .pending + } } } @@ -93,7 +113,7 @@ extension EthereumTransaction:Decodable { } public init(from decoder: Decoder) throws { - let options = try Web3Options(from: decoder) + let options = try TransactionOptions(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) var data = try decodeHexToData(container, key: .data, allowOptional: true) @@ -110,7 +130,7 @@ extension EthereumTransaction:Decodable { guard let nonce = try decodeHexToBigUInt(container, key: .nonce) else {throw Web3Error.dataError} self.nonce = nonce - + guard let v = try decodeHexToBigUInt(container, key: .v) else {throw Web3Error.dataError} self.v = v @@ -125,8 +145,24 @@ extension EthereumTransaction:Decodable { } self.value = options.value! self.to = options.to! - self.gasPrice = options.gasPrice! - self.gasLimit = options.gasLimit! + + if let gP = options.gasPrice { + switch gP { + case .manual(let value): + self.gasPrice = value + default: + self.gasPrice = BigUInt("5000000000") + } + } + + if let gL = options.gasLimit { + switch gL { + case .manual(let value): + self.gasLimit = value + default: + self.gasLimit = BigUInt(21000) + } + } let inferedChainID = self.inferedChainID if (self.inferedChainID != nil && self.v >= BigUInt(37)) { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+TxPool.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+TxPool.swift old mode 100644 new mode 100755 diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Utils.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Utils.swift index 934b759a0..3365f294e 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Utils.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Utils.swift @@ -66,17 +66,3529 @@ extension Web3.Utils { } } + // Precoded API for testing estimate gas fix + public static var estimateGasTestABI = """ +[{"constant":true,"inputs":[],"name":"a","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"foo","type":"uint256"}],"name":"test","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"b","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}] +""" + /// Precoded "cold wallet" (private key controlled) address. Basically - only a payable fallback function. public static var coldWalletABI = "[{\"payable\":true,\"type\":\"fallback\"}]" + /// Precoded ST20 contracts ABI. Output parameters are named for ease of use. + public static var st20ABI = """ +[{"constant":false,"inputs":[],"name":"freezeTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investorListed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_moduleType","type":"uint8"},{"name":"_moduleIndex","type":"uint8"}],"name":"removeModule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMintingSTO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_granularity","type":"uint256"}],"name":"changeGranularity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"finishedSTOMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenBurner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tickerRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unfreezeTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"securityTokenVersion","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"investors","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_investor","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_moduleType","type":"uint8"},{"name":"_moduleIndex","type":"uint256"}],"name":"getModule","outputs":[{"name":"","type":"bytes32"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_investors","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"mintMulti","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_investor","type":"address"},{"name":"_checkpointId","type":"uint256"}],"name":"balanceOfAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentCheckpointId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"granularity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_MODULES","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_moduleType","type":"uint8"},{"name":"_moduleIndex","type":"uint8"},{"name":"_budget","type":"uint256"}],"name":"changeModuleBudget","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"freeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"STO_KEY","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"polyToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"},{"name":"","type":"uint256"}],"name":"modules","outputs":[{"name":"name","type":"bytes32"},{"name":"moduleAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newTokenDetails","type":"string"}],"name":"updateTokenDetails","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"polymathRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"checkpointTotalSupply","outputs":[{"name":"checkpointId","type":"uint256"},{"name":"value","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_delegate","type":"address"},{"name":"_module","type":"address"},{"name":"_perm","type":"bytes32"}],"name":"checkPermission","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TRANSFERMANAGER_KEY","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_checkpointId","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"verifyTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"finishedIssuerMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_moduleType","type":"uint8"},{"name":"_name","type":"bytes32"}],"name":"getModuleByName","outputs":[{"name":"","type":"bytes32"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMintingIssuer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PERMISSIONMANAGER_KEY","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenBurner","type":"address"}],"name":"setTokenBurner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"moduleRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CHECKPOINT_KEY","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_start","type":"uint256"},{"name":"_iters","type":"uint256"}],"name":"pruneInvestors","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"securityTokenRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenDetails","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInvestorsLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"updateFromRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_moduleFactory","type":"address"},{"name":"_data","type":"bytes"},{"name":"_maxCost","type":"uint256"},{"name":"_budget","type":"uint256"}],"name":"addModule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdrawPoly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"checkpointBalances","outputs":[{"name":"checkpointId","type":"uint256"},{"name":"value","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"createCheckpoint","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint8"},{"name":"_granularity","type":"uint256"},{"name":"_tokenDetails","type":"string"},{"name":"_polymathRegistry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_type","type":"uint8"},{"indexed":false,"name":"_name","type":"bytes32"},{"indexed":false,"name":"_moduleFactory","type":"address"},{"indexed":false,"name":"_module","type":"address"},{"indexed":false,"name":"_moduleCost","type":"uint256"},{"indexed":false,"name":"_budget","type":"uint256"},{"indexed":false,"name":"_timestamp","type":"uint256"}],"name":"LogModuleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_oldDetails","type":"string"},{"indexed":false,"name":"_newDetails","type":"string"}],"name":"LogUpdateTokenDetails","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_oldGranularity","type":"uint256"},{"indexed":false,"name":"_newGranularity","type":"uint256"}],"name":"LogGranularityChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_type","type":"uint8"},{"indexed":false,"name":"_module","type":"address"},{"indexed":false,"name":"_timestamp","type":"uint256"}],"name":"LogModuleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_moduleType","type":"uint8"},{"indexed":false,"name":"_module","type":"address"},{"indexed":false,"name":"_budget","type":"uint256"}],"name":"LogModuleBudgetChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_freeze","type":"bool"},{"indexed":false,"name":"_timestamp","type":"uint256"}],"name":"LogFreezeTransfers","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_checkpointId","type":"uint256"},{"indexed":false,"name":"_timestamp","type":"uint256"}],"name":"LogCheckpointCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_timestamp","type":"uint256"}],"name":"LogFinishMintingIssuer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_timestamp","type":"uint256"}],"name":"LogFinishMintingSTO","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_oldAddress","type":"address"},{"indexed":true,"name":"_newAddress","type":"address"}],"name":"LogChangeSTRAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_burner","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Burnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}] +""" + + /// TODO: - Need to make it right + /// Precoded ERC888 contracts ABI. Output parameters are named for ease of use. + public static var erc888ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" + + /// TODO: - need to fix. + public static var erc1376ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" + /// Precoded ERC20 contracts ABI. Output parameters are named for ease of use. public static var erc20ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" public static var erc721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"_name\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_approved\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"_symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]" - public static var ensRegistryABI = """ -[{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"label","type":"bytes32"},{"name":"owner","type":"address"}],"name":"setSubnodeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"ttl","type":"uint64"}],"name":"setTTL","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"ttl","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"label","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"resolver","type":"address"}],"name":"NewResolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"ttl","type":"uint64"}],"name":"NewTTL","type":"event"}] -""" - + + // TODO: - Need to fix + public static var erc721xABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"_name\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_approved\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"_symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]" + + // TODO: - Need to fix + public static var erc1155ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"_name\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_approved\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"_symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]" + + /// Precoded ERC777 contracts ABI. Output parameters are named for ease of use. + public static var erc777ABI = """ +[ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "granularity", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + }, + { + "name": "_operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_tokenHolder", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_operator", + "type": "address" + }, + { + "name": "_tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenHolder", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + }, + { + "name": "_operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_granularity", + "type": "uint256" + }, + { + "name": "_defaultOperators", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "granularity", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + }, + { + "name": "_operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_tokenHolder", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_operator", + "type": "address" + }, + { + "name": "_tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenHolder", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + }, + { + "name": "_operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_granularity", + "type": "uint256" + }, + { + "name": "_defaultOperators", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "granularity", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operatorData", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "userData", + "type": "bytes" + }, + { + "name": "operatorData", + "type": "bytes" + } + ], + "name": "tokensToSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "addr", + "type": "address" + }, + { + "name": "iHash", + "type": "bytes32" + }, + { + "name": "implementer", + "type": "address" + } + ], + "name": "setInterfaceImplementer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "addr", + "type": "address" + } + ], + "name": "getManager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "addr", + "type": "address" + }, + { + "name": "newManager", + "type": "address" + } + ], + "name": "setManager", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "addr", + "type": "address" + }, + { + "name": "iHash", + "type": "bytes32" + } + ], + "name": "getInterfaceImplementer", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "new_address", + "type": "address" + } + ], + "name": "upgrade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } +] +""" + /// TODO: - Make it right + /// Precoded ERC1633 contracts ABI. Output parameters are named for ease of use. + public static var erc1633ABI = """ +[ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "granularity", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + }, + { + "name": "_operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_tokenHolder", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_operator", + "type": "address" + }, + { + "name": "_tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenHolder", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + }, + { + "name": "_operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_granularity", + "type": "uint256" + }, + { + "name": "_defaultOperators", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "granularity", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + }, + { + "name": "_operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_tokenHolder", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_operator", + "type": "address" + }, + { + "name": "_tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenHolder", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + }, + { + "name": "_operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_granularity", + "type": "uint256" + }, + { + "name": "_defaultOperators", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "granularity", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operatorData", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "userData", + "type": "bytes" + }, + { + "name": "operatorData", + "type": "bytes" + } + ], + "name": "tokensToSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "addr", + "type": "address" + }, + { + "name": "iHash", + "type": "bytes32" + }, + { + "name": "implementer", + "type": "address" + } + ], + "name": "setInterfaceImplementer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "addr", + "type": "address" + } + ], + "name": "getManager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "addr", + "type": "address" + }, + { + "name": "newManager", + "type": "address" + } + ], + "name": "setManager", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "addr", + "type": "address" + }, + { + "name": "iHash", + "type": "bytes32" + } + ], + "name": "getInterfaceImplementer", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "new_address", + "type": "address" + } + ], + "name": "upgrade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } +] +""" + public static var ensRegistryABI = """ +[{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"label","type":"bytes32"},{"name":"owner","type":"address"}],"name":"setSubnodeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"ttl","type":"uint64"}],"name":"setTTL","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"ttl","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"label","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"resolver","type":"address"}],"name":"NewResolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"ttl","type":"uint64"}],"name":"NewTTL","type":"event"}] +""" + /// TODO: - Need to add correct ABI for ERC1400 + /// Precoded ERC1400 contracts ABI. Output parameters are named for ease of use. + public static var erc1400ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" + + /// TODO: - Need to add correct ABI for ERC1410 + /// Precoded ERC1410 contracts ABI. Output parameters are named for ease of use. + public static var erc1410ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" + + /// TODO: - Need to add correct ABI for ERC1594 + /// Precoded ERC1594 contracts ABI. Output parameters are named for ease of use. + public static var erc1594ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" + + /// TODO: - Need to add correct ABI for ERC1644 + /// Precoded ERC1644 contracts ABI. Output parameters are named for ease of use. + public static var erc1644ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" + + /// TODO: - Need to add correct ABI for ERC1644 + /// Precoded ERC1643 contracts ABI. Output parameters are named for ease of use. + public static var erc1643ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" + + public static var deedABI = """ + [{"constant":true,"inputs":[],"name":"creationDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"destroyDeed","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"registrar","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"value","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"previousOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newValue","type":"uint256"},{"name":"throwOnFailure","type":"bool"}],"name":"setBalance","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"refundRatio","type":"uint256"}],"name":"closeDeed","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newRegistrar","type":"address"}],"name":"setRegistrar","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_owner","type":"address"}],"payable":true,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"DeedClosed","type":"event"}] + """ + + public static var registrarABI = """ + [{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"releaseDeed","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"getAllowedTime","outputs":[{"name":"timestamp","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"unhashedName","type":"string"}],"name":"invalidateName","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"},{"name":"owner","type":"address"},{"name":"value","type":"uint256"},{"name":"salt","type":"bytes32"}],"name":"shaBid","outputs":[{"name":"sealedBid","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"bidder","type":"address"},{"name":"seal","type":"bytes32"}],"name":"cancelBid","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"entries","outputs":[{"name":"","type":"uint8"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ens","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_salt","type":"bytes32"}],"name":"unsealBid","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"transferRegistrars","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"sealedBids","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"newOwner","type":"address"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_timestamp","type":"uint256"}],"name":"isAllowed","outputs":[{"name":"allowed","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"finalizeAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"registryStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sealedBid","type":"bytes32"}],"name":"newBid","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"labels","type":"bytes32[]"}],"name":"eraseNode","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hashes","type":"bytes32[]"}],"name":"startAuctions","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"deed","type":"address"},{"name":"registrationDate","type":"uint256"}],"name":"acceptRegistrarTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"startAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rootNode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"hashes","type":"bytes32[]"},{"name":"sealedBid","type":"bytes32"}],"name":"startAuctionsAndBid","outputs":[],"payable":true,"type":"function"},{"inputs":[{"name":"_ens","type":"address"},{"name":"_rootNode","type":"bytes32"},{"name":"_startDate","type":"uint256"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"AuctionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"bidder","type":"address"},{"indexed":false,"name":"deposit","type":"uint256"}],"name":"NewBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"status","type":"uint8"}],"name":"BidRevealed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"HashRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"}],"name":"HashReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"name","type":"string"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"HashInvalidated","type":"event"}] + """ + //function setAddr(bytes32 node, address addr) public static var resolverABI = """ [ @@ -801,9 +4313,12 @@ extension Web3.Utils { /// Marshals the V, R and S signature parameters into a 65 byte recoverable EC signature. static func marshalSignature(v: UInt8, r: [UInt8], s: [UInt8]) -> Data? { guard r.count == 32, s.count == 32 else {return nil} - var completeSignature = Data(bytes: r) - completeSignature.append(Data(bytes: s)) - completeSignature.append(Data(bytes: [v])) + var completeSignature = Data(r) + completeSignature.append(Data(s)) + completeSignature.append(Data([v])) +// var completeSignature = Data(bytes: r) +// completeSignature.append(Data(bytes: s)) +// completeSignature.append(Data(bytes: [v])) return completeSignature } @@ -811,7 +4326,8 @@ extension Web3.Utils { static func marshalSignature(unmarshalledSignature: SECP256K1.UnmarshaledSignature) -> Data { var completeSignature = Data(unmarshalledSignature.r) completeSignature.append(Data(unmarshalledSignature.s)) - completeSignature.append(Data(bytes: [unmarshalledSignature.v])) +// completeSignature.append(Data(bytes: [unmarshalledSignature.v])) + completeSignature.append(Data([unmarshalledSignature.v])) return completeSignature } diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+WebsocketProvider.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+WebsocketProvider.swift new file mode 100644 index 000000000..6904a1115 --- /dev/null +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+WebsocketProvider.swift @@ -0,0 +1,252 @@ +// +// Web3+WebsocketProvider.swift +// web3swift-iOS +// +// Created by Anton on 01/04/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// +import Starscream +import PromiseKit +import BigInt +import Foundation + +public protocol IWebsocketProvider { + var socket: WebSocket {get} + var delegate: Web3SocketDelegate {get set} + func connectSocket() throws + func disconnectSocket() throws + func writeMessage(_ string: String) + func writeMessage(_ data: Data) +} + +public enum InfuraWebsocketMethod: String, Encodable { + + case newPendingTransactionFilter = "eth_newPendingTransactionFilter" + case getFilterChanges = "eth_getFilterChanges" + case newFilter = "eth_newFilter" + case newBlockFilter = "eth_newBlockFilter" + case getFilterLogs = "eth_getFilterLogs" + case uninstallFilter = "eth_uninstallFilter" + case subscribe = "eth_subscribe" + case unsubscribe = "eth_unsubscribe" + + public var requiredNumOfParameters: Int? { + get { + switch self { + case .newPendingTransactionFilter: + return 0 + case .getFilterChanges: + return 1 + case .newFilter: + return nil + case .newBlockFilter: + return 0 + case .getFilterLogs: + return nil + case .uninstallFilter: + return 1 + case .subscribe: + return nil + case .unsubscribe: + return 1 + } + } + } +} + +public struct InfuraWebsocketRequest: Encodable { + public var jsonrpc: String = "2.0" + public var method: InfuraWebsocketMethod? + public var params: JSONRPCparams? + public var id: UInt64 = Counter.increment() + + enum CodingKeys: String, CodingKey { + case jsonrpc + case method + case params + case id + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(jsonrpc, forKey: .jsonrpc) + try container.encode(method?.rawValue, forKey: .method) + try container.encode(params, forKey: .params) + try container.encode(id, forKey: .id) + } + + public var isValid: Bool { + get { + if self.method == nil { + return false + } + guard let method = self.method else {return false} + return method.requiredNumOfParameters == self.params?.params.count + } + } +} + +public protocol Web3SocketDelegate { + func received(message: Any) + func gotError(error: Error) +} + +/// The default websocket provider. +public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDelegate { + public func sendAsync(_ request: JSONRPCrequest, queue: DispatchQueue) -> Promise { + return Promise(error: Web3Error.inputError(desc: "Sending is unsupported for Websocket provider. Please, use \'sendMessage\'")) + } + + public func sendAsync(_ requests: JSONRPCrequestBatch, queue: DispatchQueue) -> Promise { + return Promise(error: Web3Error.inputError(desc: "Sending is unsupported for Websocket provider. Please, use \'sendMessage\'")) + } + + public var network: Networks? + public var url: URL + public var session: URLSession = {() -> URLSession in + let config = URLSessionConfiguration.default + let urlSession = URLSession(configuration: config) + return urlSession + }() + public var attachedKeystoreManager: KeystoreManager? = nil + + public var socket: WebSocket + public var delegate: Web3SocketDelegate + + public init?(_ endpoint: URL, + delegate wsdelegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil, + network net: Networks? = nil) { + delegate = wsdelegate + attachedKeystoreManager = manager + url = endpoint + socket = WebSocket(url: endpoint) + socket.delegate = self + let endpointString = endpoint.absoluteString + if !(endpointString.hasPrefix("wss://") || endpointString.hasPrefix("ws://")) { + return nil + } + if net == nil { + if endpointString.hasPrefix("wss://") && endpointString.hasSuffix(".infura.io/ws") { + let networkString = endpointString.replacingOccurrences(of: "wss://", with: "") + .replacingOccurrences(of: ".infura.io/ws", with: "") + switch networkString { + case "mainnet": + network = Networks.Mainnet + case "rinkeby": + network = Networks.Rinkeby + case "ropsten": + network = Networks.Ropsten + case "kovan": + network = Networks.Kovan + default: + break + } + } + } else { + network = net + } + } + + public init?(_ endpoint: String, + delegate wsdelegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil, + network net: Networks? = nil) { + guard let endpointUrl = URL(string: endpoint) else {return nil} + delegate = wsdelegate + attachedKeystoreManager = manager + url = endpointUrl + socket = WebSocket(url: endpointUrl) + socket.delegate = self + let endpointString = endpointUrl.absoluteString + if !(endpointString.hasPrefix("wss://") || endpointString.hasPrefix("ws://")) { + return nil + } + if net == nil { + if endpointString.hasPrefix("wss://") && endpointString.hasSuffix(".infura.io/ws") { + let networkString = endpointString.replacingOccurrences(of: "wss://", with: "") + .replacingOccurrences(of: ".infura.io/ws", with: "") + switch networkString { + case "mainnet": + network = Networks.Mainnet + case "rinkeby": + network = Networks.Rinkeby + case "ropsten": + network = Networks.Ropsten + case "kovan": + network = Networks.Kovan + default: + break + } + } + } else { + network = net + } + } + + public func connectSocket() { + socket.connect() + } + + public func disconnectSocket() { + socket.disconnect() + } + + public class func connectToSocket(_ endpoint: String, + delegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil, + network net: Networks? = nil) -> WebsocketProvider? { + guard let socketProvider = WebsocketProvider(endpoint, + delegate: delegate, + keystoreManager: manager, + network: net) else { + return nil + } + socketProvider.connectSocket() + return socketProvider + } + + public class func connectToSocket(_ endpoint: URL, + delegate: Web3SocketDelegate, + keystoreManager manager: KeystoreManager? = nil, + network net: Networks? = nil) -> WebsocketProvider? { + guard let socketProvider = WebsocketProvider(endpoint, + delegate: delegate, + keystoreManager: manager, + network: net) else { + return nil + } + socketProvider.connectSocket() + return socketProvider + } + + public func writeMessage(_ string: String) { + socket.write(string: string) + } + + public func writeMessage(_ data: Data) { + socket.write(data: data) + } + + public func websocketDidReceiveMessage(socket: WebSocketClient, text: String) { + print("got some text: \(text)") + delegate.received(message: text) + } + + public func websocketDidReceiveData(socket: WebSocketClient, data: Data) { + print("got some data: \(data.count)") + delegate.received(message: data) + } + + public func websocketDidConnect(socket: WebSocketClient) { + print("websocket is connected") + } + + public func websocketDidDisconnect(socket: WebSocketClient, error: Error?) { + print("websocket is disconnected with \(error?.localizedDescription ?? "no error")") + } + + public func websocketDidReceivePong(socket: WebSocketClient, data: Data?) { + print("Got pong! Maybe some data: \(String(describing: data?.count))") + } +} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3.swift index 0d8c25c35..b160d97fb 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3.swift @@ -51,8 +51,10 @@ public struct Web3 { /// Initialized provider-bound Web3 instance using a provider's URL. Under the hood it performs a synchronous call to get /// the Network ID for EIP155 purposes - public static func new(_ providerURL: URL) -> web3? { - guard let provider = Web3HttpProvider(providerURL) else {return nil} + public static func new(_ providerURL: URL) throws -> web3 { + guard let provider = Web3HttpProvider(providerURL) else { + throw Web3Error.inputError(desc: "Wrong provider - should be Web3HttpProvider with endpoint scheme http or https") + } return web3(provider: provider) } diff --git a/Example/web3swiftExample/web3swiftExample.xcodeproj/project.pbxproj b/Example/web3swiftExample/web3swiftExample.xcodeproj/project.pbxproj index 6493f2890..9cf3e07e0 100644 --- a/Example/web3swiftExample/web3swiftExample.xcodeproj/project.pbxproj +++ b/Example/web3swiftExample/web3swiftExample.xcodeproj/project.pbxproj @@ -12,11 +12,12 @@ 8161009F1FEC716200DE842E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8161009D1FEC716200DE842E /* Main.storyboard */; }; 816100A11FEC716200DE842E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 816100A01FEC716200DE842E /* Assets.xcassets */; }; 816100A41FEC716200DE842E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 816100A21FEC716200DE842E /* LaunchScreen.storyboard */; }; - 8CB49C7AD0EBC306C61CC9B8 /* Pods_web3swiftExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B053187B965D9441D3E02D10 /* Pods_web3swiftExample.framework */; }; + 858D8DA8D9296F256FB73506 /* Pods_web3swiftExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C05F37A08947931E98C476A7 /* Pods_web3swiftExample.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 4CFE41AE4F9BF0444FC1B745 /* Pods-web3swiftExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swiftExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig"; sourceTree = ""; }; + 169D4F886651CD5DB017CCCD /* Pods-web3swiftExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swiftExample.release.xcconfig"; path = "Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig"; sourceTree = ""; }; + 7DE64D7E8D8A56B340B6B045 /* Pods-web3swiftExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swiftExample.debug.xcconfig"; path = "Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig"; sourceTree = ""; }; 816100961FEC716200DE842E /* web3swiftExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = web3swiftExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 816100991FEC716200DE842E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 8161009B1FEC716200DE842E /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -24,8 +25,7 @@ 816100A01FEC716200DE842E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 816100A31FEC716200DE842E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 816100A51FEC716200DE842E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B053187B965D9441D3E02D10 /* Pods_web3swiftExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swiftExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C0EB3BE374711CB51E18CB79 /* Pods-web3swiftExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swiftExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig"; sourceTree = ""; }; + C05F37A08947931E98C476A7 /* Pods_web3swiftExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swiftExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -33,28 +33,20 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8CB49C7AD0EBC306C61CC9B8 /* Pods_web3swiftExample.framework in Frameworks */, + 858D8DA8D9296F256FB73506 /* Pods_web3swiftExample.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 4A3F662CD627713756000001 /* Pods */ = { + 0D4531D2BD193B4D967865E6 /* Pods */ = { isa = PBXGroup; children = ( - 4CFE41AE4F9BF0444FC1B745 /* Pods-web3swiftExample.debug.xcconfig */, - C0EB3BE374711CB51E18CB79 /* Pods-web3swiftExample.release.xcconfig */, + 7DE64D7E8D8A56B340B6B045 /* Pods-web3swiftExample.debug.xcconfig */, + 169D4F886651CD5DB017CCCD /* Pods-web3swiftExample.release.xcconfig */, ); - name = Pods; - sourceTree = ""; - }; - 4F93E318F4D80C753C8F7B7D /* Frameworks */ = { - isa = PBXGroup; - children = ( - B053187B965D9441D3E02D10 /* Pods_web3swiftExample.framework */, - ); - name = Frameworks; + path = Pods; sourceTree = ""; }; 8161008D1FEC716200DE842E = { @@ -62,8 +54,8 @@ children = ( 816100981FEC716200DE842E /* web3swiftExample */, 816100971FEC716200DE842E /* Products */, - 4A3F662CD627713756000001 /* Pods */, - 4F93E318F4D80C753C8F7B7D /* Frameworks */, + 0D4531D2BD193B4D967865E6 /* Pods */, + FE99A9CF2401F11FD4266139 /* Frameworks */, ); sourceTree = ""; }; @@ -88,6 +80,14 @@ path = web3swiftExample; sourceTree = ""; }; + FE99A9CF2401F11FD4266139 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C05F37A08947931E98C476A7 /* Pods_web3swiftExample.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -95,11 +95,11 @@ isa = PBXNativeTarget; buildConfigurationList = 816100A81FEC716200DE842E /* Build configuration list for PBXNativeTarget "web3swiftExample" */; buildPhases = ( - 425988AD252956B4859F5E7B /* [CP] Check Pods Manifest.lock */, + F8AFA40FC50B9CA7EAEEEB65 /* [CP] Check Pods Manifest.lock */, 816100921FEC716200DE842E /* Sources */, 816100931FEC716200DE842E /* Frameworks */, 816100941FEC716200DE842E /* Resources */, - BAF3286D39301B6E0F0D664E /* [CP] Embed Pods Frameworks */, + 244461CC87802A61A799D271 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -158,31 +158,11 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 425988AD252956B4859F5E7B /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-web3swiftExample-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - BAF3286D39301B6E0F0D664E /* [CP] Embed Pods Frameworks */ = { + 244461CC87802A61A799D271 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh", "${BUILT_PRODUCTS_DIR}/BigInt/BigInt.framework", @@ -191,14 +171,12 @@ "${BUILT_PRODUCTS_DIR}/EthereumAddress/EthereumAddress.framework", "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework", "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework", + "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework", "${BUILT_PRODUCTS_DIR}/SwiftRLP/SwiftRLP.framework", - "${BUILT_PRODUCTS_DIR}/scrypt/scrypt.framework", "${BUILT_PRODUCTS_DIR}/secp256k1_swift/secp256k1_swift.framework", "${BUILT_PRODUCTS_DIR}/web3swift/Web3swift.framework", ); name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - ); outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BigInt.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CryptoSwift.framework", @@ -206,8 +184,8 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EthereumAddress.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PromiseKit.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SipHash.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Starscream.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftRLP.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/scrypt.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1_swift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Web3swift.framework", ); @@ -216,6 +194,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + F8AFA40FC50B9CA7EAEEEB65 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-web3swiftExample-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -306,6 +306,7 @@ SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -357,13 +358,14 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; }; name = Release; }; 816100A91FEC716200DE842E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4CFE41AE4F9BF0444FC1B745 /* Pods-web3swiftExample.debug.xcconfig */; + baseConfigurationReference = 7DE64D7E8D8A56B340B6B045 /* Pods-web3swiftExample.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; @@ -373,14 +375,14 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = org.bankexfoundation.web3swiftExample; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 816100AA1FEC716200DE842E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C0EB3BE374711CB51E18CB79 /* Pods-web3swiftExample.release.xcconfig */; + baseConfigurationReference = 169D4F886651CD5DB017CCCD /* Pods-web3swiftExample.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; @@ -390,7 +392,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = org.bankexfoundation.web3swiftExample; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; diff --git a/Example/web3swiftExample/web3swiftExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/web3swiftExample/web3swiftExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/Example/web3swiftExample/web3swiftExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/web3swiftExample/web3swiftExample/AppDelegate.swift b/Example/web3swiftExample/web3swiftExample/AppDelegate.swift index 50ba40976..db57e8cd1 100755 --- a/Example/web3swiftExample/web3swiftExample/AppDelegate.swift +++ b/Example/web3swiftExample/web3swiftExample/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } diff --git a/Example/web3swiftExample/web3swiftExample/ViewController.swift b/Example/web3swiftExample/web3swiftExample/ViewController.swift index 75076c272..71016e97b 100755 --- a/Example/web3swiftExample/web3swiftExample/ViewController.swift +++ b/Example/web3swiftExample/web3swiftExample/ViewController.swift @@ -8,10 +8,23 @@ import UIKit import BigInt -import web3swift +import Web3swift import Foundation +import EthereumABI +import EthereumAddress +import BigInt -class ViewController: UIViewController { +class ViewController: UIViewController, Web3SocketDelegate { + + func received(message: Any) { + print(message) + } + + func gotError(error: Error) { + print(error) + } + + var socketProvider: InfuraWebsocketProvider? = nil @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { @@ -28,7 +41,7 @@ class ViewController: UIViewController { let keydata = try! JSONEncoder().encode(ks!.keystoreParams) FileManager.default.createFile(atPath: userDir + "/keystore"+"/key.json", contents: keydata, attributes: nil) } else { - ks = keystoreManager?.walletForAddress((keystoreManager?.addresses![0])!) as! EthereumKeystoreV3 + ks = keystoreManager?.walletForAddress((keystoreManager?.addresses![0])!) as? EthereumKeystoreV3 } guard let sender = ks?.addresses?.first else {return} print(sender) @@ -41,7 +54,7 @@ class ViewController: UIViewController { let keydata = try! JSONEncoder().encode(bip32ks!.keystoreParams) FileManager.default.createFile(atPath: userDir + "/bip32_keystore"+"/key.json", contents: keydata, attributes: nil) } else { - bip32ks = bip32keystoreManager?.walletForAddress((bip32keystoreManager?.addresses![0])!) as! BIP32Keystore + bip32ks = bip32keystoreManager?.walletForAddress((bip32keystoreManager?.addresses![0])!) as? BIP32Keystore } guard let bip32sender = bip32ks?.addresses?.first else {return} print(bip32sender) @@ -51,124 +64,33 @@ class ViewController: UIViewController { let web3Main = Web3.InfuraMainnetWeb3() let coldWalletAddress = EthereumAddress("0x6394b37Cf80A7358b38068f0CA4760ad49983a1B")! let constractAddress = EthereumAddress("0x45245bc59219eeaaf6cd3f382e078a461ff9de7b")! - let gasPriceResult = web3Main.eth.getGasPrice() - guard case .success(let gasPrice) = gasPriceResult else {return} - var options = Web3Options.defaultOptions() - options.gasPrice = gasPrice + let gasPriceResult = try! web3Main.eth.getGasPrice() + var options = TransactionOptions.defaultOptions + options.gasPrice = .manual(gasPriceResult) options.from = EthereumAddress("0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d")! let parameters = [] as [AnyObject] web3Main.addKeystoreManager(keystoreManager) let contract = web3Main.contract(jsonString, at: constractAddress, abiVersion: 2)! - let intermediate = contract.method("name", parameters:parameters, options: options) - guard let tokenNameRes = intermediate?.call(options: options) else {return} - guard case .success(let result) = tokenNameRes else {return} - print("BKX token name = " + (result["0"] as! String)) + let tx1 = contract.read("name", parameters: parameters, extraData: Data(), transactionOptions: options)! + let result1 = try! tx1.call(transactionOptions: options) + print("BKX token name = " + (result1["0"] as! String)) - guard let bkxBalanceResult = contract.method("balanceOf", parameters: [coldWalletAddress] as [AnyObject], options: options)?.call(options: nil) else {return} - guard case .success(let bkxBalance) = bkxBalanceResult, let bal = bkxBalance["0"] as? BigUInt else {return} - print("BKX token balance = " + String(bal)) - - // Test token transfer on Rinkeby - + let tx2 = contract.read("balanceOf", parameters: [coldWalletAddress] as [AnyObject], extraData: Data(), transactionOptions: options)! + let result2 = try! tx2.call(transactionOptions: options) + print("BKX token balance = " + String(result2["0"] as! BigUInt)) - var eip67Data = Web3.EIP67Code.init(address: EthereumAddress("0x6394b37Cf80A7358b38068f0CA4760ad49983a1B")!) - eip67Data.gasLimit = BigUInt(21000) - eip67Data.amount = BigUInt("1000000000000000000") - // eip67Data.data = - let encoding = eip67Data.toImage(scale: 10.0) - self.imageView.image = UIImage(ciImage: encoding) - self.imageView.contentMode = .scaleAspectFit - - //Send on Rinkeby using normal keystore + //Balance on Rinkeby let web3Rinkeby = Web3.InfuraRinkebyWeb3() web3Rinkeby.addKeystoreManager(keystoreManager) - let coldWalletABI = "[{\"payable\":true,\"type\":\"fallback\"}]" - options = Web3Options.defaultOptions() - options.gasLimit = BigUInt(21000) - options.from = ks?.addresses?.first! - options.value = BigUInt(1000000000000000) - options.from = sender - let estimatedGasResult = web3Rinkeby.contract(coldWalletABI, at: coldWalletAddress)!.method(options: options)!.estimateGas(options: nil) - guard case .success(let estimatedGas) = estimatedGasResult else {return} - options.gasLimit = estimatedGas - var intermediateSend = web3Rinkeby.contract(coldWalletABI, at: coldWalletAddress, abiVersion: 2)!.method(options: options)! - let sendResult = intermediateSend.send(password: "BANKEXFOUNDATION") -// let derivedSender = intermediateSend.transaction.sender -// if (derivedSender?.address != sender.address) { -// print(derivedSender!.address) -// print(sender.address) -// print("Address mismatch") -// } - guard case .success(let sendingResult) = sendResult else {return} - let txid = sendingResult.hash - print("On Rinkeby TXid = " + txid) - - //Send ETH on Rinkeby using BIP32 keystore. Should fail due to insufficient balance - web3Rinkeby.addKeystoreManager(bip32keystoreManager) - options.from = bip32ks?.addresses?.first! - intermediateSend = web3Rinkeby.contract(coldWalletABI, at: coldWalletAddress, abiVersion: 2)!.method(options: options)! - let sendResultBip32 = intermediateSend.send(password: "BANKEXFOUNDATION") - switch sendResultBip32 { - case .success(let r): - print(r) - case .failure(let err): - print(err) - } - - //Send ERC20 token on Rinkeby - guard case .success(let gasPriceRinkeby) = web3Rinkeby.eth.getGasPrice() else {return} - web3Rinkeby.addKeystoreManager(keystoreManager) - var tokenTransferOptions = Web3Options.defaultOptions() - tokenTransferOptions.gasPrice = gasPriceRinkeby - tokenTransferOptions.from = ks?.addresses?.first! - let testToken = web3Rinkeby.contract(Web3.Utils.erc20ABI, at: EthereumAddress("0xa407dd0cbc9f9d20cdbd557686625e586c85b20a")!, abiVersion: 2)! - let intermediateForTokenTransfer = testToken.method("transfer", parameters: [EthereumAddress("0x6394b37Cf80A7358b38068f0CA4760ad49983a1B")!, BigUInt(1)] as [AnyObject], options: tokenTransferOptions)! - let gasEstimateResult = intermediateForTokenTransfer.estimateGas(options: nil) - guard case .success(let gasEstimate) = gasEstimateResult else {return} - var optionsWithCustomGasLimit = Web3Options() - optionsWithCustomGasLimit.gasLimit = gasEstimate - let tokenTransferResult = intermediateForTokenTransfer.send(password: "BANKEXFOUNDATION", options: optionsWithCustomGasLimit) - switch tokenTransferResult { - case .success(let res): - print("Token transfer successful") - print(res) - case .failure(let error): - print(error) - } - - //Send ERC20 on Rinkeby using a convenience function - var convenienceTransferOptions = Web3Options.defaultOptions() - convenienceTransferOptions.gasPrice = gasPriceRinkeby - let convenienceTokenTransfer = web3Rinkeby.eth.sendERC20tokensWithNaturalUnits(tokenAddress: EthereumAddress("0xa407dd0cbc9f9d20cdbd557686625e586c85b20a")!, from: (ks?.addresses?.first!)!, to: EthereumAddress("0x6394b37Cf80A7358b38068f0CA4760ad49983a1B")!, amount: "0.0001", options: convenienceTransferOptions) - let gasEstimateResult2 = convenienceTokenTransfer!.estimateGas(options: nil) - guard case .success(let gasEstimate2) = gasEstimateResult2 else {return} - convenienceTransferOptions.gasLimit = gasEstimate2 - let convenienceTransferResult = convenienceTokenTransfer!.send(password: "BANKEXFOUNDATION", options: convenienceTransferOptions) - switch convenienceTransferResult { - case .success(let res): - print("Token transfer successful") - print(res) - case .failure(let error): - print(error) - } - - //Balance on Rinkeby - let balanceResult = web3Rinkeby.eth.getBalance(address: coldWalletAddress) - guard case .success(let balance) = balanceResult else {return} - print("Balance of " + coldWalletAddress.address + " = " + String(balance)) + let balanceResult = try! web3Rinkeby.eth.getBalance(address: coldWalletAddress) + print("Balance of " + coldWalletAddress.address + " = " + String(balanceResult)) -// Send mutating transaction taking parameters - let testABIonRinkeby = "[{\"constant\":true,\"inputs\":[],\"name\":\"counter\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_value\",\"type\":\"uint8\"}],\"name\":\"increaseCounter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" - let deployedTestAddress = EthereumAddress("0x1e528b190b6acf2d7c044141df775c7a79d68eba")! - options = Web3Options.defaultOptions() - options.gasLimit = BigUInt(100000) - options.value = BigUInt(0) - options.from = ks?.addresses![0] - let testParameters = [BigUInt(1)] as [AnyObject] - let testMutationResult = web3Rinkeby.contract(testABIonRinkeby, at: deployedTestAddress, abiVersion: 2)?.method("increaseCounter", parameters: testParameters, options: options)?.send(password: "BANKEXFOUNDATION") - print(testMutationResult) + // Get pending txs + socketProvider = InfuraWebsocketProvider.connectToInfuraSocket(.Mainnet, delegate: self) + sleep(1) + try! socketProvider!.subscribeOnNewPendingTransactions() } override func didReceiveMemoryWarning() { diff --git a/TestToken/Helpers/TokenBasics/.DS_Store b/TestToken/Helpers/TokenBasics/.DS_Store deleted file mode 100755 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Mon, 15 Apr 2019 20:05:43 +0300 Subject: [PATCH 02/19] removed Class folders, added ENS Base Registrar, changed content hash for InterfaceName in ENSResolver --- web3swift.podspec | 2 +- web3swift.xcodeproj/project.pbxproj | 124 +++++++----------- .../{Classes => }/ComparisonExtensions.swift | 0 .../{Classes => }/ContractProtocol.swift | 0 .../{Classes => }/EthereumContract.swift | 0 .../EthereumFilterEncodingExtensions.swift | 0 .../{Classes => }/EventFiltering.swift | 0 .../{Classes => }/Array+Extension.swift | 0 .../Convenience/{Classes => }/Base58.swift | 0 .../{Classes => }/BigUInt+Extensions.swift | 0 .../{Classes => }/CryptoExtensions.swift | 0 .../{Classes => }/Data+Extension.swift | 0 .../{Classes => }/Dictionary+Extension.swift | 0 .../NSRegularExpressionExtension.swift | 0 .../NativeTypesEncoding+Extensions.swift | 0 .../RIPEMD160+StackOveflow.swift | 0 .../{Classes => }/String+Extension.swift | 0 .../{Classes => }/Web3+BrowserFunctions.swift | 0 .../{Classes => }/Web3+Wallet.swift | 0 .../{Classes => }/AbstractKeystore.swift | 0 .../{Classes => }/BIP32HDNode.swift | 0 .../{Classes => }/BIP32Keystore.swift | 0 .../BIP32KeystoreJSONStructure.swift | 0 .../{Classes => }/BIP39+WordLists.swift | 0 .../KeystoreManager/{Classes => }/BIP39.swift | 0 .../{Classes => }/EthereumKeystoreV3.swift | 0 .../KeystoreManager/{Classes => }/IBAN.swift | 0 .../{Classes => }/KeystoreManager.swift | 0 .../KeystoreV3JSONStructure.swift | 0 .../{Classes => }/PlainKeystore.swift | 0 .../{Classes => }/Promise+Batching.swift | 0 .../{Classes => }/Promise+HttpProvider.swift | 0 ...omise+Web3+Contract+GetIndexedEvents.swift | 0 .../{Classes => }/Promise+Web3+Eth+Call.swift | 0 .../Promise+Web3+Eth+EstimateGas.swift | 0 .../Promise+Web3+Eth+GetAccounts.swift | 0 .../Promise+Web3+Eth+GetBalance.swift | 0 .../Promise+Web3+Eth+GetBlockByHash.swift | 0 .../Promise+Web3+Eth+GetBlockByNumber.swift | 0 .../Promise+Web3+Eth+GetBlockNumber.swift | 0 .../Promise+Web3+Eth+GetGasPrice.swift | 0 ...Promise+Web3+Eth+GetTransactionCount.swift | 0 ...omise+Web3+Eth+GetTransactionDetails.swift | 0 ...omise+Web3+Eth+GetTransactionReceipt.swift | 0 .../Promise+Web3+Eth+SendRawTransaction.swift | 0 .../Promise+Web3+Eth+SendTransaction.swift | 0 .../Promise+Web3+Personal+CreateAccount.swift | 0 .../Promise+Web3+Personal+Sign.swift | 0 .../Promise+Web3+Personal+UnlockAccount.swift | 0 .../{Classes => }/Promise+Web3+TxPool.swift | 0 .../ERC1155/Web3+ERC1155.swift | 0 .../ERC1376/Web3+ERC1376.swift | 0 .../ERC1400/Web3+ERC1400.swift | 0 .../ERC1410/Web3+ERC1410.swift | 0 .../ERC1594/Web3+ERC1594.swift | 0 .../ERC1633/Web3+ERC1633.swift | 0 .../ERC1643/Web3+ERC1643.swift | 0 .../ERC1644/Web3+ERC1644.swift | 0 .../ERC165/Web3+ERC165.swift | 0 .../ERC20/Web3+ERC20.swift | 0 .../ERC721/Web3+ERC721.swift | 24 ++++ .../ERC721x/Web3+ERC721x.swift | 20 +++ .../ERC777/Web3+ERC777.swift | 0 .../ERC820/Web3+ERC820.swift | 0 .../ERC888/Web3+ERC888.swift | 0 .../ST20/Web3+ST20.swift | 0 .../ST20/Web3+SecurityToken.swift | 0 .../{Classes => }/BloomFilter.swift | 0 .../{Classes => }/EthereumTransaction.swift | 0 .../{Classes => }/TransactionSigner.swift | 0 .../Utils/{Classes => EIP}/EIP67Code.swift | 0 web3swift/Utils/{Classes => EIP}/EIP681.swift | 0 web3swift/Utils/ENS/BaseRegistrar.swift | 73 +++++++++++ web3swift/Utils/{Classes => ENS}/ENS.swift | 0 .../Utils/{Classes => ENS}/ENSResolver.swift | 12 +- .../Utils/{Classes => ENS}/NameHash.swift | 0 web3swift/Utils/ENS/RegistrarController.swift | 9 ++ .../{Classes => Hooks}/NonceMiddleware.swift | 0 .../Web3/{Classes => }/Web3+Contract.swift | 0 .../{Classes => }/Web3+Eth+Websocket.swift | 0 web3swift/Web3/{Classes => }/Web3+Eth.swift | 0 .../Web3/{Classes => }/Web3+EventParser.swift | 0 .../Web3/{Classes => }/Web3+Eventloop.swift | 0 .../{Classes => }/Web3+HttpProvider.swift | 0 .../{Classes => }/Web3+InfuraProviders.swift | 0 .../Web3/{Classes => }/Web3+Instance.swift | 0 .../Web3/{Classes => }/Web3+JSONRPC.swift | 0 .../Web3/{Classes => }/Web3+Methods.swift | 0 .../Web3+MutatingTransaction.swift | 0 .../Web3/{Classes => }/Web3+Options.swift | 0 .../Web3/{Classes => }/Web3+Personal.swift | 0 .../Web3/{Classes => }/Web3+Protocols.swift | 0 .../Web3+ReadingTransaction.swift | 0 .../Web3/{Classes => }/Web3+Structures.swift | 0 .../Web3/{Classes => }/Web3+TxPool.swift | 0 web3swift/Web3/{Classes => }/Web3+Utils.swift | 0 .../Web3+WebsocketProvider.swift | 0 web3swift/Web3/{Classes => }/Web3.swift | 0 98 files changed, 183 insertions(+), 81 deletions(-) rename web3swift/Contract/{Classes => }/ComparisonExtensions.swift (100%) rename web3swift/Contract/{Classes => }/ContractProtocol.swift (100%) rename web3swift/Contract/{Classes => }/EthereumContract.swift (100%) rename web3swift/Contract/{Classes => }/EthereumFilterEncodingExtensions.swift (100%) rename web3swift/Contract/{Classes => }/EventFiltering.swift (100%) rename web3swift/Convenience/{Classes => }/Array+Extension.swift (100%) rename web3swift/Convenience/{Classes => }/Base58.swift (100%) rename web3swift/Convenience/{Classes => }/BigUInt+Extensions.swift (100%) rename web3swift/Convenience/{Classes => }/CryptoExtensions.swift (100%) rename web3swift/Convenience/{Classes => }/Data+Extension.swift (100%) rename web3swift/Convenience/{Classes => }/Dictionary+Extension.swift (100%) rename web3swift/Convenience/{Classes => }/NSRegularExpressionExtension.swift (100%) rename web3swift/Convenience/{Classes => }/NativeTypesEncoding+Extensions.swift (100%) rename web3swift/Convenience/{Classes => }/RIPEMD160+StackOveflow.swift (100%) rename web3swift/Convenience/{Classes => }/String+Extension.swift (100%) rename web3swift/HookedFunctions/{Classes => }/Web3+BrowserFunctions.swift (100%) rename web3swift/HookedFunctions/{Classes => }/Web3+Wallet.swift (100%) rename web3swift/KeystoreManager/{Classes => }/AbstractKeystore.swift (100%) rename web3swift/KeystoreManager/{Classes => }/BIP32HDNode.swift (100%) rename web3swift/KeystoreManager/{Classes => }/BIP32Keystore.swift (100%) rename web3swift/KeystoreManager/{Classes => }/BIP32KeystoreJSONStructure.swift (100%) rename web3swift/KeystoreManager/{Classes => }/BIP39+WordLists.swift (100%) rename web3swift/KeystoreManager/{Classes => }/BIP39.swift (100%) rename web3swift/KeystoreManager/{Classes => }/EthereumKeystoreV3.swift (100%) rename web3swift/KeystoreManager/{Classes => }/IBAN.swift (100%) rename web3swift/KeystoreManager/{Classes => }/KeystoreManager.swift (100%) rename web3swift/KeystoreManager/{Classes => }/KeystoreV3JSONStructure.swift (100%) rename web3swift/KeystoreManager/{Classes => }/PlainKeystore.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Batching.swift (100%) rename web3swift/Promises/{Classes => }/Promise+HttpProvider.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Contract+GetIndexedEvents.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+Call.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+EstimateGas.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetAccounts.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetBalance.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetBlockByHash.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetBlockByNumber.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetBlockNumber.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetGasPrice.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetTransactionCount.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetTransactionDetails.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+GetTransactionReceipt.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+SendRawTransaction.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Eth+SendTransaction.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Personal+CreateAccount.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Personal+Sign.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+Personal+UnlockAccount.swift (100%) rename web3swift/Promises/{Classes => }/Promise+Web3+TxPool.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC1155/Web3+ERC1155.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC1376/Web3+ERC1376.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC1400/Web3+ERC1400.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC1410/Web3+ERC1410.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC1594/Web3+ERC1594.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC1633/Web3+ERC1633.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC1643/Web3+ERC1643.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC1644/Web3+ERC1644.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC165/Web3+ERC165.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC20/Web3+ERC20.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC721/Web3+ERC721.swift (90%) rename web3swift/{PrecompiledContracts => Tokens}/ERC721x/Web3+ERC721x.swift (94%) rename web3swift/{PrecompiledContracts => Tokens}/ERC777/Web3+ERC777.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC820/Web3+ERC820.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ERC888/Web3+ERC888.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ST20/Web3+ST20.swift (100%) rename web3swift/{PrecompiledContracts => Tokens}/ST20/Web3+SecurityToken.swift (100%) rename web3swift/Transaction/{Classes => }/BloomFilter.swift (100%) rename web3swift/Transaction/{Classes => }/EthereumTransaction.swift (100%) rename web3swift/Transaction/{Classes => }/TransactionSigner.swift (100%) rename web3swift/Utils/{Classes => EIP}/EIP67Code.swift (100%) rename web3swift/Utils/{Classes => EIP}/EIP681.swift (100%) create mode 100644 web3swift/Utils/ENS/BaseRegistrar.swift rename web3swift/Utils/{Classes => ENS}/ENS.swift (100%) rename web3swift/Utils/{Classes => ENS}/ENSResolver.swift (99%) rename web3swift/Utils/{Classes => ENS}/NameHash.swift (100%) create mode 100644 web3swift/Utils/ENS/RegistrarController.swift rename web3swift/Utils/{Classes => Hooks}/NonceMiddleware.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Contract.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Eth+Websocket.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Eth.swift (100%) rename web3swift/Web3/{Classes => }/Web3+EventParser.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Eventloop.swift (100%) rename web3swift/Web3/{Classes => }/Web3+HttpProvider.swift (100%) rename web3swift/Web3/{Classes => }/Web3+InfuraProviders.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Instance.swift (100%) rename web3swift/Web3/{Classes => }/Web3+JSONRPC.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Methods.swift (100%) rename web3swift/Web3/{Classes => }/Web3+MutatingTransaction.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Options.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Personal.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Protocols.swift (100%) rename web3swift/Web3/{Classes => }/Web3+ReadingTransaction.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Structures.swift (100%) rename web3swift/Web3/{Classes => }/Web3+TxPool.swift (100%) rename web3swift/Web3/{Classes => }/Web3+Utils.swift (100%) rename web3swift/Web3/{Classes => }/Web3+WebsocketProvider.swift (100%) rename web3swift/Web3/{Classes => }/Web3.swift (100%) diff --git a/web3swift.podspec b/web3swift.podspec index 2bdcd4bc3..fbb0fbe7c 100755 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -17,7 +17,7 @@ s.swift_version = '5.0' s.module_name = 'Web3swift' s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.11" -s.source_files = "web3swift/{Promises,Web3,Contract,KeystoreManager,Transaction,Convenience,HookedFunctions}/Classes/*.{h,swift}", "web3swift/Utils/Classes/{EIP67Code, EIP681, ENS, ENSResolver, NonceMiddleware}.swift", "web3swift/PrecompiledContracts/**/*.swift", "web3swift/web3swift.h" +s.source_files = "web3swift/{Promises,Web3,Contract,KeystoreManager,Transaction,Convenience,HookedFunctions}/*.{h,swift}", "web3swift/Utils/**/*.swift" "web3swift/PrecompiledContracts/**/*.swift", "web3swift/web3swift.h" s.public_header_files = "web3swift/web3swift.h" s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 9e7ed0962..c9462e14a 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -18,6 +18,12 @@ 3A3F59BD225931BE0075C9E7 /* NameHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2502143C3A8004CD2C7 /* NameHash.swift */; }; 3A3F59BE225931BE0075C9E7 /* ENS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2E668CD214F8A7B00C3CC2D /* ENS.swift */; }; 3A3F59BF225931BE0075C9E7 /* ENSResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B219DC162154F3EE0035BF94 /* ENSResolver.swift */; }; + 3A52CCB22264A6D4001C8D7A /* NonceMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81ED4EA72190D922003E932E /* NonceMiddleware.swift */; }; + 3A52CCB32264A6DC001C8D7A /* NonceMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81ED4EA72190D922003E932E /* NonceMiddleware.swift */; }; + 3A52CCB72264B712001C8D7A /* BaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */; }; + 3A52CCB82264B712001C8D7A /* BaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */; }; + 3A52CCBA2264B728001C8D7A /* RegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* RegistrarController.swift */; }; + 3A52CCBB2264B728001C8D7A /* RegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* RegistrarController.swift */; }; 3AE8913C2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; 3AE8913D2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; 3AE8913E2256286C00D08E99 /* Web3+ERC1376.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */; }; @@ -258,6 +264,8 @@ 2B8FEFF3962166E1BEADC886 /* Pods_web3swift_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 342700493511FEB189700D13 /* Pods-web3swift-iOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig"; sourceTree = ""; }; 391A0D2EF42488E5C8AB2F71 /* Pods_web3swift_osx_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_osx_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseRegistrar.swift; sourceTree = ""; }; + 3A52CCB92264B728001C8D7A /* RegistrarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegistrarController.swift; sourceTree = ""; }; 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1155.swift"; sourceTree = ""; }; 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1376.swift"; sourceTree = ""; }; 3AE891202256286B00D08E99 /* Web3+ERC888.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC888.swift"; sourceTree = ""; }; @@ -469,7 +477,7 @@ 1CD91AFE1FD76910007BFB45 /* web3swift */ = { isa = PBXGroup; children = ( - 8159C50921343EF900197B91 /* PrecompiledContracts */, + 8159C50921343EF900197B91 /* Tokens */, 81FECD43211ADE20006DA367 /* ObjectiveCbridge */, 81A1821220D5A2430016741F /* Promises */, 81C0FCED20440BDF00D82FAF /* HookedFunctions */, @@ -515,6 +523,27 @@ path = web3swiftTests; sourceTree = ""; }; + 3A52CCB42264A938001C8D7A /* ENS */ = { + isa = PBXGroup; + children = ( + 81A7B2502143C3A8004CD2C7 /* NameHash.swift */, + B2E668CD214F8A7B00C3CC2D /* ENS.swift */, + B219DC162154F3EE0035BF94 /* ENSResolver.swift */, + 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */, + 3A52CCB92264B728001C8D7A /* RegistrarController.swift */, + ); + path = ENS; + sourceTree = ""; + }; + 3A52CCB52264A9E1001C8D7A /* EIP */ = { + isa = PBXGroup; + children = ( + 81FB21F8207BA78B007F9A83 /* EIP67Code.swift */, + 81A7B2862143DBF6004CD2C7 /* EIP681.swift */, + ); + path = EIP; + sourceTree = ""; + }; 3AE8911B2256286B00D08E99 /* ERC1155 */ = { isa = PBXGroup; children = ( @@ -674,33 +703,22 @@ 8113D2AE1FD7E1590074282C /* Utils */ = { isa = PBXGroup; children = ( - 8113D2AF1FD7E1590074282C /* Classes */, + 3A52CCB52264A9E1001C8D7A /* EIP */, + 3A52CCB42264A938001C8D7A /* ENS */, + 8113D2AF1FD7E1590074282C /* Hooks */, ); path = Utils; sourceTree = ""; }; - 8113D2AF1FD7E1590074282C /* Classes */ = { + 8113D2AF1FD7E1590074282C /* Hooks */ = { isa = PBXGroup; children = ( - 81FB21F8207BA78B007F9A83 /* EIP67Code.swift */, - 81A7B2502143C3A8004CD2C7 /* NameHash.swift */, - 81A7B2862143DBF6004CD2C7 /* EIP681.swift */, - B2E668CD214F8A7B00C3CC2D /* ENS.swift */, - B219DC162154F3EE0035BF94 /* ENSResolver.swift */, 81ED4EA72190D922003E932E /* NonceMiddleware.swift */, ); - path = Classes; + path = Hooks; sourceTree = ""; }; 8113D2B51FD7E1590074282C /* KeystoreManager */ = { - isa = PBXGroup; - children = ( - 8113D2B71FD7E1590074282C /* Classes */, - ); - path = KeystoreManager; - sourceTree = ""; - }; - 8113D2B71FD7E1590074282C /* Classes */ = { isa = PBXGroup; children = ( 817EBB2420066E2B00E02EAA /* AbstractKeystore.swift */, @@ -715,28 +733,20 @@ 8103BBCB2077B84400499769 /* PlainKeystore.swift */, 8160E5CD20B8245A0070070B /* IBAN.swift */, ); - path = Classes; + path = KeystoreManager; sourceTree = ""; }; 8113D2C11FD7E1590074282C /* Transaction */ = { - isa = PBXGroup; - children = ( - 8113D2C21FD7E1590074282C /* Classes */, - ); - path = Transaction; - sourceTree = ""; - }; - 8113D2C21FD7E1590074282C /* Classes */ = { isa = PBXGroup; children = ( 8113D2C31FD7E1590074282C /* EthereumTransaction.swift */, 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */, 8125F06820499AC300A0F2FE /* BloomFilter.swift */, ); - path = Classes; + path = Transaction; sourceTree = ""; }; - 8159C50921343EF900197B91 /* PrecompiledContracts */ = { + 8159C50921343EF900197B91 /* Tokens */ = { isa = PBXGroup; children = ( 3AE891262256286B00D08E99 /* ERC20 */, @@ -756,18 +766,10 @@ 3AE8912A2256286B00D08E99 /* ERC1644 */, 3AE891212256286B00D08E99 /* ST20 */, ); - path = PrecompiledContracts; + path = Tokens; sourceTree = ""; }; 818EABD71FDC9A3800E013FC /* Contract */ = { - isa = PBXGroup; - children = ( - 818EABD81FDC9A4800E013FC /* Classes */, - ); - path = Contract; - sourceTree = ""; - }; - 818EABD81FDC9A4800E013FC /* Classes */ = { isa = PBXGroup; children = ( 81C5DA2D2074EBF500424CD6 /* EthereumContract.swift */, @@ -776,18 +778,10 @@ 81D7D97420A3240900A193EC /* EthereumFilterEncodingExtensions.swift */, 81D7D97720A61E3800A193EC /* EventFiltering.swift */, ); - path = Classes; + path = Contract; sourceTree = ""; }; 81A1821220D5A2430016741F /* Promises */ = { - isa = PBXGroup; - children = ( - 81A1821320D5A24F0016741F /* Classes */, - ); - path = Promises; - sourceTree = ""; - }; - 81A1821320D5A24F0016741F /* Classes */ = { isa = PBXGroup; children = ( 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */, @@ -811,18 +805,10 @@ 81195AAF20D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift */, 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */, ); - path = Classes; + path = Promises; sourceTree = ""; }; 81C0FCEA20440BB400D82FAF /* Web3 */ = { - isa = PBXGroup; - children = ( - 81C0FCEB20440BBE00D82FAF /* Classes */, - ); - path = Web3; - sourceTree = ""; - }; - 81C0FCEB20440BBE00D82FAF /* Classes */ = { isa = PBXGroup; children = ( 81DDECCE1FDF004E0063684A /* Web3.swift */, @@ -846,24 +832,16 @@ 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */, 3AE891602256611E00D08E99 /* Web3+Eth+Websocket.swift */, ); - path = Classes; + path = Web3; sourceTree = ""; }; 81C0FCED20440BDF00D82FAF /* HookedFunctions */ = { - isa = PBXGroup; - children = ( - 81C0FCEE20440BE900D82FAF /* Classes */, - ); - path = HookedFunctions; - sourceTree = ""; - }; - 81C0FCEE20440BE900D82FAF /* Classes */ = { isa = PBXGroup; children = ( 81C0FCEF20440C3600D82FAF /* Web3+Wallet.swift */, 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */, ); - path = Classes; + path = HookedFunctions; sourceTree = ""; }; 81FA43F42044097100EE14D5 /* web3swift-macOS_Tests */ = { @@ -876,14 +854,6 @@ sourceTree = ""; }; 81FB21F6207BA6DC007F9A83 /* Convenience */ = { - isa = PBXGroup; - children = ( - 81FB21F7207BA6EB007F9A83 /* Classes */, - ); - path = Convenience; - sourceTree = ""; - }; - 81FB21F7207BA6EB007F9A83 /* Classes */ = { isa = PBXGroup; children = ( 81C5DA272072E18200424CD6 /* NativeTypesEncoding+Extensions.swift */, @@ -897,7 +867,7 @@ 8113D2FF1FD7F30F0074282C /* String+Extension.swift */, 81909D2021884893007D2AE5 /* BigUInt+Extensions.swift */, ); - path = Classes; + path = Convenience; sourceTree = ""; }; 81FECD43211ADE20006DA367 /* ObjectiveCbridge */ = { @@ -1197,6 +1167,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3A52CCB22264A6D4001C8D7A /* NonceMiddleware.swift in Sources */, 3A3F59BC225931B00075C9E7 /* NameHash.swift in Sources */, 3A3F59BB225931780075C9E7 /* ENSResolver.swift in Sources */, 3A3F59BA225931710075C9E7 /* ENS.swift in Sources */, @@ -1248,6 +1219,7 @@ 3AE891612256611E00D08E99 /* Web3+Eth+Websocket.swift in Sources */, 81A1822520D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 8113DE7C1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift in Sources */, + 3A52CCBA2264B728001C8D7A /* RegistrarController.swift in Sources */, 81C5DA2E2074EBF500424CD6 /* EthereumContract.swift in Sources */, 810B0F9E1FEC5B9C00CF0DA2 /* Web3+Eth.swift in Sources */, 3AE891462256286C00D08E99 /* Web3+ERC165.swift in Sources */, @@ -1286,6 +1258,7 @@ 81A1822B20D67A1B0016741F /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, 815630042007BC8F00A0EC2F /* BIP39+WordLists.swift in Sources */, 8113D2CE1FD7E1590074282C /* EthereumTransaction.swift in Sources */, + 3A52CCB72264B712001C8D7A /* BaseRegistrar.swift in Sources */, 3AE8914E2256286C00D08E99 /* Web3+ERC721.swift in Sources */, 81A1821F20D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */, 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */, @@ -1321,6 +1294,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3A52CCB32264A6DC001C8D7A /* NonceMiddleware.swift in Sources */, 3A3F59BD225931BE0075C9E7 /* NameHash.swift in Sources */, 3A3F59BE225931BE0075C9E7 /* ENS.swift in Sources */, 3A3F59BF225931BE0075C9E7 /* ENSResolver.swift in Sources */, @@ -1372,6 +1346,7 @@ 81A1824920D7DDA20016741F /* Promise+Web3+Personal+Sign.swift in Sources */, 81A1822620D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 81909D1621862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */, + 3A52CCBB2264B728001C8D7A /* RegistrarController.swift in Sources */, 41948133203630530065A83B /* BIP39.swift in Sources */, 3AE891472256286C00D08E99 /* Web3+ERC165.swift in Sources */, 3AE8913F2256286C00D08E99 /* Web3+ERC1376.swift in Sources */, @@ -1410,6 +1385,7 @@ 81909D1321862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */, 4194813F203630530065A83B /* Dictionary+Extension.swift in Sources */, 41948140203630530065A83B /* Array+Extension.swift in Sources */, + 3A52CCB82264B712001C8D7A /* BaseRegistrar.swift in Sources */, 3AE8914F2256286C00D08E99 /* Web3+ERC721.swift in Sources */, 81A1822020D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */, 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */, diff --git a/web3swift/Contract/Classes/ComparisonExtensions.swift b/web3swift/Contract/ComparisonExtensions.swift similarity index 100% rename from web3swift/Contract/Classes/ComparisonExtensions.swift rename to web3swift/Contract/ComparisonExtensions.swift diff --git a/web3swift/Contract/Classes/ContractProtocol.swift b/web3swift/Contract/ContractProtocol.swift similarity index 100% rename from web3swift/Contract/Classes/ContractProtocol.swift rename to web3swift/Contract/ContractProtocol.swift diff --git a/web3swift/Contract/Classes/EthereumContract.swift b/web3swift/Contract/EthereumContract.swift similarity index 100% rename from web3swift/Contract/Classes/EthereumContract.swift rename to web3swift/Contract/EthereumContract.swift diff --git a/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift b/web3swift/Contract/EthereumFilterEncodingExtensions.swift similarity index 100% rename from web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift rename to web3swift/Contract/EthereumFilterEncodingExtensions.swift diff --git a/web3swift/Contract/Classes/EventFiltering.swift b/web3swift/Contract/EventFiltering.swift similarity index 100% rename from web3swift/Contract/Classes/EventFiltering.swift rename to web3swift/Contract/EventFiltering.swift diff --git a/web3swift/Convenience/Classes/Array+Extension.swift b/web3swift/Convenience/Array+Extension.swift similarity index 100% rename from web3swift/Convenience/Classes/Array+Extension.swift rename to web3swift/Convenience/Array+Extension.swift diff --git a/web3swift/Convenience/Classes/Base58.swift b/web3swift/Convenience/Base58.swift similarity index 100% rename from web3swift/Convenience/Classes/Base58.swift rename to web3swift/Convenience/Base58.swift diff --git a/web3swift/Convenience/Classes/BigUInt+Extensions.swift b/web3swift/Convenience/BigUInt+Extensions.swift similarity index 100% rename from web3swift/Convenience/Classes/BigUInt+Extensions.swift rename to web3swift/Convenience/BigUInt+Extensions.swift diff --git a/web3swift/Convenience/Classes/CryptoExtensions.swift b/web3swift/Convenience/CryptoExtensions.swift similarity index 100% rename from web3swift/Convenience/Classes/CryptoExtensions.swift rename to web3swift/Convenience/CryptoExtensions.swift diff --git a/web3swift/Convenience/Classes/Data+Extension.swift b/web3swift/Convenience/Data+Extension.swift similarity index 100% rename from web3swift/Convenience/Classes/Data+Extension.swift rename to web3swift/Convenience/Data+Extension.swift diff --git a/web3swift/Convenience/Classes/Dictionary+Extension.swift b/web3swift/Convenience/Dictionary+Extension.swift similarity index 100% rename from web3swift/Convenience/Classes/Dictionary+Extension.swift rename to web3swift/Convenience/Dictionary+Extension.swift diff --git a/web3swift/Convenience/Classes/NSRegularExpressionExtension.swift b/web3swift/Convenience/NSRegularExpressionExtension.swift similarity index 100% rename from web3swift/Convenience/Classes/NSRegularExpressionExtension.swift rename to web3swift/Convenience/NSRegularExpressionExtension.swift diff --git a/web3swift/Convenience/Classes/NativeTypesEncoding+Extensions.swift b/web3swift/Convenience/NativeTypesEncoding+Extensions.swift similarity index 100% rename from web3swift/Convenience/Classes/NativeTypesEncoding+Extensions.swift rename to web3swift/Convenience/NativeTypesEncoding+Extensions.swift diff --git a/web3swift/Convenience/Classes/RIPEMD160+StackOveflow.swift b/web3swift/Convenience/RIPEMD160+StackOveflow.swift similarity index 100% rename from web3swift/Convenience/Classes/RIPEMD160+StackOveflow.swift rename to web3swift/Convenience/RIPEMD160+StackOveflow.swift diff --git a/web3swift/Convenience/Classes/String+Extension.swift b/web3swift/Convenience/String+Extension.swift similarity index 100% rename from web3swift/Convenience/Classes/String+Extension.swift rename to web3swift/Convenience/String+Extension.swift diff --git a/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift b/web3swift/HookedFunctions/Web3+BrowserFunctions.swift similarity index 100% rename from web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift rename to web3swift/HookedFunctions/Web3+BrowserFunctions.swift diff --git a/web3swift/HookedFunctions/Classes/Web3+Wallet.swift b/web3swift/HookedFunctions/Web3+Wallet.swift similarity index 100% rename from web3swift/HookedFunctions/Classes/Web3+Wallet.swift rename to web3swift/HookedFunctions/Web3+Wallet.swift diff --git a/web3swift/KeystoreManager/Classes/AbstractKeystore.swift b/web3swift/KeystoreManager/AbstractKeystore.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/AbstractKeystore.swift rename to web3swift/KeystoreManager/AbstractKeystore.swift diff --git a/web3swift/KeystoreManager/Classes/BIP32HDNode.swift b/web3swift/KeystoreManager/BIP32HDNode.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/BIP32HDNode.swift rename to web3swift/KeystoreManager/BIP32HDNode.swift diff --git a/web3swift/KeystoreManager/Classes/BIP32Keystore.swift b/web3swift/KeystoreManager/BIP32Keystore.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/BIP32Keystore.swift rename to web3swift/KeystoreManager/BIP32Keystore.swift diff --git a/web3swift/KeystoreManager/Classes/BIP32KeystoreJSONStructure.swift b/web3swift/KeystoreManager/BIP32KeystoreJSONStructure.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/BIP32KeystoreJSONStructure.swift rename to web3swift/KeystoreManager/BIP32KeystoreJSONStructure.swift diff --git a/web3swift/KeystoreManager/Classes/BIP39+WordLists.swift b/web3swift/KeystoreManager/BIP39+WordLists.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/BIP39+WordLists.swift rename to web3swift/KeystoreManager/BIP39+WordLists.swift diff --git a/web3swift/KeystoreManager/Classes/BIP39.swift b/web3swift/KeystoreManager/BIP39.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/BIP39.swift rename to web3swift/KeystoreManager/BIP39.swift diff --git a/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift b/web3swift/KeystoreManager/EthereumKeystoreV3.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift rename to web3swift/KeystoreManager/EthereumKeystoreV3.swift diff --git a/web3swift/KeystoreManager/Classes/IBAN.swift b/web3swift/KeystoreManager/IBAN.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/IBAN.swift rename to web3swift/KeystoreManager/IBAN.swift diff --git a/web3swift/KeystoreManager/Classes/KeystoreManager.swift b/web3swift/KeystoreManager/KeystoreManager.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/KeystoreManager.swift rename to web3swift/KeystoreManager/KeystoreManager.swift diff --git a/web3swift/KeystoreManager/Classes/KeystoreV3JSONStructure.swift b/web3swift/KeystoreManager/KeystoreV3JSONStructure.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/KeystoreV3JSONStructure.swift rename to web3swift/KeystoreManager/KeystoreV3JSONStructure.swift diff --git a/web3swift/KeystoreManager/Classes/PlainKeystore.swift b/web3swift/KeystoreManager/PlainKeystore.swift similarity index 100% rename from web3swift/KeystoreManager/Classes/PlainKeystore.swift rename to web3swift/KeystoreManager/PlainKeystore.swift diff --git a/web3swift/Promises/Classes/Promise+Batching.swift b/web3swift/Promises/Promise+Batching.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Batching.swift rename to web3swift/Promises/Promise+Batching.swift diff --git a/web3swift/Promises/Classes/Promise+HttpProvider.swift b/web3swift/Promises/Promise+HttpProvider.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+HttpProvider.swift rename to web3swift/Promises/Promise+HttpProvider.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Contract+GetIndexedEvents.swift b/web3swift/Promises/Promise+Web3+Contract+GetIndexedEvents.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Contract+GetIndexedEvents.swift rename to web3swift/Promises/Promise+Web3+Contract+GetIndexedEvents.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift b/web3swift/Promises/Promise+Web3+Eth+Call.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift rename to web3swift/Promises/Promise+Web3+Eth+Call.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift b/web3swift/Promises/Promise+Web3+Eth+EstimateGas.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift rename to web3swift/Promises/Promise+Web3+Eth+EstimateGas.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift b/web3swift/Promises/Promise+Web3+Eth+GetAccounts.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift rename to web3swift/Promises/Promise+Web3+Eth+GetAccounts.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift b/web3swift/Promises/Promise+Web3+Eth+GetBalance.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift rename to web3swift/Promises/Promise+Web3+Eth+GetBalance.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByHash.swift b/web3swift/Promises/Promise+Web3+Eth+GetBlockByHash.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByHash.swift rename to web3swift/Promises/Promise+Web3+Eth+GetBlockByHash.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByNumber.swift b/web3swift/Promises/Promise+Web3+Eth+GetBlockByNumber.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByNumber.swift rename to web3swift/Promises/Promise+Web3+Eth+GetBlockByNumber.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockNumber.swift b/web3swift/Promises/Promise+Web3+Eth+GetBlockNumber.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockNumber.swift rename to web3swift/Promises/Promise+Web3+Eth+GetBlockNumber.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetGasPrice.swift b/web3swift/Promises/Promise+Web3+Eth+GetGasPrice.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetGasPrice.swift rename to web3swift/Promises/Promise+Web3+Eth+GetGasPrice.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift b/web3swift/Promises/Promise+Web3+Eth+GetTransactionCount.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift rename to web3swift/Promises/Promise+Web3+Eth+GetTransactionCount.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionDetails.swift b/web3swift/Promises/Promise+Web3+Eth+GetTransactionDetails.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionDetails.swift rename to web3swift/Promises/Promise+Web3+Eth+GetTransactionDetails.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionReceipt.swift b/web3swift/Promises/Promise+Web3+Eth+GetTransactionReceipt.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionReceipt.swift rename to web3swift/Promises/Promise+Web3+Eth+GetTransactionReceipt.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift b/web3swift/Promises/Promise+Web3+Eth+SendRawTransaction.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift rename to web3swift/Promises/Promise+Web3+Eth+SendRawTransaction.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift b/web3swift/Promises/Promise+Web3+Eth+SendTransaction.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift rename to web3swift/Promises/Promise+Web3+Eth+SendTransaction.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift b/web3swift/Promises/Promise+Web3+Personal+CreateAccount.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift rename to web3swift/Promises/Promise+Web3+Personal+CreateAccount.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift b/web3swift/Promises/Promise+Web3+Personal+Sign.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift rename to web3swift/Promises/Promise+Web3+Personal+Sign.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift b/web3swift/Promises/Promise+Web3+Personal+UnlockAccount.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift rename to web3swift/Promises/Promise+Web3+Personal+UnlockAccount.swift diff --git a/web3swift/Promises/Classes/Promise+Web3+TxPool.swift b/web3swift/Promises/Promise+Web3+TxPool.swift similarity index 100% rename from web3swift/Promises/Classes/Promise+Web3+TxPool.swift rename to web3swift/Promises/Promise+Web3+TxPool.swift diff --git a/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift b/web3swift/Tokens/ERC1155/Web3+ERC1155.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift rename to web3swift/Tokens/ERC1155/Web3+ERC1155.swift diff --git a/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift b/web3swift/Tokens/ERC1376/Web3+ERC1376.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift rename to web3swift/Tokens/ERC1376/Web3+ERC1376.swift diff --git a/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift b/web3swift/Tokens/ERC1400/Web3+ERC1400.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift rename to web3swift/Tokens/ERC1400/Web3+ERC1400.swift diff --git a/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift b/web3swift/Tokens/ERC1410/Web3+ERC1410.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift rename to web3swift/Tokens/ERC1410/Web3+ERC1410.swift diff --git a/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift b/web3swift/Tokens/ERC1594/Web3+ERC1594.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift rename to web3swift/Tokens/ERC1594/Web3+ERC1594.swift diff --git a/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift b/web3swift/Tokens/ERC1633/Web3+ERC1633.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift rename to web3swift/Tokens/ERC1633/Web3+ERC1633.swift diff --git a/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift b/web3swift/Tokens/ERC1643/Web3+ERC1643.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift rename to web3swift/Tokens/ERC1643/Web3+ERC1643.swift diff --git a/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift b/web3swift/Tokens/ERC1644/Web3+ERC1644.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift rename to web3swift/Tokens/ERC1644/Web3+ERC1644.swift diff --git a/web3swift/PrecompiledContracts/ERC165/Web3+ERC165.swift b/web3swift/Tokens/ERC165/Web3+ERC165.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC165/Web3+ERC165.swift rename to web3swift/Tokens/ERC165/Web3+ERC165.swift diff --git a/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift b/web3swift/Tokens/ERC20/Web3+ERC20.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift rename to web3swift/Tokens/ERC20/Web3+ERC20.swift diff --git a/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift b/web3swift/Tokens/ERC721/Web3+ERC721.swift similarity index 90% rename from web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift rename to web3swift/Tokens/ERC721/Web3+ERC721.swift index 1960b095a..48e386784 100644 --- a/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift +++ b/web3swift/Tokens/ERC721/Web3+ERC721.swift @@ -18,6 +18,10 @@ protocol IERC721: IERC165 { func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction + + func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, data: [UInt8]) throws -> WriteTransaction + func transfer(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction func approve(from: EthereumAddress, approved: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction @@ -152,6 +156,26 @@ public class ERC721: IERC721 { return tx } + public func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeTransferFrom", parameters: [originalOwner, to, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeTransferFrom", parameters: [originalOwner, to, tokenId, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + public func approve(from: EthereumAddress, approved: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { let contract = self.contract var basicOptions = TransactionOptions() diff --git a/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift b/web3swift/Tokens/ERC721x/Web3+ERC721x.swift similarity index 94% rename from web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift rename to web3swift/Tokens/ERC721x/Web3+ERC721x.swift index ccaff5438..f5a98d900 100644 --- a/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift +++ b/web3swift/Tokens/ERC721x/Web3+ERC721x.swift @@ -140,6 +140,26 @@ public class ERC721x: IERC721x { return tx } + public func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeTransferFrom", parameters: [originalOwner, to, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + + public func safeTransferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt, data: [UInt8]) throws -> WriteTransaction { + let contract = self.contract + var basicOptions = TransactionOptions() + basicOptions.from = from + basicOptions.to = self.address + + let tx = contract.write("safeTransferFrom", parameters: [originalOwner, to, tokenId, data] as [AnyObject], transactionOptions: basicOptions)! + return tx + } + public func approve(from: EthereumAddress, approved: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { let contract = self.contract var basicOptions = TransactionOptions() diff --git a/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift b/web3swift/Tokens/ERC777/Web3+ERC777.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift rename to web3swift/Tokens/ERC777/Web3+ERC777.swift diff --git a/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift b/web3swift/Tokens/ERC820/Web3+ERC820.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift rename to web3swift/Tokens/ERC820/Web3+ERC820.swift diff --git a/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift b/web3swift/Tokens/ERC888/Web3+ERC888.swift similarity index 100% rename from web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift rename to web3swift/Tokens/ERC888/Web3+ERC888.swift diff --git a/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift b/web3swift/Tokens/ST20/Web3+ST20.swift similarity index 100% rename from web3swift/PrecompiledContracts/ST20/Web3+ST20.swift rename to web3swift/Tokens/ST20/Web3+ST20.swift diff --git a/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift b/web3swift/Tokens/ST20/Web3+SecurityToken.swift similarity index 100% rename from web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift rename to web3swift/Tokens/ST20/Web3+SecurityToken.swift diff --git a/web3swift/Transaction/Classes/BloomFilter.swift b/web3swift/Transaction/BloomFilter.swift similarity index 100% rename from web3swift/Transaction/Classes/BloomFilter.swift rename to web3swift/Transaction/BloomFilter.swift diff --git a/web3swift/Transaction/Classes/EthereumTransaction.swift b/web3swift/Transaction/EthereumTransaction.swift similarity index 100% rename from web3swift/Transaction/Classes/EthereumTransaction.swift rename to web3swift/Transaction/EthereumTransaction.swift diff --git a/web3swift/Transaction/Classes/TransactionSigner.swift b/web3swift/Transaction/TransactionSigner.swift similarity index 100% rename from web3swift/Transaction/Classes/TransactionSigner.swift rename to web3swift/Transaction/TransactionSigner.swift diff --git a/web3swift/Utils/Classes/EIP67Code.swift b/web3swift/Utils/EIP/EIP67Code.swift similarity index 100% rename from web3swift/Utils/Classes/EIP67Code.swift rename to web3swift/Utils/EIP/EIP67Code.swift diff --git a/web3swift/Utils/Classes/EIP681.swift b/web3swift/Utils/EIP/EIP681.swift similarity index 100% rename from web3swift/Utils/Classes/EIP681.swift rename to web3swift/Utils/EIP/EIP681.swift diff --git a/web3swift/Utils/ENS/BaseRegistrar.swift b/web3swift/Utils/ENS/BaseRegistrar.swift new file mode 100644 index 000000000..828a38641 --- /dev/null +++ b/web3swift/Utils/ENS/BaseRegistrar.swift @@ -0,0 +1,73 @@ +// +// BaseRegistrar.swift +// web3swift +// +// Created by Anton on 15/04/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress + +public class BaseRegistrar: ERC721 { + + lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions + }() + + override public init(web3: web3, provider: Web3Provider, address: EthereumAddress) { + super.init(web3: web3, provider: provider, address: address) + guard let contract = self.web3.contract(Web3.Utils.baseRegistrarABI, at: self.address, abiVersion: 2) else { + return + } + self.contract = contract + } + + @available(*, message: "Available for only owner") + public func addController(from: EthereumAddress, controllerAddress: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("addController", parameters: [controllerAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + @available(*, message: "Available for only owner") + public func removeController(from: EthereumAddress, controllerAddress: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("removeController", parameters: [controllerAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + @available(*, message: "Available for only owner") + public func setResolver(from: EthereumAddress, resolverAddress: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("setResolver", parameters: [resolverAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func getNameExpirity(name: BigUInt) throws -> UInt { + guard let transaction = self.contract.read("nameExpires", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let expirity = result["0"] as? UInt else {throw Web3Error.processingError(desc: "Can't get answer")} + return expirity + } + + @available(*, message: "This function should not be used to check if a name can be registered by a user. To check if a name can be registered by a user, check name availablility via the controller") + public func isNameAvailable(name: BigUInt) throws -> Bool { + guard let transaction = self.contract.read("available", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let available = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} + return available + } + + public func reclaim(from: EthereumAddress, record: BigUInt) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("reclaim", parameters: [record as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + +} diff --git a/web3swift/Utils/Classes/ENS.swift b/web3swift/Utils/ENS/ENS.swift similarity index 100% rename from web3swift/Utils/Classes/ENS.swift rename to web3swift/Utils/ENS/ENS.swift diff --git a/web3swift/Utils/Classes/ENSResolver.swift b/web3swift/Utils/ENS/ENSResolver.swift similarity index 99% rename from web3swift/Utils/Classes/ENSResolver.swift rename to web3swift/Utils/ENS/ENSResolver.swift index fdad551a1..4549bc0c1 100755 --- a/web3swift/Utils/Classes/ENSResolver.swift +++ b/web3swift/Utils/ENS/ENSResolver.swift @@ -17,26 +17,26 @@ public struct ResolverENS { case name case ABI case pubkey + case text case content case multihash - case text func hash() -> String { switch self { - case .ABI: - return "0x2203ab56" case .addr: return "0x3b3b57de" case .name: return "0x691f3431" + case .ABI: + return "0x2203ab56" case .pubkey: return "0xc8690233" + case .text: + return "0x59d1d43c" case .content: - return "0xd8389dc5" + return "0xbc1c58d1" case .multihash: return "0xe89401a1" - case .text: - return "0x59d1d43c" } } } diff --git a/web3swift/Utils/Classes/NameHash.swift b/web3swift/Utils/ENS/NameHash.swift similarity index 100% rename from web3swift/Utils/Classes/NameHash.swift rename to web3swift/Utils/ENS/NameHash.swift diff --git a/web3swift/Utils/ENS/RegistrarController.swift b/web3swift/Utils/ENS/RegistrarController.swift new file mode 100644 index 000000000..a3a3b186a --- /dev/null +++ b/web3swift/Utils/ENS/RegistrarController.swift @@ -0,0 +1,9 @@ +// +// RegistrarController.swift +// web3swift +// +// Created by Anton on 15/04/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// + +import Foundation diff --git a/web3swift/Utils/Classes/NonceMiddleware.swift b/web3swift/Utils/Hooks/NonceMiddleware.swift similarity index 100% rename from web3swift/Utils/Classes/NonceMiddleware.swift rename to web3swift/Utils/Hooks/NonceMiddleware.swift diff --git a/web3swift/Web3/Classes/Web3+Contract.swift b/web3swift/Web3/Web3+Contract.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Contract.swift rename to web3swift/Web3/Web3+Contract.swift diff --git a/web3swift/Web3/Classes/Web3+Eth+Websocket.swift b/web3swift/Web3/Web3+Eth+Websocket.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Eth+Websocket.swift rename to web3swift/Web3/Web3+Eth+Websocket.swift diff --git a/web3swift/Web3/Classes/Web3+Eth.swift b/web3swift/Web3/Web3+Eth.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Eth.swift rename to web3swift/Web3/Web3+Eth.swift diff --git a/web3swift/Web3/Classes/Web3+EventParser.swift b/web3swift/Web3/Web3+EventParser.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+EventParser.swift rename to web3swift/Web3/Web3+EventParser.swift diff --git a/web3swift/Web3/Classes/Web3+Eventloop.swift b/web3swift/Web3/Web3+Eventloop.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Eventloop.swift rename to web3swift/Web3/Web3+Eventloop.swift diff --git a/web3swift/Web3/Classes/Web3+HttpProvider.swift b/web3swift/Web3/Web3+HttpProvider.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+HttpProvider.swift rename to web3swift/Web3/Web3+HttpProvider.swift diff --git a/web3swift/Web3/Classes/Web3+InfuraProviders.swift b/web3swift/Web3/Web3+InfuraProviders.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+InfuraProviders.swift rename to web3swift/Web3/Web3+InfuraProviders.swift diff --git a/web3swift/Web3/Classes/Web3+Instance.swift b/web3swift/Web3/Web3+Instance.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Instance.swift rename to web3swift/Web3/Web3+Instance.swift diff --git a/web3swift/Web3/Classes/Web3+JSONRPC.swift b/web3swift/Web3/Web3+JSONRPC.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+JSONRPC.swift rename to web3swift/Web3/Web3+JSONRPC.swift diff --git a/web3swift/Web3/Classes/Web3+Methods.swift b/web3swift/Web3/Web3+Methods.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Methods.swift rename to web3swift/Web3/Web3+Methods.swift diff --git a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift b/web3swift/Web3/Web3+MutatingTransaction.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+MutatingTransaction.swift rename to web3swift/Web3/Web3+MutatingTransaction.swift diff --git a/web3swift/Web3/Classes/Web3+Options.swift b/web3swift/Web3/Web3+Options.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Options.swift rename to web3swift/Web3/Web3+Options.swift diff --git a/web3swift/Web3/Classes/Web3+Personal.swift b/web3swift/Web3/Web3+Personal.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Personal.swift rename to web3swift/Web3/Web3+Personal.swift diff --git a/web3swift/Web3/Classes/Web3+Protocols.swift b/web3swift/Web3/Web3+Protocols.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Protocols.swift rename to web3swift/Web3/Web3+Protocols.swift diff --git a/web3swift/Web3/Classes/Web3+ReadingTransaction.swift b/web3swift/Web3/Web3+ReadingTransaction.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+ReadingTransaction.swift rename to web3swift/Web3/Web3+ReadingTransaction.swift diff --git a/web3swift/Web3/Classes/Web3+Structures.swift b/web3swift/Web3/Web3+Structures.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Structures.swift rename to web3swift/Web3/Web3+Structures.swift diff --git a/web3swift/Web3/Classes/Web3+TxPool.swift b/web3swift/Web3/Web3+TxPool.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+TxPool.swift rename to web3swift/Web3/Web3+TxPool.swift diff --git a/web3swift/Web3/Classes/Web3+Utils.swift b/web3swift/Web3/Web3+Utils.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+Utils.swift rename to web3swift/Web3/Web3+Utils.swift diff --git a/web3swift/Web3/Classes/Web3+WebsocketProvider.swift b/web3swift/Web3/Web3+WebsocketProvider.swift similarity index 100% rename from web3swift/Web3/Classes/Web3+WebsocketProvider.swift rename to web3swift/Web3/Web3+WebsocketProvider.swift diff --git a/web3swift/Web3/Classes/Web3.swift b/web3swift/Web3/Web3.swift similarity index 100% rename from web3swift/Web3/Classes/Web3.swift rename to web3swift/Web3/Web3.swift From f3353c198c28252e7cceeb7353ebb46c748a5caa Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Tue, 16 Apr 2019 18:44:50 +0300 Subject: [PATCH 03/19] added ethregistrarcontroller support --- web3swift.xcodeproj/project.pbxproj | 12 +-- .../Utils/ENS/ETHRegistrarController.swift | 93 +++++++++++++++++++ web3swift/Utils/ENS/RegistrarController.swift | 9 -- 3 files changed, 99 insertions(+), 15 deletions(-) create mode 100644 web3swift/Utils/ENS/ETHRegistrarController.swift delete mode 100644 web3swift/Utils/ENS/RegistrarController.swift diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index c9462e14a..723940ace 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -22,8 +22,8 @@ 3A52CCB32264A6DC001C8D7A /* NonceMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81ED4EA72190D922003E932E /* NonceMiddleware.swift */; }; 3A52CCB72264B712001C8D7A /* BaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */; }; 3A52CCB82264B712001C8D7A /* BaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */; }; - 3A52CCBA2264B728001C8D7A /* RegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* RegistrarController.swift */; }; - 3A52CCBB2264B728001C8D7A /* RegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* RegistrarController.swift */; }; + 3A52CCBA2264B728001C8D7A /* ETHRegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */; }; + 3A52CCBB2264B728001C8D7A /* ETHRegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */; }; 3AE8913C2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; 3AE8913D2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; 3AE8913E2256286C00D08E99 /* Web3+ERC1376.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */; }; @@ -265,7 +265,7 @@ 342700493511FEB189700D13 /* Pods-web3swift-iOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig"; sourceTree = ""; }; 391A0D2EF42488E5C8AB2F71 /* Pods_web3swift_osx_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_osx_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseRegistrar.swift; sourceTree = ""; }; - 3A52CCB92264B728001C8D7A /* RegistrarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegistrarController.swift; sourceTree = ""; }; + 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETHRegistrarController.swift; sourceTree = ""; }; 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1155.swift"; sourceTree = ""; }; 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1376.swift"; sourceTree = ""; }; 3AE891202256286B00D08E99 /* Web3+ERC888.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC888.swift"; sourceTree = ""; }; @@ -530,7 +530,7 @@ B2E668CD214F8A7B00C3CC2D /* ENS.swift */, B219DC162154F3EE0035BF94 /* ENSResolver.swift */, 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */, - 3A52CCB92264B728001C8D7A /* RegistrarController.swift */, + 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */, ); path = ENS; sourceTree = ""; @@ -1219,7 +1219,7 @@ 3AE891612256611E00D08E99 /* Web3+Eth+Websocket.swift in Sources */, 81A1822520D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 8113DE7C1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift in Sources */, - 3A52CCBA2264B728001C8D7A /* RegistrarController.swift in Sources */, + 3A52CCBA2264B728001C8D7A /* ETHRegistrarController.swift in Sources */, 81C5DA2E2074EBF500424CD6 /* EthereumContract.swift in Sources */, 810B0F9E1FEC5B9C00CF0DA2 /* Web3+Eth.swift in Sources */, 3AE891462256286C00D08E99 /* Web3+ERC165.swift in Sources */, @@ -1346,7 +1346,7 @@ 81A1824920D7DDA20016741F /* Promise+Web3+Personal+Sign.swift in Sources */, 81A1822620D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 81909D1621862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */, - 3A52CCBB2264B728001C8D7A /* RegistrarController.swift in Sources */, + 3A52CCBB2264B728001C8D7A /* ETHRegistrarController.swift in Sources */, 41948133203630530065A83B /* BIP39.swift in Sources */, 3AE891472256286C00D08E99 /* Web3+ERC165.swift in Sources */, 3AE8913F2256286C00D08E99 /* Web3+ERC1376.swift in Sources */, diff --git a/web3swift/Utils/ENS/ETHRegistrarController.swift b/web3swift/Utils/ENS/ETHRegistrarController.swift new file mode 100644 index 000000000..235bceb6b --- /dev/null +++ b/web3swift/Utils/ENS/ETHRegistrarController.swift @@ -0,0 +1,93 @@ +// +// RegistrarController.swift +// web3swift +// +// Created by Anton on 15/04/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress + +public class ETHRegistrarController { + let web3: web3 + let address: EthereumAddress + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(Web3.Utils.ethRegistrarControllerABI, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions + }() + + init(web3: web3, address: EthereumAddress) { + self.web3 = web3 + self.address = address + } + + public func getRentPrice(name: String, duration: UInt) throws -> UInt { + guard let transaction = self.contract.read("rentPrice", parameters: [name, duration] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let price = result["0"] as? UInt else {throw Web3Error.processingError(desc: "Can't get answer")} + return price + } + + public func checkNameValidity(name: String) throws -> Bool { + guard let transaction = self.contract.read("valid", parameters: [name] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let valid = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} + return valid + } + + public func isNameAvailable(name: String) throws -> Bool { + guard let transaction = self.contract.read("available", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let available = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} + return available + } + + public func calculateCommitmentHash(name: String, owner: EthereumAddress, secret: [UInt32]) throws -> [UInt32] { + guard let transaction = self.contract.read("makeCommitment", parameters: [name, owner, secret] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let hash = result["0"] as? [UInt32] else {throw Web3Error.processingError(desc: "Can't get answer")} + return hash + } + + public func sumbitCommitment(from: EthereumAddress, commitment: [UInt32]) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("commit", parameters: [commitment as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func registerName(from: EthereumAddress, name: String, owner: EthereumAddress, duration: UInt32, secret: [UInt32], price: String) throws -> WriteTransaction { + guard let amount = Web3.Utils.parseToBigUInt(price, units: .eth) else {throw Web3Error.inputError(desc: "Wrong price: no way for parsing to ether units")} + defaultOptions.value = amount + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("register", parameters: [name, owner, duration, secret] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func extendNameRegistration(from: EthereumAddress, name: String, duration: UInt32, price: String) throws -> WriteTransaction { + guard let amount = Web3.Utils.parseToBigUInt(price, units: .eth) else {throw Web3Error.inputError(desc: "Wrong price: no way for parsing to ether units")} + defaultOptions.value = amount + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("renew", parameters: [name, duration] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + @available(*, message: "Available for only owner") + public func withdraw(from: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("withdraw", parameters: [AnyObject](), extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + +} diff --git a/web3swift/Utils/ENS/RegistrarController.swift b/web3swift/Utils/ENS/RegistrarController.swift deleted file mode 100644 index a3a3b186a..000000000 --- a/web3swift/Utils/ENS/RegistrarController.swift +++ /dev/null @@ -1,9 +0,0 @@ -// -// RegistrarController.swift -// web3swift -// -// Created by Anton on 15/04/2019. -// Copyright © 2019 The Matter Inc. All rights reserved. -// - -import Foundation From e44757d8495c022a354bf5248e5481de743239ba Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Wed, 17 Apr 2019 18:20:48 +0300 Subject: [PATCH 04/19] fixed support interface methods in ercs, refactored and changed architecture for ens namespace, updated ens resolver and registry methods, made convenient method getComponentsWithoutPrefix for publickey --- web3swift.xcodeproj/project.pbxproj | 12 + web3swift/Tokens/ERC1155/Web3+ERC1155.swift | 2 +- web3swift/Tokens/ERC1400/Web3+ERC1400.swift | 2 +- web3swift/Tokens/ERC1410/Web3+ERC1410.swift | 2 +- web3swift/Tokens/ERC1633/Web3+ERC1633.swift | 2 +- web3swift/Tokens/ERC165/Web3+ERC165.swift | 2 +- web3swift/Tokens/ERC721/Web3+ERC721.swift | 2 +- web3swift/Tokens/ERC721x/Web3+ERC721x.swift | 2 +- web3swift/Tokens/ERC777/Web3+ERC777.swift | 2 +- web3swift/Utils/EIP/EIP681.swift | 6 +- web3swift/Utils/ENS/BaseRegistrar.swift | 125 +++--- web3swift/Utils/ENS/ENS.swift | 372 +++++++++++++----- web3swift/Utils/ENS/ENSRegistry.swift | 110 ++++++ web3swift/Utils/ENS/ENSResolver.swift | 360 ++++++++--------- .../Utils/ENS/ETHRegistrarController.swift | 159 ++++---- web3swift/Utils/ENS/PublicKey.swift | 26 ++ 16 files changed, 744 insertions(+), 442 deletions(-) create mode 100644 web3swift/Utils/ENS/ENSRegistry.swift create mode 100644 web3swift/Utils/ENS/PublicKey.swift diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 723940ace..2f05dba08 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -24,6 +24,10 @@ 3A52CCB82264B712001C8D7A /* BaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */; }; 3A52CCBA2264B728001C8D7A /* ETHRegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */; }; 3A52CCBB2264B728001C8D7A /* ETHRegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */; }; + 3A52CCBD226747EB001C8D7A /* PublicKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBC226747EB001C8D7A /* PublicKey.swift */; }; + 3A52CCBE226747EB001C8D7A /* PublicKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBC226747EB001C8D7A /* PublicKey.swift */; }; + 3A52CCC022675CFC001C8D7A /* ENSRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */; }; + 3A52CCC122675CFC001C8D7A /* ENSRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */; }; 3AE8913C2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; 3AE8913D2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; 3AE8913E2256286C00D08E99 /* Web3+ERC1376.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */; }; @@ -266,6 +270,8 @@ 391A0D2EF42488E5C8AB2F71 /* Pods_web3swift_osx_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_osx_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseRegistrar.swift; sourceTree = ""; }; 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETHRegistrarController.swift; sourceTree = ""; }; + 3A52CCBC226747EB001C8D7A /* PublicKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublicKey.swift; sourceTree = ""; }; + 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSRegistry.swift; sourceTree = ""; }; 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1155.swift"; sourceTree = ""; }; 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1376.swift"; sourceTree = ""; }; 3AE891202256286B00D08E99 /* Web3+ERC888.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC888.swift"; sourceTree = ""; }; @@ -528,7 +534,9 @@ children = ( 81A7B2502143C3A8004CD2C7 /* NameHash.swift */, B2E668CD214F8A7B00C3CC2D /* ENS.swift */, + 3A52CCBC226747EB001C8D7A /* PublicKey.swift */, B219DC162154F3EE0035BF94 /* ENSResolver.swift */, + 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */, 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */, 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */, ); @@ -1184,6 +1192,7 @@ 810B0F9A1FEC446B00CF0DA2 /* Web3+JSONRPC.swift in Sources */, 3AE891642256620200D08E99 /* Web3+WebsocketProvider.swift in Sources */, 81195AB020D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, + 3A52CCBD226747EB001C8D7A /* PublicKey.swift in Sources */, 81EB1E4B208173D7003BD47F /* Web3+Personal.swift in Sources */, 81909D1821862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */, 81A1824B20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift in Sources */, @@ -1247,6 +1256,7 @@ 8103BBCC2077B84400499769 /* PlainKeystore.swift in Sources */, 81DFB3FF210775320011DC85 /* Web3+InfuraProviders.swift in Sources */, 81909D4A218864A8007D2AE5 /* EIP681.swift in Sources */, + 3A52CCC022675CFC001C8D7A /* ENSRegistry.swift in Sources */, 3AE891542256286C00D08E99 /* Web3+ERC1400.swift in Sources */, 3AE891522256286C00D08E99 /* Web3+ERC721x.swift in Sources */, 81C0FCF220440EB500D82FAF /* Web3+Protocols.swift in Sources */, @@ -1311,6 +1321,7 @@ 41948121203630530065A83B /* Web3+Utils.swift in Sources */, 3AE891652256620200D08E99 /* Web3+WebsocketProvider.swift in Sources */, 81909D1921862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */, + 3A52CCBE226747EB001C8D7A /* PublicKey.swift in Sources */, 8125F06A20499AC300A0F2FE /* BloomFilter.swift in Sources */, 81C0FD062044A8D100D82FAF /* TransactionSigner.swift in Sources */, 41948123203630530065A83B /* Web3+JSONRPC.swift in Sources */, @@ -1374,6 +1385,7 @@ 81A1823220D68A110016741F /* Promise+Batching.swift in Sources */, 4194813C203630530065A83B /* Base58.swift in Sources */, 81909D4B218864A9007D2AE5 /* EIP681.swift in Sources */, + 3A52CCC122675CFC001C8D7A /* ENSRegistry.swift in Sources */, 3AE891552256286C00D08E99 /* Web3+ERC1400.swift in Sources */, 3AE891532256286C00D08E99 /* Web3+ERC721x.swift in Sources */, 8103BBCD2077B84400499769 /* PlainKeystore.swift in Sources */, diff --git a/web3swift/Tokens/ERC1155/Web3+ERC1155.swift b/web3swift/Tokens/ERC1155/Web3+ERC1155.swift index 7d129d82e..5c82ac8b9 100644 --- a/web3swift/Tokens/ERC1155/Web3+ERC1155.swift +++ b/web3swift/Tokens/ERC1155/Web3+ERC1155.swift @@ -135,7 +135,7 @@ public class ERC1155: IERC1155 { return res } - func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + func supportsInterface(interfaceID: String) throws -> Bool { let contract = self.contract var transactionOptions = TransactionOptions() transactionOptions.callOnBlock = .latest diff --git a/web3swift/Tokens/ERC1400/Web3+ERC1400.swift b/web3swift/Tokens/ERC1400/Web3+ERC1400.swift index ae51bf0ad..85f442a0a 100644 --- a/web3swift/Tokens/ERC1400/Web3+ERC1400.swift +++ b/web3swift/Tokens/ERC1400/Web3+ERC1400.swift @@ -782,7 +782,7 @@ extension ERC1400: IERC777 { return tx } - public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + public func supportsInterface(interfaceID: String) throws -> Bool { let contract = self.contract var transactionOptions = TransactionOptions() transactionOptions.callOnBlock = .latest diff --git a/web3swift/Tokens/ERC1410/Web3+ERC1410.swift b/web3swift/Tokens/ERC1410/Web3+ERC1410.swift index 8bdec4635..9a6ad04d3 100644 --- a/web3swift/Tokens/ERC1410/Web3+ERC1410.swift +++ b/web3swift/Tokens/ERC1410/Web3+ERC1410.swift @@ -517,7 +517,7 @@ extension ERC1410: IERC777 { return tx } - public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + public func supportsInterface(interfaceID: String) throws -> Bool { let contract = self.contract var transactionOptions = TransactionOptions() transactionOptions.callOnBlock = .latest diff --git a/web3swift/Tokens/ERC1633/Web3+ERC1633.swift b/web3swift/Tokens/ERC1633/Web3+ERC1633.swift index a71e051b8..694821f32 100644 --- a/web3swift/Tokens/ERC1633/Web3+ERC1633.swift +++ b/web3swift/Tokens/ERC1633/Web3+ERC1633.swift @@ -241,7 +241,7 @@ public class ERC1633: IERC1633 { return res } - public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + public func supportsInterface(interfaceID: String) throws -> Bool { let contract = self.contract var transactionOptions = TransactionOptions() transactionOptions.callOnBlock = .latest diff --git a/web3swift/Tokens/ERC165/Web3+ERC165.swift b/web3swift/Tokens/ERC165/Web3+ERC165.swift index 6687e9c4e..5abd3e955 100644 --- a/web3swift/Tokens/ERC165/Web3+ERC165.swift +++ b/web3swift/Tokens/ERC165/Web3+ERC165.swift @@ -11,6 +11,6 @@ import Foundation //Standard Interface Detection protocol IERC165 { - func supportsInterface(interfaceID: [UInt8]) throws -> Bool + func supportsInterface(interfaceID: String) throws -> Bool } diff --git a/web3swift/Tokens/ERC721/Web3+ERC721.swift b/web3swift/Tokens/ERC721/Web3+ERC721.swift index 48e386784..9a2069130 100644 --- a/web3swift/Tokens/ERC721/Web3+ERC721.swift +++ b/web3swift/Tokens/ERC721/Web3+ERC721.swift @@ -205,7 +205,7 @@ public class ERC721: IERC721 { return res } - public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + public func supportsInterface(interfaceID: String) throws -> Bool { let contract = self.contract var transactionOptions = TransactionOptions() transactionOptions.callOnBlock = .latest diff --git a/web3swift/Tokens/ERC721x/Web3+ERC721x.swift b/web3swift/Tokens/ERC721x/Web3+ERC721x.swift index f5a98d900..31738165f 100644 --- a/web3swift/Tokens/ERC721x/Web3+ERC721x.swift +++ b/web3swift/Tokens/ERC721x/Web3+ERC721x.swift @@ -189,7 +189,7 @@ public class ERC721x: IERC721x { return res } - public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + public func supportsInterface(interfaceID: String) throws -> Bool { let contract = self.contract var transactionOptions = TransactionOptions() transactionOptions.callOnBlock = .latest diff --git a/web3swift/Tokens/ERC777/Web3+ERC777.swift b/web3swift/Tokens/ERC777/Web3+ERC777.swift index 8127bf0fe..f13d7ce1a 100644 --- a/web3swift/Tokens/ERC777/Web3+ERC777.swift +++ b/web3swift/Tokens/ERC777/Web3+ERC777.swift @@ -431,7 +431,7 @@ public class ERC777: IERC777 { return tx } - public func supportsInterface(interfaceID: [UInt8]) throws -> Bool { + public func supportsInterface(interfaceID: String) throws -> Bool { let contract = self.contract var transactionOptions = TransactionOptions() transactionOptions.callOnBlock = .latest diff --git a/web3swift/Utils/EIP/EIP681.swift b/web3swift/Utils/EIP/EIP681.swift index 64729f7f7..4c2bc7679 100755 --- a/web3swift/Utils/EIP/EIP681.swift +++ b/web3swift/Utils/EIP/EIP681.swift @@ -126,8 +126,10 @@ extension Web3 { do { let web = web3(provider: InfuraProvider(Networks.fromInt(Int(code.chainID ?? 1)) ?? Networks.Mainnet)!) let ensModel = ENS(web3: web) - var resolver = try ensModel.resolver(forDomain: ens) - let address = try resolver.addr(forDomain: ens) + guard let address = try ensModel?.useENSResolver(withDomain: ens) + .getAddress(forNode: ens) else { + return nil + } nativeValue = address as AnyObject } catch { return nil diff --git a/web3swift/Utils/ENS/BaseRegistrar.swift b/web3swift/Utils/ENS/BaseRegistrar.swift index 828a38641..f9f651c08 100644 --- a/web3swift/Utils/ENS/BaseRegistrar.swift +++ b/web3swift/Utils/ENS/BaseRegistrar.swift @@ -10,64 +10,73 @@ import Foundation import BigInt import EthereumAddress -public class BaseRegistrar: ERC721 { - - lazy var defaultOptions: TransactionOptions = { - return TransactionOptions.defaultOptions - }() - - override public init(web3: web3, provider: Web3Provider, address: EthereumAddress) { - super.init(web3: web3, provider: provider, address: address) - guard let contract = self.web3.contract(Web3.Utils.baseRegistrarABI, at: self.address, abiVersion: 2) else { - return +public extension ENS { + class BaseRegistrar: ERC721 { + lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions + }() + + public init(web3: web3, address: EthereumAddress) { + super.init(web3: web3, provider: web3.provider, address: address) + guard let contract = self.web3.contract(Web3.Utils.baseRegistrarABI, at: self.address, abiVersion: 2) else { + return + } + self.contract = contract } - self.contract = contract - } - - @available(*, message: "Available for only owner") - public func addController(from: EthereumAddress, controllerAddress: EthereumAddress) throws -> WriteTransaction { - defaultOptions.from = from - defaultOptions.to = self.address - guard let transaction = self.contract.write("addController", parameters: [controllerAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - return transaction - } - - @available(*, message: "Available for only owner") - public func removeController(from: EthereumAddress, controllerAddress: EthereumAddress) throws -> WriteTransaction { - defaultOptions.from = from - defaultOptions.to = self.address - guard let transaction = self.contract.write("removeController", parameters: [controllerAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - return transaction - } - - @available(*, message: "Available for only owner") - public func setResolver(from: EthereumAddress, resolverAddress: EthereumAddress) throws -> WriteTransaction { - defaultOptions.from = from - defaultOptions.to = self.address - guard let transaction = self.contract.write("setResolver", parameters: [resolverAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - return transaction - } - - public func getNameExpirity(name: BigUInt) throws -> UInt { - guard let transaction = self.contract.read("nameExpires", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let expirity = result["0"] as? UInt else {throw Web3Error.processingError(desc: "Can't get answer")} - return expirity - } - - @available(*, message: "This function should not be used to check if a name can be registered by a user. To check if a name can be registered by a user, check name availablility via the controller") - public func isNameAvailable(name: BigUInt) throws -> Bool { - guard let transaction = self.contract.read("available", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let available = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} - return available - } - - public func reclaim(from: EthereumAddress, record: BigUInt) throws -> WriteTransaction { - defaultOptions.from = from - defaultOptions.to = self.address - guard let transaction = self.contract.write("reclaim", parameters: [record as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - return transaction + + override public init(web3: web3, provider: Web3Provider, address: EthereumAddress) { + super.init(web3: web3, provider: provider, address: address) + guard let contract = self.web3.contract(Web3.Utils.baseRegistrarABI, at: self.address, abiVersion: 2) else { + return + } + self.contract = contract + } + + @available(*, message: "Available for only owner") + public func addController(from: EthereumAddress, controllerAddress: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("addController", parameters: [controllerAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + @available(*, message: "Available for only owner") + public func removeController(from: EthereumAddress, controllerAddress: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("removeController", parameters: [controllerAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + @available(*, message: "Available for only owner") + public func setResolver(from: EthereumAddress, resolverAddress: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("setResolver", parameters: [resolverAddress as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func getNameExpirity(name: BigUInt) throws -> UInt { + guard let transaction = self.contract.read("nameExpires", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let expirity = result["0"] as? UInt else {throw Web3Error.processingError(desc: "Can't get answer")} + return expirity + } + + @available(*, message: "This function should not be used to check if a name can be registered by a user. To check if a name can be registered by a user, check name availablility via the controller") + public func isNameAvailable(name: BigUInt) throws -> Bool { + guard let transaction = self.contract.read("available", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let available = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} + return available + } + + public func reclaim(from: EthereumAddress, record: BigUInt) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("reclaim", parameters: [record as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + } - } diff --git a/web3swift/Utils/ENS/ENS.swift b/web3swift/Utils/ENS/ENS.swift index 6181c81a8..b481fd704 100755 --- a/web3swift/Utils/ENS/ENS.swift +++ b/web3swift/Utils/ENS/ENS.swift @@ -11,151 +11,305 @@ import EthereumAddress public class ENS { let web3: web3 - let ensContractAddress: EthereumAddress? + var registry: Registry + var resolver: Resolver? = nil + var baseRegistrar: BaseRegistrar? = nil + var registrarController: ETHRegistrarController? = nil - init(web3: web3) { + init?(web3: web3) { self.web3 = web3 - switch web3.provider.network { - case .Mainnet?: - ensContractAddress = EthereumAddress("0x314159265dd8dbb310642f98f50c066173c1259b") - case .Rinkeby?: - ensContractAddress = EthereumAddress("0xe7410170f87102df0055eb195163a03b7f2bff4a") - case .Ropsten?: - ensContractAddress = EthereumAddress("0x112234455c3a32fd11230c42e7bccd4a84e02010") - default: - ensContractAddress = nil - } - } - - lazy var registryContract: web3.web3contract = { - let contract = self.web3.contract(Web3.Utils.ensRegistryABI, at: self.ensContractAddress, abiVersion: 2) - precondition(contract != nil) - return contract! - }() + guard let registry = Registry(web3: web3) else { + return nil + } + self.registry = registry + } - lazy var defaultOptions: TransactionOptions = { - return TransactionOptions.defaultOptions - }() + func useENSResolver(_ resolver: Resolver) throws -> ENS { + guard resolver.web3.provider.url == self.web3.provider.url else { + throw Web3Error.processingError(desc: "Resolver should use same provider as ENS") + } + self.resolver = resolver + return self + } - //MARK: - Convenience methods - public func getAddress(_ domain: String) throws -> EthereumAddress { - guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} - guard let isAddrSupports = try? resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) else {throw Web3Error.processingError(desc: "Resolver don't support interface with this ID")} - guard isAddrSupports else {throw Web3Error.processingError(desc: "Address isn't supported")} - guard let addr = try? resolver.addr(forDomain: domain) else {throw Web3Error.processingError(desc: "Can't get address")} - return addr + func useENSResolver(withDomain domain: String) throws -> ENS { + guard let resolver = try? self.registry.getResolver(forDomain: domain) else { + throw Web3Error.processingError(desc: "No resolver for this domain") + } + self.resolver = resolver + return self } + func useBaseRegistrar(_ baseRegistrar: BaseRegistrar) throws -> ENS { + guard baseRegistrar.web3.provider.url == self.web3.provider.url else { + throw Web3Error.processingError(desc: "Base registrar should use same provider as ENS") + } + self.baseRegistrar = baseRegistrar + return self + } - public func setAddress(domain: String, address: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} - guard let isAddrSupports = try? resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) else {throw Web3Error.processingError(desc: "Resolver don't support interface with this ID")} - guard isAddrSupports else {throw Web3Error.processingError(desc: "Address isn't supported")} - guard let result = try? resolver.setAddr(node: domain, address: address, options: options, password: password) else {throw Web3Error.processingError(desc: "Can't get result")} - return result + func useBaseRegistrar(withAddress address: EthereumAddress) -> ENS { + let baseRegistrar = BaseRegistrar(web3: web3, address: address) + self.baseRegistrar = baseRegistrar + return self } - public func getPubkey(domain: String) throws -> PublicKey { - guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} - guard let isPubkeySupports = try? resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.pubkey.hash()) else {throw Web3Error.processingError(desc: "Resolver don't support interface with this ID")} - guard isPubkeySupports else {throw Web3Error.processingError(desc: "Pubkey isn't supported")} - guard let pubkey = try? resolver.pubkey(node: domain) else {throw Web3Error.processingError(desc: "Can't get pubkey")} - return pubkey + func useRegistrarController(_ registrarController: ETHRegistrarController) throws -> ENS { + guard registrarController.web3.provider.url == self.web3.provider.url else { + throw Web3Error.processingError(desc: "Registrar controller should use same provider as ENS") + } + self.registrarController = registrarController + return self } - public func setPubkey(domain: String, x: String, y: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} - guard let result = try? resolver.setPubkey(node: domain, x: x, y: y, options: options, password: password) else {throw Web3Error.processingError(desc: "Can't get result")} - return result + func useRegistrarController(withAddress address: EthereumAddress) -> ENS { + let registrarController = ETHRegistrarController(web3: web3, address: address) + self.registrarController = registrarController + return self } - public func getContent(domain: String) throws -> String { - guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} - guard let content = try? resolver.content(node: domain) else {throw Web3Error.processingError(desc: "Can't get content")} - return content + lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions + }() + + //MARK: - Convenience resolver methods + public func getAddress(forNode node: String) throws -> EthereumAddress { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isAddrSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.addr.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isAddrSupports else { + throw Web3Error.processingError(desc: "Address isn't supported") + } + guard let addr = try? resolver?.getAddress(forNode: node) else { + throw Web3Error.processingError(desc: "Can't get address") + } + return addr } - public func setContent(domain: String, hash: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} - guard let result = try? resolver.setContent(node: domain, hash: hash, options: options, password: password) else {throw Web3Error.processingError(desc: "Can't get result")} + public func setAddress(forNode node: String, address: EthereumAddress, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isAddrSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.addr.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isAddrSupports else { + throw Web3Error.processingError(desc: "Address isn't supported") + } + var options = options ?? defaultOptions + options.to = self.resolver?.resolverContractAddress + guard let result = try? resolver?.setAddress(forNode: node, address: address, options: options, password: password) else { + throw Web3Error.processingError(desc: "Can't get result") + } return result } - public func getMultihash(domain: String) throws -> Data { - guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} - guard let multihash = try? resolver.multihash(node: domain) else {throw Web3Error.processingError(desc: "Can't get multihash")} - return multihash + public func getName(forNode node: String) throws -> String { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isNameSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.name.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isNameSupports else { + throw Web3Error.processingError(desc: "Name isn't supported") + } + guard let name = try? resolver?.getCanonicalName(forNode: node) else { + throw Web3Error.processingError(desc: "Can't get name") + } + return name } + public func setName(forNode node: String, name: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isNameSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.name.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isNameSupports else { + throw Web3Error.processingError(desc: "Name isn't supported") + } + var options = options ?? defaultOptions + options.to = self.resolver?.resolverContractAddress + guard let result = try? resolver?.setCanonicalName(forNode: node, name: name, options: options, password: password) else { + throw Web3Error.processingError(desc: "Can't get result") + } + return result + } - //MARK: - Returns resolver for the given domain - public func resolver(forDomain domain: String) throws -> ResolverENS { - guard let nameHash = NameHash.nameHash(domain) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.registryContract.read("resolver", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let resolverAddress = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "No address in result")} - return ResolverENS(web3: self.web3, resolverAddress: resolverAddress) + public func getContent(forNode node: String) throws -> String { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isContentSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.content.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isContentSupports else { + throw Web3Error.processingError(desc: "Content isn't supported") + } + guard let content = try? resolver?.getContentHash(forNode: node) else { + throw Web3Error.processingError(desc: "Can't get content") + } + return content } - //Returns node's owner address - public func owner(node: String) throws -> EthereumAddress { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.registryContract.read("owner", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let address = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "No address in result")} - return address + public func setContent(forNode node: String, hash: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isContentSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.content.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isContentSupports else { + throw Web3Error.processingError(desc: "Content isn't supported") + } + var options = options ?? defaultOptions + options.to = self.resolver?.resolverContractAddress + guard let result = try? resolver?.setContentHash(forNode: node, hash: hash, options: options, password: password) else { + throw Web3Error.processingError(desc: "Can't get result") + } + return result } - //Untested - public func ttl(node: String) throws -> BigUInt { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.registryContract.read("ttl", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let ans = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "No answer in result")} - return ans + public func getABI(forNode node: String, contentType: ENS.Resolver.ContentType) throws -> (BigUInt, Data) { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isABISupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.ABI.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isABISupports else { + throw Web3Error.processingError(desc: "ABI isn't supported") + } + guard let abi = try? resolver?.getContractABI(forNode: node, contentType: contentType) else { + throw Web3Error.processingError(desc: "Can't get ABI") + } + return abi } - // function setOwner(bytes32 node, address owner); - public func setOwner(node: String, owner: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.registryContract.write("setOwner", parameters: [nameHash, owner] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + public func setABI(forNode node: String, contentType: ENS.Resolver.ContentType, data: Data, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isABISupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.ABI.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isABISupports else { + throw Web3Error.processingError(desc: "ABI isn't supported") + } + var options = options ?? defaultOptions + options.to = self.resolver?.resolverContractAddress + guard let result = try? resolver?.setContractABI(forNode: node, contentType: contentType, data: data, options: options, password: password) else { + throw Web3Error.processingError(desc: "Can't get result") + } return result } - // function setSubnodeOwner(bytes32 node, bytes32 label, address owner); - public func setSubnodeOwner(node: String, label: String, owner: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let labelHash = NameHash.nameHash(label) else {throw Web3Error.processingError(desc: "Failed to get label hash")} - guard let transaction = self.registryContract.write("setSubnodeOwner", parameters: [nameHash, labelHash, owner] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result + public func getPublicKey(forNode node: String) throws -> PublicKey { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isPKSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.pubkey.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isPKSupports else { + throw Web3Error.processingError(desc: "Public Key isn't supported") + } + guard let pk = try? resolver?.getPublicKey(forNode: node) else { + throw Web3Error.processingError(desc: "Can't get Public Key") + } + return pk } - // function setResolver(bytes32 node, address resolver); - public func setResolver(node: String, resolver: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.registryContract.write("setResolver", parameters: [nameHash, resolver] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + public func setPublicKey(forNode node: String, publicKey: PublicKey, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isPKSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.pubkey.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isPKSupports else { + throw Web3Error.processingError(desc: "Public Key isn't supported") + } + var options = options ?? defaultOptions + options.to = self.resolver?.resolverContractAddress + guard let result = try? resolver?.setPublicKey(forNode: node, publicKey: publicKey, options: options, password: password) else { + throw Web3Error.processingError(desc: "Can't get result") + } return result } - // function setTTL(bytes32 node, uint64 ttl); - public func setTTL(node: String, ttl: BigUInt, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.registryContract.write("setTTL", parameters: [nameHash, ttl] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result + public func getText(forNode node: String, key: String) throws -> String { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isTextSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.text.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isTextSupports else { + throw Web3Error.processingError(desc: "Text isn't supported") + } + guard let text = try? resolver?.getTextData(forNode: node, key: key) else { + throw Web3Error.processingError(desc: "Can't get text") + } + return text } - private func getOptions(_ options: TransactionOptions) -> TransactionOptions { - var options = options - options.to = self.ensContractAddress - return options + public func setText(forNode node: String, key: String, value: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + if resolver == nil{ + guard let res = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") + } + self.resolver = res + } + guard let isTextSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.text.hash()) else { + throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") + } + guard isTextSupports else { + throw Web3Error.processingError(desc: "Text isn't supported") + } + var options = options ?? defaultOptions + options.to = self.resolver?.resolverContractAddress + guard let result = try? resolver?.setTextData(forNode: node, key: key, value: value, options: options, password: password) else { + throw Web3Error.processingError(desc: "Can't get result") + } + return result } } - diff --git a/web3swift/Utils/ENS/ENSRegistry.swift b/web3swift/Utils/ENS/ENSRegistry.swift new file mode 100644 index 000000000..3a7fac16f --- /dev/null +++ b/web3swift/Utils/ENS/ENSRegistry.swift @@ -0,0 +1,110 @@ +// +// ENSRegistry.swift +// web3swift +// +// Created by Anton on 17/04/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress + +public extension ENS { + class Registry { + let web3: web3 + let registryContractAddress: EthereumAddress? + + init?(web3: web3) { + self.web3 = web3 + switch web3.provider.network { + case .Mainnet?: + registryContractAddress = EthereumAddress("0x314159265dd8dbb310642f98f50c066173c1259b") + case .Rinkeby?: + registryContractAddress = EthereumAddress("0xe7410170f87102df0055eb195163a03b7f2bff4a") + case .Ropsten?: + registryContractAddress = EthereumAddress("0x112234455c3a32fd11230c42e7bccd4a84e02010") + default: + let url = web3.provider.url.absoluteString + if url.contains("https://rpc.goerli.mudit.blog") + || url.contains("http://goerli.blockscout.com") + || url.contains("http://goerli.prylabs.net") + || url.contains("https://rpc.slock.it/goerli") { + registryContractAddress = EthereumAddress("0x112234455c3a32fd11230c42e7bccd4a84e02010") + } + return nil + } + } + + lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions + }() + + lazy var registryContract: web3.web3contract = { + let contract = self.web3.contract(Web3.Utils.ensRegistryABI, at: self.registryContractAddress, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + public func getOwner(node: String) throws -> EthereumAddress { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.read("owner", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let address = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "No address in result")} + return address + } + + public func getResolver(forDomain domain: String) throws -> Resolver { + guard let nameHash = NameHash.nameHash(domain) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.read("resolver", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let resolverAddress = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "No address in result")} + return Resolver(web3: self.web3, resolverContractAddress: resolverAddress) + } + + public func getTTL(node: String) throws -> BigUInt { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.read("ttl", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let ans = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "No answer in result")} + return ans + } + + public func setOwner(node: String, owner: EthereumAddress, options: TransactionOptions?, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.registryContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.write("setOwner", parameters: [nameHash, owner] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + + public func setSubnodeOwner(node: String, label: String, owner: EthereumAddress, options: TransactionOptions?, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.registryContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let labelHash = NameHash.nameHash(label) else {throw Web3Error.processingError(desc: "Failed to get label hash")} + guard let transaction = self.registryContract.write("setSubnodeOwner", parameters: [nameHash, labelHash, owner] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + + public func setResolver(node: String, resolver: EthereumAddress, options: TransactionOptions?, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.registryContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.write("setResolver", parameters: [nameHash, resolver] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + + public func setTTL(node: String, ttl: BigUInt, options: TransactionOptions?, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.registryContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.write("setTTL", parameters: [nameHash, ttl] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + } +} diff --git a/web3swift/Utils/ENS/ENSResolver.swift b/web3swift/Utils/ENS/ENSResolver.swift index 4549bc0c1..fa011fe0f 100755 --- a/web3swift/Utils/ENS/ENSResolver.swift +++ b/web3swift/Utils/ENS/ENSResolver.swift @@ -8,193 +8,181 @@ import Foundation import BigInt import EthereumAddress -public struct ResolverENS { - let web3: web3 - let resolverAddress: EthereumAddress - - public enum InterfaceName { - case addr - case name - case ABI - case pubkey - case text - case content - case multihash - - func hash() -> String { - switch self { - case .addr: - return "0x3b3b57de" - case .name: - return "0x691f3431" - case .ABI: - return "0x2203ab56" - case .pubkey: - return "0xc8690233" - case .text: - return "0x59d1d43c" - case .content: - return "0xbc1c58d1" - case .multihash: - return "0xe89401a1" +public extension ENS { + class Resolver { + let web3: web3 + let resolverContractAddress: EthereumAddress + + public enum ContentType: BigUInt { + case JSON = 1 + case zlibCompressedJSON = 2 + case CBOR = 4 + case URI = 8 + } + + public enum InterfaceName { + case addr + case name + case content + case ABI + case pubkey + case text + + func hash() -> String { + switch self { + case .addr: + return "0x3b3b57de" + case .name: + return "0x691f3431" + case .content: + return "0xbc1c58d1" + case .ABI: + return "0x2203ab56" + case .pubkey: + return "0xc8690233" + case .text: + return "0x59d1d43c" + } } } + + lazy var resolverContract: web3.web3contract = { + let contract = self.web3.contract(Web3.Utils.resolverABI, at: self.resolverContractAddress, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions + }() + + init(web3: web3, resolverContractAddress: EthereumAddress) { + self.web3 = web3 + self.resolverContractAddress = resolverContractAddress + } + + public func supportsInterface(interfaceID: Data) throws -> Bool { + guard let supports = try? supportsInterface(interfaceID: interfaceID.toHexString()) else {throw Web3Error.processingError(desc: "Can't get answer")} + return supports + } + + public func supportsInterface(interfaceID: String) throws -> Bool { + guard let transaction = self.resolverContract.read("supportsInterface", parameters: [interfaceID as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let supports = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} + return supports + } + + public func getAddress(forNode node: String) throws -> EthereumAddress { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("addr", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let address = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Can't get address")} + return address + } + + @available(*, message: "Available for only owner") + public func setAddress(forNode node: String, address: EthereumAddress, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.resolverContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setAddr", parameters: [nameHash, address] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + + public func getCanonicalName(forNode node: String) throws -> String { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("name", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let name = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get name")} + return name + } + + @available(*, message: "Available for only owner") + func setCanonicalName(forNode node: String, name: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.resolverContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setName", parameters: [nameHash, name] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + + func getContentHash(forNode node: String) throws -> String { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("contenthash", parameters: [nameHash] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let content = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get content")} + return content + } + + @available(*, message: "Available for only owner") + func setContentHash(forNode node: String, hash: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.resolverContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setContenthash", parameters: [nameHash, hash] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + + public func getContractABI(forNode node: String, contentType: ENS.Resolver.ContentType) throws -> (BigUInt, Data) { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("ABI", parameters: [nameHash, contentType.rawValue] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let encoding = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Can't get encoding")} + guard let data = result["1"] as? Data else {throw Web3Error.processingError(desc: "Can't get data")} + return (encoding, data) + } + + @available(*, message: "Available for only owner") + func setContractABI(forNode node: String, contentType: ENS.Resolver.ContentType, data: Data, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.resolverContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setABI", parameters: [nameHash, contentType.rawValue, data] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + + public func getPublicKey(forNode node: String) throws -> PublicKey { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("pubkey", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let x = result["x"] as? Data else {throw Web3Error.processingError(desc: "Can't get x")} + guard let y = result["y"] as? Data else {throw Web3Error.processingError(desc: "Can't get y")} + let pubkey = PublicKey(x: "0x" + x.toHexString(), y: "0x" + y.toHexString()) + return pubkey + } + + @available(*, message: "Available for only owner") + public func setPublicKey(forNode node: String, publicKey: PublicKey, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.resolverContractAddress + let pubkeyWithoutPrefix = publicKey.getComponentsWithoutPrefix() + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setPubkey", parameters: [nameHash, pubkeyWithoutPrefix.x, pubkeyWithoutPrefix.y] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } + + public func getTextData(forNode node: String, key: String) throws -> String { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("text", parameters: [nameHash, key] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let text = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get text")} + return text + } + + @available(*, message: "Available for only owner") + public func setTextData(forNode node: String, key: String, value: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { + var options = options ?? defaultOptions + options.to = self.resolverContractAddress + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setText", parameters: [nameHash, key, value] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result + } } - - lazy var resolverContract: web3.web3contract = { - let contract = self.web3.contract(Web3.Utils.resolverABI, at: self.resolverAddress, abiVersion: 2) - precondition(contract != nil) - return contract! - }() - - lazy var defaultOptions: TransactionOptions = { - return TransactionOptions.defaultOptions - }() - - init(web3: web3, resolverAddress: EthereumAddress) { - self.web3 = web3 - self.resolverAddress = resolverAddress - } - - mutating public func supportsInterface(interfaceID: Data) throws -> Bool { - guard let supports = try? supportsInterface(interfaceID: interfaceID.toHexString()) else {throw Web3Error.processingError(desc: "Can't get answer")} - return supports - } - - //MARK: - returns true if the contract supports given interface - mutating public func supportsInterface(interfaceID: String) throws -> Bool { - guard let transaction = self.resolverContract.read("supportsInterface", parameters: [interfaceID as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let supports = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} - return supports - } - - //MARK: - returns address for the given domain at given resolver - mutating public func addr(forDomain domain: String) throws -> EthereumAddress { - guard let nameHash = NameHash.nameHash(domain) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.read("addr", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let address = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Can't get address")} - return address - } - - //function setAddr(bytes32 node, address addr) - mutating public func setAddr(node: String, address: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.write("setAddr", parameters: [nameHash, address] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result - } - - //MARK: - returns corresponding ENS to the requested node - mutating public func name(node: String) throws -> String { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.read("name", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let name = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get name")} - return name - } - - mutating func setName(node: String, name: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.write("setName", parameters: [nameHash, name] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result - } - - //MARK: - returns ABI in the requested encodings - mutating public func ABI(node: String, contentType: BigUInt) throws -> (BigUInt, Data) { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.read("ABI", parameters: [nameHash, contentType] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let encoding = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Can't get encoding")} - guard let data = result["1"] as? Data else {throw Web3Error.processingError(desc: "Can't get data")} - return (encoding, data) - } - - mutating func setABI(node: String, contentType: BigUInt, data: Data, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.write("setABI", parameters: [nameHash, contentType, data] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result - } - - //MARK: - returns x and y coordinates - mutating public func pubkey(node: String) throws -> PublicKey { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.read("pubkey", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let x = result["x"] as? Data else {throw Web3Error.processingError(desc: "Can't get x")} - guard let y = result["y"] as? Data else {throw Web3Error.processingError(desc: "Can't get y")} - let pubkey = PublicKey(x: "0x" + x.toHexString(), y: "0x" + y.toHexString()) - return pubkey - } - - mutating public func setPubkey(node: String, x: String, y: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.write("setPubkey", parameters: [nameHash, x, y] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result - } - - mutating func content(node: String) throws -> String { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.read("content", parameters: [nameHash] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let content = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get content")} - return content - } - - mutating func setContent(node: String, hash: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.write("setContent", parameters: [nameHash, hash] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result - } - //function multihash(bytes32 node) public view returns (bytes) - mutating public func multihash(node: String) throws -> Data { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.read("multihash", parameters: [nameHash] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let multihash = result["0"] as? Data else {throw Web3Error.processingError(desc: "Can't get multihash")} - return multihash - } - //function setMultihash(bytes32 node, bytes hash) public only_owner(node) - mutating public func setMultihash(node: String, hash: Data, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.write("setMultihash", parameters: [nameHash, hash] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result - } - //function text(bytes32 node, string key) public view returns (string) - mutating public func text(node: String, key: String) throws -> String { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.read("text", parameters: [nameHash, key] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let text = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get text")} - return text - } - //function setText(bytes32 node, string key, string value) public only_owner(node) - mutating public func setText(node: String, key: String, value: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { - guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} - guard let transaction = self.resolverContract.write("setText", parameters: [nameHash, key, value] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} - guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} - return result - } - private func getOptions(_ options: TransactionOptions) -> TransactionOptions { - var options = options - options.to = self.resolverAddress - return options - } -} - -public struct PublicKey { - let x: String - let y: String } diff --git a/web3swift/Utils/ENS/ETHRegistrarController.swift b/web3swift/Utils/ENS/ETHRegistrarController.swift index 235bceb6b..39fd936c0 100644 --- a/web3swift/Utils/ENS/ETHRegistrarController.swift +++ b/web3swift/Utils/ENS/ETHRegistrarController.swift @@ -10,84 +10,85 @@ import Foundation import BigInt import EthereumAddress -public class ETHRegistrarController { - let web3: web3 - let address: EthereumAddress - - lazy var contract: web3.web3contract = { - let contract = self.web3.contract(Web3.Utils.ethRegistrarControllerABI, at: self.address, abiVersion: 2) - precondition(contract != nil) - return contract! - }() - - lazy var defaultOptions: TransactionOptions = { - return TransactionOptions.defaultOptions - }() - - init(web3: web3, address: EthereumAddress) { - self.web3 = web3 - self.address = address +public extension ENS { + class ETHRegistrarController { + let web3: web3 + let address: EthereumAddress + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(Web3.Utils.ethRegistrarControllerABI, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions + }() + + init(web3: web3, address: EthereumAddress) { + self.web3 = web3 + self.address = address + } + + public func getRentPrice(name: String, duration: UInt) throws -> UInt { + guard let transaction = self.contract.read("rentPrice", parameters: [name, duration] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let price = result["0"] as? UInt else {throw Web3Error.processingError(desc: "Can't get answer")} + return price + } + + public func checkNameValidity(name: String) throws -> Bool { + guard let transaction = self.contract.read("valid", parameters: [name] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let valid = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} + return valid + } + + public func isNameAvailable(name: String) throws -> Bool { + guard let transaction = self.contract.read("available", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let available = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} + return available + } + + public func calculateCommitmentHash(name: String, owner: EthereumAddress, secret: [UInt32]) throws -> [UInt32] { + guard let transaction = self.contract.read("makeCommitment", parameters: [name, owner, secret] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let hash = result["0"] as? [UInt32] else {throw Web3Error.processingError(desc: "Can't get answer")} + return hash + } + + public func sumbitCommitment(from: EthereumAddress, commitment: [UInt32]) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("commit", parameters: [commitment as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func registerName(from: EthereumAddress, name: String, owner: EthereumAddress, duration: UInt32, secret: [UInt32], price: String) throws -> WriteTransaction { + guard let amount = Web3.Utils.parseToBigUInt(price, units: .eth) else {throw Web3Error.inputError(desc: "Wrong price: no way for parsing to ether units")} + defaultOptions.value = amount + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("register", parameters: [name, owner, duration, secret] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func extendNameRegistration(from: EthereumAddress, name: String, duration: UInt32, price: String) throws -> WriteTransaction { + guard let amount = Web3.Utils.parseToBigUInt(price, units: .eth) else {throw Web3Error.inputError(desc: "Wrong price: no way for parsing to ether units")} + defaultOptions.value = amount + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("renew", parameters: [name, duration] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + @available(*, message: "Available for only owner") + public func withdraw(from: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("withdraw", parameters: [AnyObject](), extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } } - - public func getRentPrice(name: String, duration: UInt) throws -> UInt { - guard let transaction = self.contract.read("rentPrice", parameters: [name, duration] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let price = result["0"] as? UInt else {throw Web3Error.processingError(desc: "Can't get answer")} - return price - } - - public func checkNameValidity(name: String) throws -> Bool { - guard let transaction = self.contract.read("valid", parameters: [name] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let valid = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} - return valid - } - - public func isNameAvailable(name: String) throws -> Bool { - guard let transaction = self.contract.read("available", parameters: [name as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let available = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} - return available - } - - public func calculateCommitmentHash(name: String, owner: EthereumAddress, secret: [UInt32]) throws -> [UInt32] { - guard let transaction = self.contract.read("makeCommitment", parameters: [name, owner, secret] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} - guard let hash = result["0"] as? [UInt32] else {throw Web3Error.processingError(desc: "Can't get answer")} - return hash - } - - public func sumbitCommitment(from: EthereumAddress, commitment: [UInt32]) throws -> WriteTransaction { - defaultOptions.from = from - defaultOptions.to = self.address - guard let transaction = self.contract.write("commit", parameters: [commitment as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - return transaction - } - - public func registerName(from: EthereumAddress, name: String, owner: EthereumAddress, duration: UInt32, secret: [UInt32], price: String) throws -> WriteTransaction { - guard let amount = Web3.Utils.parseToBigUInt(price, units: .eth) else {throw Web3Error.inputError(desc: "Wrong price: no way for parsing to ether units")} - defaultOptions.value = amount - defaultOptions.from = from - defaultOptions.to = self.address - guard let transaction = self.contract.write("register", parameters: [name, owner, duration, secret] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - return transaction - } - - public func extendNameRegistration(from: EthereumAddress, name: String, duration: UInt32, price: String) throws -> WriteTransaction { - guard let amount = Web3.Utils.parseToBigUInt(price, units: .eth) else {throw Web3Error.inputError(desc: "Wrong price: no way for parsing to ether units")} - defaultOptions.value = amount - defaultOptions.from = from - defaultOptions.to = self.address - guard let transaction = self.contract.write("renew", parameters: [name, duration] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - return transaction - } - - @available(*, message: "Available for only owner") - public func withdraw(from: EthereumAddress) throws -> WriteTransaction { - defaultOptions.from = from - defaultOptions.to = self.address - guard let transaction = self.contract.write("withdraw", parameters: [AnyObject](), extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} - return transaction - } - } diff --git a/web3swift/Utils/ENS/PublicKey.swift b/web3swift/Utils/ENS/PublicKey.swift new file mode 100644 index 000000000..f7b000d40 --- /dev/null +++ b/web3swift/Utils/ENS/PublicKey.swift @@ -0,0 +1,26 @@ +// +// PublicKey.swift +// web3swift +// +// Created by Anton on 17/04/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// + +import Foundation + +public struct PublicKey { + public let x: String + public let y: String + + public func getComponentsWithoutPrefix() -> PublicKey { + var x = self.x + var y = self.y + if x.hasHexPrefix() { + x.removeFirst(2) + } + if y.hasHexPrefix() { + y.removeFirst(2) + } + return PublicKey(x: x, y: y) + } +} From 32d2a15112a4554155611d423a318098c96fb34f Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Thu, 18 Apr 2019 20:56:45 +0300 Subject: [PATCH 05/19] some changes in convenient ens methods, updated changelog --- CHANGELOG.md | 455 ++++++++++++++++++++-------------- web3swift/Utils/ENS/ENS.swift | 144 ++++------- 2 files changed, 316 insertions(+), 283 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 556f129d3..fc1de418f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,340 +1,409 @@ # Change Log -## [Unreleased](https://github.com/matterinc/web3swift/tree/HEAD) +## [Unreleased](https://github.com/matter-labs/web3swift/tree/HEAD) -[Full Changelog](https://github.com/matterinc/web3swift/compare/1.5.1...HEAD) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.1.3...HEAD) -**Implemented enhancements:** - -- ENS for wallets [\#12](https://github.com/matterinc/web3swift/issues/12) -- Recover passphrase from BIP32 store [\#5](https://github.com/matterinc/web3swift/issues/5) +**Fixed bugs:** -**Merged pull requests:** +- Cannot load module 'Web3swift' as 'web3swift [\#133](https://github.com/matter-labs/web3swift/issues/133) -- hotfix update pods [\#71](https://github.com/matterinc/web3swift/pull/71) ([BaldyAsh](https://github.com/BaldyAsh)) +**Closed issues:** -## [1.5.1](https://github.com/matterinc/web3swift/tree/1.5.1) (2018-10-22) -[Full Changelog](https://github.com/matterinc/web3swift/compare/1.5...1.5.1) +- web3swift 2.1.3 [\#154](https://github.com/matter-labs/web3swift/issues/154) +- Sending ETH always results in zero value [\#149](https://github.com/matter-labs/web3swift/issues/149) +- WebSockets subscriptions [\#145](https://github.com/matter-labs/web3swift/issues/145) +- 依赖该库生成framework,真机情况下会出现问题 [\#143](https://github.com/matter-labs/web3swift/issues/143) +- Building fails with compilation errors [\#140](https://github.com/matter-labs/web3swift/issues/140) **Merged pull requests:** -- Function visibility fix [\#70](https://github.com/matterinc/web3swift/pull/70) ([shamatar](https://github.com/shamatar)) +- Updated example to 2.1.3 [\#158](https://github.com/matter-labs/web3swift/pull/158) ([BaldyAsh](https://github.com/BaldyAsh)) +- Documentation update [\#153](https://github.com/matter-labs/web3swift/pull/153) ([BaldyAsh](https://github.com/BaldyAsh)) -## [1.5](https://github.com/matterinc/web3swift/tree/1.5) (2018-10-18) -[Full Changelog](https://github.com/matterinc/web3swift/compare/1.1.10...1.5) +## [2.1.3](https://github.com/matter-labs/web3swift/tree/2.1.3) (2019-04-06) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.1.2...2.1.3) **Implemented enhancements:** -- Can you add support for ERC-721 tokens [\#7](https://github.com/matterinc/web3swift/issues/7) +- WIP: WebSockets subscriptions [\#144](https://github.com/matter-labs/web3swift/pull/144) ([BaldyAsh](https://github.com/BaldyAsh)) **Closed issues:** -- Creating a new wallet is too slow [\#63](https://github.com/matterinc/web3swift/issues/63) -- need to update for Xcode10 [\#49](https://github.com/matterinc/web3swift/issues/49) -- Web3.Utils.formatToEthereumUnits [\#48](https://github.com/matterinc/web3swift/issues/48) -- Interface ideas are welcome for v2.0 [\#3](https://github.com/matterinc/web3swift/issues/3) +- Use custom JSONRPCmethod and Units [\#148](https://github.com/matter-labs/web3swift/issues/148) +- ERC20 some functions are not working [\#146](https://github.com/matter-labs/web3swift/issues/146) +- fix `pod install` absolute paths [\#97](https://github.com/matter-labs/web3swift/issues/97) +- Installing issue by pod [\#76](https://github.com/matter-labs/web3swift/issues/76) **Merged pull requests:** -- Add TxPool and ERC721 native class [\#68](https://github.com/matterinc/web3swift/pull/68) ([shamatar](https://github.com/shamatar)) -- Feature/erc721 [\#67](https://github.com/matterinc/web3swift/pull/67) ([BaldyAsh](https://github.com/BaldyAsh)) -- Feature/adding logo [\#66](https://github.com/matterinc/web3swift/pull/66) ([BaldyAsh](https://github.com/BaldyAsh)) -- adds txpool function and its local node test [\#64](https://github.com/matterinc/web3swift/pull/64) ([currybab](https://github.com/currybab)) -- License got reverted somewhere after PRs [\#60](https://github.com/matterinc/web3swift/pull/60) ([shamatar](https://github.com/shamatar)) +- 2.1.3 fix No2 [\#152](https://github.com/matter-labs/web3swift/pull/152) ([BaldyAsh](https://github.com/BaldyAsh)) +- 2.1.3 fix [\#151](https://github.com/matter-labs/web3swift/pull/151) ([BaldyAsh](https://github.com/BaldyAsh)) +- 2.1.3 [\#150](https://github.com/matter-labs/web3swift/pull/150) ([BaldyAsh](https://github.com/BaldyAsh)) +- Swift 5 update [\#142](https://github.com/matter-labs/web3swift/pull/142) ([BaldyAsh](https://github.com/BaldyAsh)) -## [1.1.10](https://github.com/matterinc/web3swift/tree/1.1.10) (2018-10-04) -[Full Changelog](https://github.com/matterinc/web3swift/compare/1.1.9...1.1.10) +## [2.1.2](https://github.com/matter-labs/web3swift/tree/2.1.2) (2019-03-30) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.1.1...2.1.2) **Merged pull requests:** -- Preliminary ENS support, start module splitting [\#59](https://github.com/matterinc/web3swift/pull/59) ([shamatar](https://github.com/shamatar)) -- Feature/readme improvement [\#55](https://github.com/matterinc/web3swift/pull/55) ([BaldyAsh](https://github.com/BaldyAsh)) -- Feature/support obj c [\#54](https://github.com/matterinc/web3swift/pull/54) ([BaldyAsh](https://github.com/BaldyAsh)) -- Feature/ENSsupport [\#53](https://github.com/matterinc/web3swift/pull/53) ([FesenkoG](https://github.com/FesenkoG)) -- Add Travis configuration [\#52](https://github.com/matterinc/web3swift/pull/52) ([skywinder](https://github.com/skywinder)) -- Added ERC-20 token for testing web3swift lib [\#50](https://github.com/matterinc/web3swift/pull/50) ([BaldyAsh](https://github.com/BaldyAsh)) +- Swift 5 update [\#141](https://github.com/matter-labs/web3swift/pull/141) ([BaldyAsh](https://github.com/BaldyAsh)) +- Swift 5 update [\#139](https://github.com/matter-labs/web3swift/pull/139) ([BaldyAsh](https://github.com/BaldyAsh)) +- 2.1.1 [\#136](https://github.com/matter-labs/web3swift/pull/136) ([BaldyAsh](https://github.com/BaldyAsh)) -## [1.1.9](https://github.com/matterinc/web3swift/tree/1.1.9) (2018-09-18) -[Full Changelog](https://github.com/matterinc/web3swift/compare/1.1.7...1.1.9) +## [2.1.1](https://github.com/matter-labs/web3swift/tree/2.1.1) (2019-03-26) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.1.0...2.1.1) -**Fixed bugs:** +**Implemented enhancements:** -- eth.getAccounts\(\) function returns an empty address Array [\#24](https://github.com/matterinc/web3swift/issues/24) -- EIP681 bug fixes, accessibility in Function changed [\#35](https://github.com/matterinc/web3swift/pull/35) ([FesenkoG](https://github.com/FesenkoG)) +- Support ST-20 [\#103](https://github.com/matter-labs/web3swift/issues/103) **Closed issues:** -- the version 1.1.6 couldn't from password and keystore to get the privateKey [\#32](https://github.com/matterinc/web3swift/issues/32) -- Need implementation of EIP-681 parsing [\#25](https://github.com/matterinc/web3swift/issues/25) +- Expected to decode Array\ but found a dictionary instead. [\#128](https://github.com/matter-labs/web3swift/issues/128) +- Decoding Input/Output data [\#127](https://github.com/matter-labs/web3swift/issues/127) +- nodeError\("replacement transaction underpriced"\) [\#42](https://github.com/matter-labs/web3swift/issues/42) **Merged pull requests:** -- Update for XCode 10 [\#39](https://github.com/matterinc/web3swift/pull/39) ([shamatar](https://github.com/shamatar)) -- Basic ENS support added, EIP681 parsing supports ENS from now. [\#38](https://github.com/matterinc/web3swift/pull/38) ([FesenkoG](https://github.com/FesenkoG)) +- Fix/podspec [\#135](https://github.com/matter-labs/web3swift/pull/135) ([BaldyAsh](https://github.com/BaldyAsh)) +- let some functions public for customization [\#132](https://github.com/matter-labs/web3swift/pull/132) ([scottphc](https://github.com/scottphc)) +- WIP: ST-20 and Security Token support [\#130](https://github.com/matter-labs/web3swift/pull/130) ([BaldyAsh](https://github.com/BaldyAsh)) +- Recent updates [\#126](https://github.com/matter-labs/web3swift/pull/126) ([BaldyAsh](https://github.com/BaldyAsh)) +- Recent updates [\#125](https://github.com/matter-labs/web3swift/pull/125) ([BaldyAsh](https://github.com/BaldyAsh)) -## [1.1.7](https://github.com/matterinc/web3swift/tree/1.1.7) (2018-09-13) -[Full Changelog](https://github.com/matterinc/web3swift/compare/1.1.6...1.1.7) +## [2.1.0](https://github.com/matter-labs/web3swift/tree/2.1.0) (2019-03-06) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.0.4...2.1.0) -**Fixed bugs:** +**Implemented enhancements:** -- Thread blocked [\#16](https://github.com/matterinc/web3swift/issues/16) +- Support ERC-888 [\#102](https://github.com/matter-labs/web3swift/issues/102) +- Support SRC-20 [\#101](https://github.com/matter-labs/web3swift/issues/101) +- Support S3 [\#99](https://github.com/matter-labs/web3swift/issues/99) +- Support ERC-1400 [\#98](https://github.com/matter-labs/web3swift/issues/98) +- ERC-165 support [\#82](https://github.com/matter-labs/web3swift/issues/82) +- ERC-777 support [\#81](https://github.com/matter-labs/web3swift/issues/81) +- How do I add an account to a node [\#78](https://github.com/matter-labs/web3swift/issues/78) +- Support Web3View functionality [\#30](https://github.com/matter-labs/web3swift/issues/30) **Closed issues:** -- How to create same address and keystore by mnemonics? [\#22](https://github.com/matterinc/web3swift/issues/22) +- eth\_estimateGas is not supplied the gasPrice parameter [\#118](https://github.com/matter-labs/web3swift/issues/118) +- Carthage support missing. [\#115](https://github.com/matter-labs/web3swift/issues/115) +- \[Utility\] Contract event listener [\#112](https://github.com/matter-labs/web3swift/issues/112) +- Support ERC-1644 [\#111](https://github.com/matter-labs/web3swift/issues/111) +- Support ERC-1643 [\#110](https://github.com/matter-labs/web3swift/issues/110) +- Support ERC-1594 [\#109](https://github.com/matter-labs/web3swift/issues/109) +- Support ERC-1410 [\#108](https://github.com/matter-labs/web3swift/issues/108) +- Support ERC-820 [\#107](https://github.com/matter-labs/web3swift/issues/107) +- Error: Failed to fetch gas estimate on intermediate call [\#106](https://github.com/matter-labs/web3swift/issues/106) +- Can't use ENS in 2.0 [\#92](https://github.com/matter-labs/web3swift/issues/92) +- Can't use EIP681 parser [\#91](https://github.com/matter-labs/web3swift/issues/91) +- enhancement - end to end newbie instructions to deploy erc20 token locally / initialize wallets - then successfully transfer it in app [\#89](https://github.com/matter-labs/web3swift/issues/89) +- Can you support objective-c [\#88](https://github.com/matter-labs/web3swift/issues/88) +- SolidityType has no member 'allSatisfy'? [\#87](https://github.com/matter-labs/web3swift/issues/87) +- How to encode data for appending constructor to bytecode for deploying contract? [\#86](https://github.com/matter-labs/web3swift/issues/86) +- web3swift.Web3Error error 4 for get balance [\#77](https://github.com/matter-labs/web3swift/issues/77) +- How to signed Transaction ? get raw [\#62](https://github.com/matter-labs/web3swift/issues/62) +- how to get token using Signing Transaction [\#58](https://github.com/matter-labs/web3swift/issues/58) +- Can the signtypedMessage function be added [\#45](https://github.com/matter-labs/web3swift/issues/45) +- How to get Keystore by PrivateKeyData ? [\#19](https://github.com/matter-labs/web3swift/issues/19) +- encoding name\(ens\) for sending register contract [\#15](https://github.com/matter-labs/web3swift/issues/15) **Merged pull requests:** -- Fix ethereum address parsing, add readme [\#34](https://github.com/matterinc/web3swift/pull/34) ([shamatar](https://github.com/shamatar)) -- complete EIP681, fix the most stupid Ethereum address parsing [\#33](https://github.com/matterinc/web3swift/pull/33) ([shamatar](https://github.com/shamatar)) -- Add examples to readme, prettify formatting [\#31](https://github.com/matterinc/web3swift/pull/31) ([skywinder](https://github.com/skywinder)) -- continue eip681 work [\#27](https://github.com/matterinc/web3swift/pull/27) ([shamatar](https://github.com/shamatar)) -- Implement EIP681 parser \(untested\) [\#26](https://github.com/matterinc/web3swift/pull/26) ([shamatar](https://github.com/shamatar)) -- Change access control of function fromRaw in struct EthereumTransaction [\#11](https://github.com/matterinc/web3swift/pull/11) ([Plazmathron](https://github.com/Plazmathron)) - -## [1.1.6](https://github.com/matterinc/web3swift/tree/1.1.6) (2018-09-04) -[Full Changelog](https://github.com/matterinc/web3swift/compare/1.1.5...1.1.6) +- 2.1.0 [\#124](https://github.com/matter-labs/web3swift/pull/124) ([BaldyAsh](https://github.com/BaldyAsh)) +- Fix/remove deprecated [\#123](https://github.com/matter-labs/web3swift/pull/123) ([BaldyAsh](https://github.com/BaldyAsh)) +- Revert "2.1" [\#122](https://github.com/matter-labs/web3swift/pull/122) ([BaldyAsh](https://github.com/BaldyAsh)) +- 2.1 [\#121](https://github.com/matter-labs/web3swift/pull/121) ([BaldyAsh](https://github.com/BaldyAsh)) +- Fix/remove deprecated [\#120](https://github.com/matter-labs/web3swift/pull/120) ([BaldyAsh](https://github.com/BaldyAsh)) +- fixed estimate gas problem [\#119](https://github.com/matter-labs/web3swift/pull/119) ([BaldyAsh](https://github.com/BaldyAsh)) +- Added Deed and Registrar ABI to Web3+Utils [\#114](https://github.com/matter-labs/web3swift/pull/114) ([barrasso](https://github.com/barrasso)) +- Fixed EIP681 and EIP67, added and improved a lot of ERCs [\#113](https://github.com/matter-labs/web3swift/pull/113) ([BaldyAsh](https://github.com/BaldyAsh)) +- Documentation [\#105](https://github.com/matter-labs/web3swift/pull/105) ([BaldyAsh](https://github.com/BaldyAsh)) +- recent changes [\#104](https://github.com/matter-labs/web3swift/pull/104) ([BaldyAsh](https://github.com/BaldyAsh)) +- Migration to 2.0 [\#96](https://github.com/matter-labs/web3swift/pull/96) ([BaldyAsh](https://github.com/BaldyAsh)) +- Feature/readme improvement [\#85](https://github.com/matter-labs/web3swift/pull/85) ([BaldyAsh](https://github.com/BaldyAsh)) + +## [2.0.4](https://github.com/matter-labs/web3swift/tree/2.0.4) (2018-11-20) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.0.3...2.0.4) **Merged pull requests:** -- Quick fix for scrypt performance [\#17](https://github.com/matterinc/web3swift/pull/17) ([shamatar](https://github.com/shamatar)) -- adding description string to Web3Error [\#1](https://github.com/matterinc/web3swift/pull/1) ([GabCas](https://github.com/GabCas)) - -[Full Changelog](https://github.com/bankex/web3swift/compare/0.6.0...HEAD) +- introduce a fix for invalid value in gas estimation, call and send transactions [\#95](https://github.com/matter-labs/web3swift/pull/95) ([shamatar](https://github.com/shamatar)) +- Master to develop for 2.0.2 [\#94](https://github.com/matter-labs/web3swift/pull/94) ([shamatar](https://github.com/shamatar)) +- 2.0.2 [\#93](https://github.com/matter-labs/web3swift/pull/93) ([shamatar](https://github.com/shamatar)) -**Closed issues:** +## [2.0.3](https://github.com/matter-labs/web3swift/tree/2.0.3) (2018-11-20) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.0.2...2.0.3) -- Transaction or options are malformed in Token Transfer [\#78](https://github.com/BANKEX/web3swift/issues/78) -- Error when install [\#75](https://github.com/BANKEX/web3swift/issues/75) +## [2.0.2](https://github.com/matter-labs/web3swift/tree/2.0.2) (2018-11-06) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.0.1...2.0.2) **Merged pull requests:** -- update podspec and readme [\#82](https://github.com/BANKEX/web3swift/pull/82) ([shamatar](https://github.com/shamatar)) +- 2.0.1 [\#84](https://github.com/matter-labs/web3swift/pull/84) ([shamatar](https://github.com/shamatar)) -## [0.6.0](https://github.com/bankex/web3swift/tree/0.6.0) (2018-04-24) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.5.6...0.6.0) +## [2.0.1](https://github.com/matter-labs/web3swift/tree/2.0.1) (2018-11-05) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/2.0.0...2.0.1) **Closed issues:** -- InValid Account Error [\#76](https://github.com/BANKEX/web3swift/issues/76) +- ENS Functionality [\#56](https://github.com/matter-labs/web3swift/issues/56) **Merged pull requests:** -- add example of ERC20 transfer in Example [\#81](https://github.com/BANKEX/web3swift/pull/81) ([shamatar](https://github.com/shamatar)) -- include example of ERC20 token transfer [\#80](https://github.com/BANKEX/web3swift/pull/80) ([shamatar](https://github.com/shamatar)) -- Allow BIP32 keystore init from seed directly Add convenience BIP32 keystore and KeystoreV3 serialization methods Test custom path derivation after saving Add new BIP39 languages [\#74](https://github.com/BANKEX/web3swift/pull/74) ([shamatar](https://github.com/shamatar)) +- ENS fix [\#83](https://github.com/matter-labs/web3swift/pull/83) ([BaldyAsh](https://github.com/BaldyAsh)) +- Get recent develop changes [\#80](https://github.com/matter-labs/web3swift/pull/80) ([BaldyAsh](https://github.com/BaldyAsh)) -## [0.5.6](https://github.com/bankex/web3swift/tree/0.5.6) (2018-04-20) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.5.5...0.5.6) +## [2.0.0](https://github.com/matter-labs/web3swift/tree/2.0.0) (2018-10-30) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.5.1...2.0.0) -**Fixed bugs:** +**Implemented enhancements:** -- Crash when generate keystore by mnemonics [\#62](https://github.com/BANKEX/web3swift/issues/62) +- Carthage support [\#44](https://github.com/matter-labs/web3swift/issues/44) +- How to get pending transactions by this framework [\#36](https://github.com/matter-labs/web3swift/issues/36) +- ENS for wallets [\#12](https://github.com/matter-labs/web3swift/issues/12) +- Recover passphrase from BIP32 store [\#5](https://github.com/matter-labs/web3swift/issues/5) +- ERC20 API Support [\#41](https://github.com/matter-labs/web3swift/issues/41) **Closed issues:** -- BIP39 Keystore not accessible from keystore parameter path [\#68](https://github.com/BANKEX/web3swift/issues/68) +- failed to send transaction due to known transaction [\#65](https://github.com/matter-labs/web3swift/issues/65) +- List of all transactions related to account \(private key\) [\#57](https://github.com/matter-labs/web3swift/issues/57) +- Make A README & doc [\#46](https://github.com/matter-labs/web3swift/issues/46) +- 'BigUInt' is ambiguous for type lookup in this conte [\#43](https://github.com/matter-labs/web3swift/issues/43) +- Migration to web3 format \(create account\) [\#40](https://github.com/matter-labs/web3swift/issues/40) +- Interface ideas are welcome for v2.0 [\#3](https://github.com/matter-labs/web3swift/issues/3) **Merged pull requests:** -- convenience methods in web3.eth to send ETH using either raw BigUInt value in Wei, or parsing a decimal string of arbitrary units [\#72](https://github.com/BANKEX/web3swift/pull/72) ([shamatar](https://github.com/shamatar)) -- improve BIP32 serialization to disk [\#71](https://github.com/BANKEX/web3swift/pull/71) ([shamatar](https://github.com/shamatar)) -- Fix BIP32 keystore when used through Manager [\#70](https://github.com/BANKEX/web3swift/pull/70) ([shamatar](https://github.com/shamatar)) -- add marshalling and unmarshalling signature as a part of Web3.Utils [\#69](https://github.com/BANKEX/web3swift/pull/69) ([shamatar](https://github.com/shamatar)) -- Event parsing example from user case [\#67](https://github.com/BANKEX/web3swift/pull/67) ([shamatar](https://github.com/shamatar)) - -## [0.5.5](https://github.com/bankex/web3swift/tree/0.5.5) (2018-04-18) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.5.4...0.5.5) +- Carthage [\#75](https://github.com/matter-labs/web3swift/pull/75) ([BaldyAsh](https://github.com/BaldyAsh)) +- Carthage fixes [\#74](https://github.com/matter-labs/web3swift/pull/74) ([BaldyAsh](https://github.com/BaldyAsh)) +- hotfix update pods [\#71](https://github.com/matter-labs/web3swift/pull/71) ([BaldyAsh](https://github.com/BaldyAsh)) -**Closed issues:** - -- Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value [\#57](https://github.com/BANKEX/web3swift/issues/57) +## [1.5.1](https://github.com/matter-labs/web3swift/tree/1.5.1) (2018-10-22) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.5...1.5.1) **Merged pull requests:** -- Solidity bound ECRecover test and example [\#66](https://github.com/BANKEX/web3swift/pull/66) ([shamatar](https://github.com/shamatar)) -- Fix BIP 32 derivation in release build \(with optimization\) [\#65](https://github.com/BANKEX/web3swift/pull/65) ([shamatar](https://github.com/shamatar)) -- Tests refactoring [\#61](https://github.com/BANKEX/web3swift/pull/61) ([skywinder](https://github.com/skywinder)) +- Function visibility fix [\#70](https://github.com/matter-labs/web3swift/pull/70) ([shamatar](https://github.com/shamatar)) -## [0.5.4](https://github.com/bankex/web3swift/tree/0.5.4) (2018-04-16) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.5.3...0.5.4) +## [1.5](https://github.com/matter-labs/web3swift/tree/1.5) (2018-10-18) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.1.10...1.5) -**Merged pull requests:** +**Implemented enhancements:** + +- Can you add support for ERC-721 tokens [\#7](https://github.com/matter-labs/web3swift/issues/7) -- fix regression of abi encoding [\#60](https://github.com/BANKEX/web3swift/pull/60) ([shamatar](https://github.com/shamatar)) +**Closed issues:** -## [0.5.3](https://github.com/bankex/web3swift/tree/0.5.3) (2018-04-16) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.5.2...0.5.3) +- Creating a new wallet is too slow [\#63](https://github.com/matter-labs/web3swift/issues/63) +- need to update for Xcode10 [\#49](https://github.com/matter-labs/web3swift/issues/49) +- Web3.Utils.formatToEthereumUnits [\#48](https://github.com/matter-labs/web3swift/issues/48) **Merged pull requests:** -- Wider range of parameter types as input to ABI encoder [\#59](https://github.com/BANKEX/web3swift/pull/59) ([shamatar](https://github.com/shamatar)) +- Add TxPool and ERC721 native class [\#68](https://github.com/matter-labs/web3swift/pull/68) ([shamatar](https://github.com/shamatar)) +- Feature/erc721 [\#67](https://github.com/matter-labs/web3swift/pull/67) ([BaldyAsh](https://github.com/BaldyAsh)) +- Feature/adding logo [\#66](https://github.com/matter-labs/web3swift/pull/66) ([BaldyAsh](https://github.com/BaldyAsh)) +- adds txpool function and its local node test [\#64](https://github.com/matter-labs/web3swift/pull/64) ([currybab](https://github.com/currybab)) +- License got reverted somewhere after PRs [\#60](https://github.com/matter-labs/web3swift/pull/60) ([shamatar](https://github.com/shamatar)) -## [0.5.2](https://github.com/bankex/web3swift/tree/0.5.2) (2018-04-16) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.5.1...0.5.2) +## [1.1.10](https://github.com/matter-labs/web3swift/tree/1.1.10) (2018-10-04) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.1.9...1.1.10) -**Implemented enhancements:** +**Merged pull requests:** -- Signing and unsigning. [\#52](https://github.com/BANKEX/web3swift/issues/52) +- Preliminary ENS support, start module splitting [\#59](https://github.com/matter-labs/web3swift/pull/59) ([shamatar](https://github.com/shamatar)) +- Feature/readme improvement [\#55](https://github.com/matter-labs/web3swift/pull/55) ([BaldyAsh](https://github.com/BaldyAsh)) +- Feature/support obj c [\#54](https://github.com/matter-labs/web3swift/pull/54) ([BaldyAsh](https://github.com/BaldyAsh)) +- Feature/ENSsupport [\#53](https://github.com/matter-labs/web3swift/pull/53) ([FesenkoG](https://github.com/FesenkoG)) +- Add Travis configuration [\#52](https://github.com/matter-labs/web3swift/pull/52) ([skywinder](https://github.com/skywinder)) +- Added ERC-20 token for testing web3swift lib [\#50](https://github.com/matter-labs/web3swift/pull/50) ([BaldyAsh](https://github.com/BaldyAsh)) + +## [1.1.9](https://github.com/matter-labs/web3swift/tree/1.1.9) (2018-09-18) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.1.7...1.1.9) **Fixed bugs:** -- Signing identical transaction results in different raw tx [\#53](https://github.com/BANKEX/web3swift/issues/53) -- I can not use my contract ? [\#43](https://github.com/BANKEX/web3swift/issues/43) -- Use of unresolved identifier 'EthereumAddress' [\#14](https://github.com/BANKEX/web3swift/issues/14) +- eth.getAccounts\(\) function returns an empty address Array [\#24](https://github.com/matter-labs/web3swift/issues/24) +- EIP681 bug fixes, accessibility in Function changed [\#35](https://github.com/matter-labs/web3swift/pull/35) ([FesenkoG](https://github.com/FesenkoG)) **Closed issues:** -- the method " web3.eth.getBlockByNumber\(\)" reseult fail? [\#54](https://github.com/BANKEX/web3swift/issues/54) -- the method"web3Main?.eth.getBalance\(\)" result is not correct? [\#50](https://github.com/BANKEX/web3swift/issues/50) -- Documentation, samples, comments [\#13](https://github.com/BANKEX/web3swift/issues/13) +- the version 1.1.6 couldn't from password and keystore to get the privateKey [\#32](https://github.com/matter-labs/web3swift/issues/32) +- Need implementation of EIP-681 parsing [\#25](https://github.com/matter-labs/web3swift/issues/25) **Merged pull requests:** -- add ECrecover, personal sign and unlock account methods [\#58](https://github.com/BANKEX/web3swift/pull/58) ([shamatar](https://github.com/shamatar)) -- Refactor secp256k1 part Slightly update an example Start working on web3.personal [\#56](https://github.com/BANKEX/web3swift/pull/56) ([shamatar](https://github.com/shamatar)) -- fix regression [\#55](https://github.com/BANKEX/web3swift/pull/55) ([shamatar](https://github.com/shamatar)) -- fix balance, provide better transaction receipt [\#51](https://github.com/BANKEX/web3swift/pull/51) ([shamatar](https://github.com/shamatar)) +- Update for XCode 10 [\#39](https://github.com/matter-labs/web3swift/pull/39) ([shamatar](https://github.com/shamatar)) +- Basic ENS support added, EIP681 parsing supports ENS from now. [\#38](https://github.com/matter-labs/web3swift/pull/38) ([FesenkoG](https://github.com/FesenkoG)) -## [0.5.1](https://github.com/bankex/web3swift/tree/0.5.1) (2018-04-11) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.5.0...0.5.1) +## [1.1.7](https://github.com/matter-labs/web3swift/tree/1.1.7) (2018-09-13) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.1.6...1.1.7) -**Merged pull requests:** +**Fixed bugs:** -- bump podspec and release 0.5.1 [\#49](https://github.com/BANKEX/web3swift/pull/49) ([shamatar](https://github.com/shamatar)) -- Contract deployment implementation [\#48](https://github.com/BANKEX/web3swift/pull/48) ([shamatar](https://github.com/shamatar)) +- Thread blocked [\#16](https://github.com/matter-labs/web3swift/issues/16) -## [0.5.0](https://github.com/bankex/web3swift/tree/0.5.0) (2018-04-10) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.4.1...0.5.0) +**Closed issues:** -**Implemented enhancements:** +- How to create same address and keystore by mnemonics? [\#22](https://github.com/matter-labs/web3swift/issues/22) -- Support returning structs from functions [\#33](https://github.com/BANKEX/web3swift/issues/33) -- Mnemonic account with five level derivation path like M/44'/60'/0'/0/1 [\#42](https://github.com/BANKEX/web3swift/issues/42) +**Merged pull requests:** -**Fixed bugs:** +- Fix ethereum address parsing, add readme [\#34](https://github.com/matter-labs/web3swift/pull/34) ([shamatar](https://github.com/shamatar)) +- complete EIP681, fix the most stupid Ethereum address parsing [\#33](https://github.com/matter-labs/web3swift/pull/33) ([shamatar](https://github.com/shamatar)) +- Add examples to readme, prettify formatting [\#31](https://github.com/matter-labs/web3swift/pull/31) ([skywinder](https://github.com/skywinder)) +- continue eip681 work [\#27](https://github.com/matter-labs/web3swift/pull/27) ([shamatar](https://github.com/shamatar)) +- Implement EIP681 parser \(untested\) [\#26](https://github.com/matter-labs/web3swift/pull/26) ([shamatar](https://github.com/shamatar)) +- Change access control of function fromRaw in struct EthereumTransaction [\#11](https://github.com/matter-labs/web3swift/pull/11) ([Plazmathron](https://github.com/Plazmathron)) -- Build error during archiving web3swift [\#15](https://github.com/BANKEX/web3swift/issues/15) +## [1.1.6](https://github.com/matter-labs/web3swift/tree/1.1.6) (2018-09-04) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.1.5...1.1.6) **Merged pull requests:** -- merge 0.5.0 [\#47](https://github.com/BANKEX/web3swift/pull/47) ([shamatar](https://github.com/shamatar)) -- cleanup to prevent Pod from panicking [\#45](https://github.com/BANKEX/web3swift/pull/45) ([shamatar](https://github.com/shamatar)) -- Fixes for external node work and more flexibility for BIP32 childs derivation [\#44](https://github.com/BANKEX/web3swift/pull/44) ([shamatar](https://github.com/shamatar)) +- Quick fix for scrypt performance [\#17](https://github.com/matter-labs/web3swift/pull/17) ([shamatar](https://github.com/shamatar)) +- adding description string to Web3Error [\#1](https://github.com/matter-labs/web3swift/pull/1) ([GabCas](https://github.com/GabCas)) -## [0.4.1](https://github.com/bankex/web3swift/tree/0.4.1) (2018-04-07) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.4.0...0.4.1) +## [1.1.5](https://github.com/matter-labs/web3swift/tree/1.1.5) (2018-08-10) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.1.1...1.1.5) -**Implemented enhancements:** +## [1.1.1](https://github.com/matter-labs/web3swift/tree/1.1.1) (2018-07-30) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.1.0...1.1.1) -- Password for every transaction [\#16](https://github.com/BANKEX/web3swift/issues/16) -- Concurrent batched requests [\#38](https://github.com/BANKEX/web3swift/pull/38) ([skywinder](https://github.com/skywinder)) +## [1.1.0](https://github.com/matter-labs/web3swift/tree/1.1.0) (2018-07-27) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.0.1...1.1.0) -**Closed issues:** +## [1.0.1](https://github.com/matter-labs/web3swift/tree/1.0.1) (2018-07-12) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/1.0.0...1.0.1) -- there is some error in example [\#27](https://github.com/BANKEX/web3swift/issues/27) -- EthereumKeystoreV3 constructor with KeystoreParamsV3 [\#17](https://github.com/BANKEX/web3swift/issues/17) -- Example and Code are different [\#9](https://github.com/BANKEX/web3swift/issues/9) +## [1.0.0](https://github.com/matter-labs/web3swift/tree/1.0.0) (2018-07-04) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.9.0...1.0.0) -**Merged pull requests:** +## [0.9.0](https://github.com/matter-labs/web3swift/tree/0.9.0) (2018-06-18) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.8.1...0.9.0) -- ABIv2 encoder now also works. Tested for most of the types, including string\[2\] and string\[\] [\#41](https://github.com/BANKEX/web3swift/pull/41) ([shamatar](https://github.com/shamatar)) -- Tested ABIv2 parser, with no regressions [\#40](https://github.com/BANKEX/web3swift/pull/40) ([shamatar](https://github.com/shamatar)) -- Streamlined concurrency, generic operations and fanout|join are available [\#39](https://github.com/BANKEX/web3swift/pull/39) ([shamatar](https://github.com/shamatar)) +## [0.8.1](https://github.com/matter-labs/web3swift/tree/0.8.1) (2018-06-10) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.8.0...0.8.1) -## [0.4.0](https://github.com/bankex/web3swift/tree/0.4.0) (2018-04-04) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.3.6...0.4.0) +## [0.8.0](https://github.com/matter-labs/web3swift/tree/0.8.0) (2018-05-31) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.7.9...0.8.0) -**Implemented enhancements:** +## [0.7.9](https://github.com/matter-labs/web3swift/tree/0.7.9) (2018-05-31) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.7.0...0.7.9) -- Struct encoder/decoder: Using a struct in a public function with ABIEncoderV2 [\#32](https://github.com/BANKEX/web3swift/issues/32) +## [0.7.0](https://github.com/matter-labs/web3swift/tree/0.7.0) (2018-05-11) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.6.0...0.7.0) -**Closed issues:** +## [0.6.0](https://github.com/matter-labs/web3swift/tree/0.6.0) (2018-04-24) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.5.6...0.6.0) -- BIP32Keystore and EthereumKeystoreV3 can't getPrivateKeyData [\#28](https://github.com/BANKEX/web3swift/issues/28) +## [0.5.6](https://github.com/matter-labs/web3swift/tree/0.5.6) (2018-04-20) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.5.5...0.5.6) -**Merged pull requests:** +## [0.5.5](https://github.com/matter-labs/web3swift/tree/0.5.5) (2018-04-18) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.5.4...0.5.5) -- ABIEncoderV2 implementation [\#34](https://github.com/BANKEX/web3swift/pull/34) ([shamatar](https://github.com/shamatar)) +## [0.5.4](https://github.com/matter-labs/web3swift/tree/0.5.4) (2018-04-16) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.5.3...0.5.4) -## [0.3.6](https://github.com/bankex/web3swift/tree/0.3.6) (2018-04-02) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.3.5...0.3.6) +## [0.5.3](https://github.com/matter-labs/web3swift/tree/0.5.3) (2018-04-16) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.5.2...0.5.3) -## [0.3.5](https://github.com/bankex/web3swift/tree/0.3.5) (2018-03-20) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.3.4...0.3.5) +## [0.5.2](https://github.com/matter-labs/web3swift/tree/0.5.2) (2018-04-16) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.5.1...0.5.2) -**Implemented enhancements:** +## [0.5.1](https://github.com/matter-labs/web3swift/tree/0.5.1) (2018-04-11) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.5.0...0.5.1) -- KeyStoreManger has only one constructor [\#20](https://github.com/BANKEX/web3swift/issues/20) +## [0.5.0](https://github.com/matter-labs/web3swift/tree/0.5.0) (2018-04-10) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.4.1...0.5.0) -**Closed issues:** +## [0.4.1](https://github.com/matter-labs/web3swift/tree/0.4.1) (2018-04-07) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.4.0...0.4.1) -- web3contract send function incorrect error [\#25](https://github.com/BANKEX/web3swift/issues/25) -- Develop branch 404 [\#24](https://github.com/BANKEX/web3swift/issues/24) -- AbiElement.decodeReturnData supports only dynamicTypes [\#23](https://github.com/BANKEX/web3swift/issues/23) +## [0.4.0](https://github.com/matter-labs/web3swift/tree/0.4.0) (2018-04-04) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.3.6...0.4.0) -## [0.3.4](https://github.com/bankex/web3swift/tree/0.3.4) (2018-03-18) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.3.3...0.3.4) +## [0.3.6](https://github.com/matter-labs/web3swift/tree/0.3.6) (2018-04-02) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.3.5...0.3.6) -## [0.3.3](https://github.com/bankex/web3swift/tree/0.3.3) (2018-03-05) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.3.2...0.3.3) +## [0.3.5](https://github.com/matter-labs/web3swift/tree/0.3.5) (2018-03-20) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.3.4...0.3.5) -## [0.3.2](https://github.com/bankex/web3swift/tree/0.3.2) (2018-03-03) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.3.1...0.3.2) +## [0.3.4](https://github.com/matter-labs/web3swift/tree/0.3.4) (2018-03-18) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.3.3...0.3.4) -**Closed issues:** +## [0.3.3](https://github.com/matter-labs/web3swift/tree/0.3.3) (2018-03-05) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.3.2...0.3.3) -- Signing transaction without connecting to web3 provider [\#22](https://github.com/BANKEX/web3swift/issues/22) -- Transaction Receipt [\#21](https://github.com/BANKEX/web3swift/issues/21) +## [0.3.2](https://github.com/matter-labs/web3swift/tree/0.3.2) (2018-03-03) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.3.1...0.3.2) -## [0.3.1](https://github.com/bankex/web3swift/tree/0.3.1) (2018-03-01) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.3.0...0.3.1) +## [0.3.1](https://github.com/matter-labs/web3swift/tree/0.3.1) (2018-03-01) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.3.0...0.3.1) -## [0.3.0](https://github.com/bankex/web3swift/tree/0.3.0) (2018-02-27) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.2.99...0.3.0) +## [0.3.0](https://github.com/matter-labs/web3swift/tree/0.3.0) (2018-02-27) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.99...0.3.0) -## [0.2.99](https://github.com/bankex/web3swift/tree/0.2.99) (2018-02-27) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.2.98...0.2.99) +## [0.2.99](https://github.com/matter-labs/web3swift/tree/0.2.99) (2018-02-27) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.98...0.2.99) -**Closed issues:** +## [0.2.98](https://github.com/matter-labs/web3swift/tree/0.2.98) (2018-02-27) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.12...0.2.98) -- Problem with signing/sending transactions [\#8](https://github.com/BANKEX/web3swift/issues/8) +## [0.2.12](https://github.com/matter-labs/web3swift/tree/0.2.12) (2018-02-01) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.11...0.2.12) -## [0.2.98](https://github.com/bankex/web3swift/tree/0.2.98) (2018-02-27) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.2.12...0.2.98) +## [0.2.11](https://github.com/matter-labs/web3swift/tree/0.2.11) (2018-02-01) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.10...0.2.11) -**Closed issues:** +## [0.2.10](https://github.com/matter-labs/web3swift/tree/0.2.10) (2018-01-31) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.9...0.2.10) -- Method eth\_getAccounts not supported [\#7](https://github.com/BANKEX/web3swift/issues/7) -- Would crash when trying to parse my abi data [\#6](https://github.com/BANKEX/web3swift/issues/6) -- Web3 Provider [\#5](https://github.com/BANKEX/web3swift/issues/5) -- Creating a new keystore using mnemonics [\#4](https://github.com/BANKEX/web3swift/issues/4) +## [0.2.9](https://github.com/matter-labs/web3swift/tree/0.2.9) (2018-01-29) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.8...0.2.9) -**Merged pull requests:** +## [0.2.8](https://github.com/matter-labs/web3swift/tree/0.2.8) (2018-01-18) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.7...0.2.8) -- Add support for macOS [\#10](https://github.com/BANKEX/web3swift/pull/10) ([dsemenovsky](https://github.com/dsemenovsky)) +## [0.2.7](https://github.com/matter-labs/web3swift/tree/0.2.7) (2018-01-15) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.5...0.2.7) -## [0.2.12](https://github.com/bankex/web3swift/tree/0.2.12) (2018-02-01) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.2.11...0.2.12) +## [0.2.5](https://github.com/matter-labs/web3swift/tree/0.2.5) (2018-01-12) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.2.0...0.2.5) -## [0.2.11](https://github.com/bankex/web3swift/tree/0.2.11) (2018-02-01) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.2.10...0.2.11) +## [0.2.0](https://github.com/matter-labs/web3swift/tree/0.2.0) (2017-12-30) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.1.2...0.2.0) -## [0.2.10](https://github.com/bankex/web3swift/tree/0.2.10) (2018-01-31) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.2.9...0.2.10) +## [0.1.2](https://github.com/matter-labs/web3swift/tree/0.1.2) (2017-12-27) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.1.1...0.1.2) -**Closed issues:** +## [0.1.1](https://github.com/matter-labs/web3swift/tree/0.1.1) (2017-12-26) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.1.0...0.1.1) -- How to pass parameters to Contract Method? [\#3](https://github.com/BANKEX/web3swift/issues/3) +## [0.1.0](https://github.com/matter-labs/web3swift/tree/0.1.0) (2017-12-26) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.0.6...0.1.0) -## [0.2.9](https://github.com/bankex/web3swift/tree/0.2.9) (2018-01-29) -[Full Changelog](https://github.com/bankex/web3swift/compare/0.2.8...0.2.9) +## [0.0.6](https://github.com/matter-labs/web3swift/tree/0.0.6) (2017-12-26) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.0.5...0.0.6) -**Closed issues:** +## [0.0.5](https://github.com/matter-labs/web3swift/tree/0.0.5) (2017-12-21) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.0.4...0.0.5) + +## [0.0.4](https://github.com/matter-labs/web3swift/tree/0.0.4) (2017-12-21) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.0.3...0.0.4) + +## [0.0.3](https://github.com/matter-labs/web3swift/tree/0.0.3) (2017-12-20) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.0.2...0.0.3) -- Wrong conversation of the Wei. [\#2](https://github.com/BANKEX/web3swift/issues/2) -- How to connect to a Localhost Node? [\#1](https://github.com/BANKEX/web3swift/issues/1) +## [0.0.2](https://github.com/matter-labs/web3swift/tree/0.0.2) (2017-12-20) +[Full Changelog](https://github.com/matter-labs/web3swift/compare/0.0.1...0.0.2) +## [0.0.1](https://github.com/matter-labs/web3swift/tree/0.0.1) (2017-12-19) \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file diff --git a/web3swift/Utils/ENS/ENS.swift b/web3swift/Utils/ENS/ENS.swift index b481fd704..059fb0213 100755 --- a/web3swift/Utils/ENS/ENS.swift +++ b/web3swift/Utils/ENS/ENS.swift @@ -74,240 +74,204 @@ public class ENS { //MARK: - Convenience resolver methods public func getAddress(forNode node: String) throws -> EthereumAddress { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isAddrSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.addr.hash()) else { + guard let isAddrSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.addr.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isAddrSupports else { throw Web3Error.processingError(desc: "Address isn't supported") } - guard let addr = try? resolver?.getAddress(forNode: node) else { + guard let addr = try? resolver.getAddress(forNode: node) else { throw Web3Error.processingError(desc: "Can't get address") } return addr } public func setAddress(forNode node: String, address: EthereumAddress, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isAddrSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.addr.hash()) else { + guard let isAddrSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.addr.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isAddrSupports else { throw Web3Error.processingError(desc: "Address isn't supported") } var options = options ?? defaultOptions - options.to = self.resolver?.resolverContractAddress - guard let result = try? resolver?.setAddress(forNode: node, address: address, options: options, password: password) else { + options.to = resolver.resolverContractAddress + guard let result = try? resolver.setAddress(forNode: node, address: address, options: options, password: password) else { throw Web3Error.processingError(desc: "Can't get result") } return result } public func getName(forNode node: String) throws -> String { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isNameSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.name.hash()) else { + guard let isNameSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.name.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isNameSupports else { throw Web3Error.processingError(desc: "Name isn't supported") } - guard let name = try? resolver?.getCanonicalName(forNode: node) else { + guard let name = try? resolver.getCanonicalName(forNode: node) else { throw Web3Error.processingError(desc: "Can't get name") } return name } public func setName(forNode node: String, name: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isNameSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.name.hash()) else { + guard let isNameSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.name.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isNameSupports else { throw Web3Error.processingError(desc: "Name isn't supported") } var options = options ?? defaultOptions - options.to = self.resolver?.resolverContractAddress - guard let result = try? resolver?.setCanonicalName(forNode: node, name: name, options: options, password: password) else { + options.to = resolver.resolverContractAddress + guard let result = try? resolver.setCanonicalName(forNode: node, name: name, options: options, password: password) else { throw Web3Error.processingError(desc: "Can't get result") } return result } public func getContent(forNode node: String) throws -> String { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isContentSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.content.hash()) else { + guard let isContentSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.content.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isContentSupports else { throw Web3Error.processingError(desc: "Content isn't supported") } - guard let content = try? resolver?.getContentHash(forNode: node) else { + guard let content = try? resolver.getContentHash(forNode: node) else { throw Web3Error.processingError(desc: "Can't get content") } return content } public func setContent(forNode node: String, hash: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isContentSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.content.hash()) else { + guard let isContentSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.content.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isContentSupports else { throw Web3Error.processingError(desc: "Content isn't supported") } var options = options ?? defaultOptions - options.to = self.resolver?.resolverContractAddress - guard let result = try? resolver?.setContentHash(forNode: node, hash: hash, options: options, password: password) else { + options.to = resolver.resolverContractAddress + guard let result = try? resolver.setContentHash(forNode: node, hash: hash, options: options, password: password) else { throw Web3Error.processingError(desc: "Can't get result") } return result } public func getABI(forNode node: String, contentType: ENS.Resolver.ContentType) throws -> (BigUInt, Data) { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isABISupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.ABI.hash()) else { + guard let isABISupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.ABI.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isABISupports else { throw Web3Error.processingError(desc: "ABI isn't supported") } - guard let abi = try? resolver?.getContractABI(forNode: node, contentType: contentType) else { + guard let abi = try? resolver.getContractABI(forNode: node, contentType: contentType) else { throw Web3Error.processingError(desc: "Can't get ABI") } return abi } public func setABI(forNode node: String, contentType: ENS.Resolver.ContentType, data: Data, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isABISupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.ABI.hash()) else { + guard let isABISupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.ABI.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isABISupports else { throw Web3Error.processingError(desc: "ABI isn't supported") } var options = options ?? defaultOptions - options.to = self.resolver?.resolverContractAddress - guard let result = try? resolver?.setContractABI(forNode: node, contentType: contentType, data: data, options: options, password: password) else { + options.to = resolver.resolverContractAddress + guard let result = try? resolver.setContractABI(forNode: node, contentType: contentType, data: data, options: options, password: password) else { throw Web3Error.processingError(desc: "Can't get result") } return result } public func getPublicKey(forNode node: String) throws -> PublicKey { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isPKSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.pubkey.hash()) else { + guard let isPKSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.pubkey.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isPKSupports else { throw Web3Error.processingError(desc: "Public Key isn't supported") } - guard let pk = try? resolver?.getPublicKey(forNode: node) else { + guard let pk = try? resolver.getPublicKey(forNode: node) else { throw Web3Error.processingError(desc: "Can't get Public Key") } return pk } public func setPublicKey(forNode node: String, publicKey: PublicKey, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isPKSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.pubkey.hash()) else { + guard let isPKSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.pubkey.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isPKSupports else { throw Web3Error.processingError(desc: "Public Key isn't supported") } var options = options ?? defaultOptions - options.to = self.resolver?.resolverContractAddress - guard let result = try? resolver?.setPublicKey(forNode: node, publicKey: publicKey, options: options, password: password) else { + options.to = resolver.resolverContractAddress + guard let result = try? resolver.setPublicKey(forNode: node, publicKey: publicKey, options: options, password: password) else { throw Web3Error.processingError(desc: "Can't get result") } return result } public func getText(forNode node: String, key: String) throws -> String { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isTextSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.text.hash()) else { + guard let isTextSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.text.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isTextSupports else { throw Web3Error.processingError(desc: "Text isn't supported") } - guard let text = try? resolver?.getTextData(forNode: node, key: key) else { + guard let text = try? resolver.getTextData(forNode: node, key: key) else { throw Web3Error.processingError(desc: "Can't get text") } return text } public func setText(forNode node: String, key: String, value: String, options: TransactionOptions? = nil, password: String? = nil) throws -> TransactionSendingResult { - if resolver == nil{ - guard let res = try? self.registry.getResolver(forDomain: node) else { - throw Web3Error.processingError(desc: "Failed to get resolver for domain") - } - self.resolver = res + guard let resolver = try? self.registry.getResolver(forDomain: node) else { + throw Web3Error.processingError(desc: "Failed to get resolver for domain") } - guard let isTextSupports = try? resolver?.supportsInterface(interfaceID: Resolver.InterfaceName.text.hash()) else { + guard let isTextSupports = try? resolver.supportsInterface(interfaceID: Resolver.InterfaceName.text.hash()) else { throw Web3Error.processingError(desc: "Resolver don't support interface with this ID") } guard isTextSupports else { throw Web3Error.processingError(desc: "Text isn't supported") } var options = options ?? defaultOptions - options.to = self.resolver?.resolverContractAddress - guard let result = try? resolver?.setTextData(forNode: node, key: key, value: value, options: options, password: password) else { + options.to = resolver.resolverContractAddress + guard let result = try? resolver.setTextData(forNode: node, key: key, value: value, options: options, password: password) else { throw Web3Error.processingError(desc: "Can't get result") } return result From 84c6cd0b9cedebc2b2d3778480581da0e9cae9ee Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Thu, 18 Apr 2019 21:26:32 +0300 Subject: [PATCH 06/19] added registrars abis --- web3swift/Web3/Web3+Utils.swift | 1155 +++++++++++++++++++++++++++++++ 1 file changed, 1155 insertions(+) diff --git a/web3swift/Web3/Web3+Utils.swift b/web3swift/Web3/Web3+Utils.swift index 3365f294e..c5875de4e 100755 --- a/web3swift/Web3/Web3+Utils.swift +++ b/web3swift/Web3/Web3+Utils.swift @@ -3589,6 +3589,1161 @@ extension Web3.Utils { [{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"releaseDeed","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"getAllowedTime","outputs":[{"name":"timestamp","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"unhashedName","type":"string"}],"name":"invalidateName","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"},{"name":"owner","type":"address"},{"name":"value","type":"uint256"},{"name":"salt","type":"bytes32"}],"name":"shaBid","outputs":[{"name":"sealedBid","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"bidder","type":"address"},{"name":"seal","type":"bytes32"}],"name":"cancelBid","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"entries","outputs":[{"name":"","type":"uint8"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ens","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_salt","type":"bytes32"}],"name":"unsealBid","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"transferRegistrars","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"sealedBids","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"newOwner","type":"address"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_timestamp","type":"uint256"}],"name":"isAllowed","outputs":[{"name":"allowed","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"finalizeAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"registryStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sealedBid","type":"bytes32"}],"name":"newBid","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"labels","type":"bytes32[]"}],"name":"eraseNode","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hashes","type":"bytes32[]"}],"name":"startAuctions","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"deed","type":"address"},{"name":"registrationDate","type":"uint256"}],"name":"acceptRegistrarTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"startAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rootNode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"hashes","type":"bytes32[]"},{"name":"sealedBid","type":"bytes32"}],"name":"startAuctionsAndBid","outputs":[],"payable":true,"type":"function"},{"inputs":[{"name":"_ens","type":"address"},{"name":"_rootNode","type":"bytes32"},{"name":"_startDate","type":"uint256"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"AuctionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"bidder","type":"address"},{"indexed":false,"name":"deposit","type":"uint256"}],"name":"NewBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"status","type":"uint8"}],"name":"BidRevealed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"HashRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"}],"name":"HashReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":true,"name":"name","type":"string"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"registrationDate","type":"uint256"}],"name":"HashInvalidated","type":"event"}] """ + public static var ethRegistrarControllerABI = """ +[ + { + "constant": true, + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_prices", + "type": "address" + } + ], + "name": "setPriceOracle", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_minCommitmentAge", + "type": "uint256" + }, + { + "name": "_maxCommitmentAge", + "type": "uint256" + } + ], + "name": "setCommitmentAges", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "commitments", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "duration", + "type": "uint256" + } + ], + "name": "rentPrice", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "duration", + "type": "uint256" + }, + { + "name": "secret", + "type": "bytes32" + } + ], + "name": "register", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_REGISTRATION_DURATION", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "minCommitmentAge", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "name", + "type": "string" + } + ], + "name": "valid", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "duration", + "type": "uint256" + } + ], + "name": "renew", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "name", + "type": "string" + } + ], + "name": "available", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "maxCommitmentAge", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "commitment", + "type": "bytes32" + } + ], + "name": "commit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "secret", + "type": "bytes32" + } + ], + "name": "makeCommitment", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "name": "_base", + "type": "address" + }, + { + "name": "_prices", + "type": "address" + }, + { + "name": "_minCommitmentAge", + "type": "uint256" + }, + { + "name": "_maxCommitmentAge", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "name", + "type": "string" + }, + { + "indexed": true, + "name": "label", + "type": "bytes32" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "cost", + "type": "uint256" + }, + { + "indexed": false, + "name": "expires", + "type": "uint256" + } + ], + "name": "NameRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "name", + "type": "string" + }, + { + "indexed": true, + "name": "label", + "type": "bytes32" + }, + { + "indexed": false, + "name": "cost", + "type": "uint256" + }, + { + "indexed": false, + "name": "expires", + "type": "uint256" + } + ], + "name": "NameRenewed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "oracle", + "type": "address" + } + ], + "name": "NewPriceOracle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + } +] +""" + + public static var baseRegistrarABI = """ +[ + { + "constant": true, + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "id", + "type": "uint256" + } + ], + "name": "reclaim", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ens", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "transferPeriodEnds", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "resolver", + "type": "address" + } + ], + "name": "setResolver", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIGRATION_LOCK_PERIOD", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "id", + "type": "uint256" + } + ], + "name": "available", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "controller", + "type": "address" + } + ], + "name": "addController", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "previousRegistrar", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "GRACE_PERIOD", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "id", + "type": "uint256" + }, + { + "name": "duration", + "type": "uint256" + } + ], + "name": "renew", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "id", + "type": "uint256" + } + ], + "name": "nameExpires", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "controllers", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "baseNode", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "label", + "type": "bytes32" + }, + { + "name": "deed", + "type": "address" + }, + { + "name": "", + "type": "uint256" + } + ], + "name": "acceptRegistrarTransfer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "controller", + "type": "address" + } + ], + "name": "removeController", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "id", + "type": "uint256" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "duration", + "type": "uint256" + } + ], + "name": "register", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_ens", + "type": "address" + }, + { + "name": "_previousRegistrar", + "type": "address" + }, + { + "name": "_baseNode", + "type": "bytes32" + }, + { + "name": "_transferPeriodEnds", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "controller", + "type": "address" + } + ], + "name": "ControllerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "controller", + "type": "address" + } + ], + "name": "ControllerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "expires", + "type": "uint256" + } + ], + "name": "NameMigrated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "expires", + "type": "uint256" + } + ], + "name": "NameRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "name": "expires", + "type": "uint256" + } + ], + "name": "NameRenewed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + } +] +""" + //function setAddr(bytes32 node, address addr) public static var resolverABI = """ [ From 1f123047453e3eded5e7be6f9ec6993994aaadd9 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Fri, 19 Apr 2019 17:39:44 +0300 Subject: [PATCH 07/19] fixed test --- web3swiftTests/web3swift_ENS_Tests.swift | 49 ++++++++++++------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/web3swiftTests/web3swift_ENS_Tests.swift b/web3swiftTests/web3swift_ENS_Tests.swift index bf78562cc..865b8652a 100755 --- a/web3swiftTests/web3swift_ENS_Tests.swift +++ b/web3swiftTests/web3swift_ENS_Tests.swift @@ -26,8 +26,8 @@ class web3swift_ENS_Tests: XCTestCase { let web = web3(provider: InfuraProvider(Networks.Mainnet)!) let ens = ENS(web3: web) let domain = "somename.eth" - let resolver = try ens.resolver(forDomain: domain) - XCTAssertEqual(resolver.resolverAddress.address.lowercased(), "0x5ffc014343cd971b7eb70732021e26c35b744cc4") + let address = try ens?.registry.getResolver(forDomain: domain).resolverContractAddress + XCTAssertEqual(address?.address.lowercased(), "0x5ffc014343cd971b7eb70732021e26c35b744cc4") } catch { XCTFail() } @@ -38,9 +38,8 @@ class web3swift_ENS_Tests: XCTestCase { let web = web3(provider: InfuraProvider(Networks.Mainnet)!) let ens = ENS(web3: web) let domain = "somename.eth" - var resolver = try ens.resolver(forDomain: domain) - let address = try resolver.addr(forDomain: domain) - XCTAssertEqual(address.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac") + let address = try ens?.getAddress(forNode: domain) + XCTAssertEqual(address?.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac") } catch { XCTFail() } @@ -51,11 +50,11 @@ class web3swift_ENS_Tests: XCTestCase { let web = web3(provider: InfuraProvider(Networks.Mainnet)!) let ens = ENS(web3: web) let domain = "somename.eth" - var resolver = try ens.resolver(forDomain: domain) - let isAddrSupports = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) - let isNameSupports = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.name.hash()) - let isABIsupports = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.ABI.hash()) - let isPubkeySupports = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.pubkey.hash()) + let resolver = try ens?.registry.getResolver(forDomain: domain) + let isAddrSupports = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.addr.hash()) + let isNameSupports = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.name.hash()) + let isABIsupports = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.ABI.hash()) + let isPubkeySupports = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.pubkey.hash()) XCTAssertEqual(isAddrSupports, true) XCTAssertEqual(isNameSupports, true) XCTAssertEqual(isABIsupports, true) @@ -70,12 +69,12 @@ class web3swift_ENS_Tests: XCTestCase { let web = web3(provider: InfuraProvider(Networks.Mainnet)!) let ens = ENS(web3: web) let domain = "somename.eth" - var resolver = try ens.resolver(forDomain: domain) - let isABIsupported = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.ABI.hash()) - if isABIsupported { - let res = try resolver.ABI(node: domain, contentType: 2) - XCTAssert(res.0 == 0) - XCTAssert(res.1.count == 0) + let resolver = try ens?.registry.getResolver(forDomain: domain) + if let isABIsupported = try resolver?.supportsInterface(interfaceID: ENS.Resolver.InterfaceName.ABI.hash()), + isABIsupported { + let res = try resolver?.getContractABI(forNode: domain, contentType: .zlibCompressedJSON) + XCTAssert(res?.0 == 0) + XCTAssert(res?.1.count == 0) } else { XCTFail() } @@ -89,8 +88,8 @@ class web3swift_ENS_Tests: XCTestCase { let web = web3(provider: InfuraProvider(Networks.Mainnet)!) let ens = ENS(web3: web) let domain = "somename.eth" - let owner = try ens.owner(node: domain) - XCTAssertEqual("0xc67247454e720328714c4e17bec7640572657bee", owner.address.lowercased()) + let owner = try ens?.registry.getOwner(node: domain) + XCTAssertEqual("0xc67247454e720328714c4e17bec7640572657bee", owner?.address.lowercased()) } catch { XCTFail() } @@ -101,7 +100,7 @@ class web3swift_ENS_Tests: XCTestCase { let web = web3(provider: InfuraProvider(Networks.Mainnet)!) let ens = ENS(web3: web) let domain = "somename.eth" - let ttl = try ens.ttl(node: domain) + let ttl = try ens?.registry.getTTL(node: domain) print(ttl) } catch { XCTFail() @@ -113,8 +112,9 @@ class web3swift_ENS_Tests: XCTestCase { let web = web3(provider: InfuraProvider(Networks.Mainnet)!) let ens = ENS(web3: web) let domain = "somename.eth" - let address = try ens.getAddress(domain) - XCTAssertEqual(address.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac") + let resolver = try ens?.registry.getResolver(forDomain: domain) + let address = try resolver?.getAddress(forNode: domain) + XCTAssertEqual(address?.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac") } catch { XCTFail() } @@ -125,9 +125,10 @@ class web3swift_ENS_Tests: XCTestCase { let web = web3(provider: InfuraProvider(Networks.Mainnet)!) let ens = ENS(web3: web) let domain = "somename.eth" - let pubkey = try ens.getPubkey(domain: domain) - XCTAssert(pubkey.x == "0x0000000000000000000000000000000000000000000000000000000000000000") - XCTAssert(pubkey.y == "0x0000000000000000000000000000000000000000000000000000000000000000") + let resolver = try ens?.registry.getResolver(forDomain: domain) + let pubkey = try resolver?.getPublicKey(forNode: domain) + XCTAssert(pubkey?.x == "0x0000000000000000000000000000000000000000000000000000000000000000") + XCTAssert(pubkey?.y == "0x0000000000000000000000000000000000000000000000000000000000000000") } catch { XCTFail() } From 2ac70ec30dc5a61e131ce18f0955fc47bc7c797b Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Fri, 19 Apr 2019 17:43:20 +0300 Subject: [PATCH 08/19] fixed readme --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bbd7e27d9..208b2e7a3 100755 --- a/README.md +++ b/README.md @@ -140,8 +140,8 @@ When using this lib, please make references to this repo and give your start! :) If you are using web3swift in your app or know of an app that uses it, please add it to [this list](https://github.com/matter-labs/web3swift/wiki/Apps-using-web3swift). -- If you **need help**, use [Stack Overflow](https://stackoverflow.com/questions/tagged/web3swift) and tag `web3swift`. -- If you need to **find or understand an API**, check [our documentation](http://web3swift.github.io/web3swift/). +- If you **need help**, [open an issue](https://github.com/matter-labs/web3swift/issues). +- If you need to **find or understand an API**, check [our documentation](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md). - If you'd like to **see web3swift best practices**, check [Apps using this library](https://github.com/matter-labs/web3swift/wiki/Apps-using-web3swift). - If you **found a bug**, [open an issue](https://github.com/matter-labs/web3swift/issues). - If you **have a feature request**, [open an issue](https://github.com/matter-labs/web3swift/issues). @@ -270,7 +270,6 @@ func setLocalNode(port: Int = 8545) -> Web3? { - [x] Complete Documentation (https://web3swift.github.io/web3swift) - [x] Modularity with the basic Web3 subspec/SPM (the most basic functions like transaction signing and interacting with an http rpc server) and other modules with additional functionality - [x] [R-Token](https://github.com/harborhq/r-token) - Smart Contracts for applying regulatory compliance to tokenized securities issuance and trading -- [x] Complete support Infura Websockets API - [x] Support IPFS via Infura public IPFS gateway - [x] Support more blockchains - Ripple, Bitcoin, EOS, etc. - [x] Performance Improvements From b40b29fd25a43e73cfe423e83d96b859e1330aae Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Fri, 19 Apr 2019 17:45:39 +0300 Subject: [PATCH 09/19] removed empty advancedusage --- Documentation/AdvancedUsage.md | 1 - 1 file changed, 1 deletion(-) delete mode 100755 Documentation/AdvancedUsage.md diff --git a/Documentation/AdvancedUsage.md b/Documentation/AdvancedUsage.md deleted file mode 100755 index 8b1378917..000000000 --- a/Documentation/AdvancedUsage.md +++ /dev/null @@ -1 +0,0 @@ - From b2627ed4f8b338b0f25f56d848d0f10ee7796dea Mon Sep 17 00:00:00 2001 From: Anton Grigorev Date: Fri, 19 Apr 2019 18:27:25 +0300 Subject: [PATCH 10/19] Update Usage.md --- Documentation/Usage.md | 68 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/Documentation/Usage.md b/Documentation/Usage.md index cde3cb161..64a8f3789 100755 --- a/Documentation/Usage.md +++ b/Documentation/Usage.md @@ -41,6 +41,11 @@ - [Get new pending transactions](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-new-pending-transactions) - [Create a new subscription over particular events](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-a-new-subscription-over-particular-events) - [Subscribe on new pending transactions](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#subscribe-on-new-pending-transactions) +- **[ENS](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#ens)** + - [Registry](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#registry) + - [Resolver](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#resolver) + - [BaseRegistrar](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#baseregistrar) + - [RegistrarController](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#registrarcontroller) ## Introduction @@ -432,3 +437,66 @@ try! socketProvider.subscribe(params: <[Encodable]>) try! socketProvider.subscribeOnNewPendingTransactions() ``` +## ENS + +You need ENS instance for future actions: +```swift +let web = web3(provider: InfuraProvider(Networks.Mainnet)!) +let ens = ENS(web3: web)! +``` + +### Registry + +You can get/set owner, resolver, ttl via ENS property registry: +```swift +let owner = try! ens.registry.getOwner(node: node) +let resultSettingOwner = try! ens.registry.setOwner(node: node, owner: owner, options: options, password: password) +... +``` + +### Resolver + +You use convenient resolver methods from ENS instance: +```swift +let address = try! ens.getAddress(forNode: node) +let name = try! ens.getName(forNode: node) +let content = try! ens.getContent(forNode: node) +let abi = try! ens.getABI(forNode: node) +let pubkey = try! ens.getPublicKey(forNode: node) +let text = try! ens.getText(forNode: node, key: key) + +let result = try! ens.setAddress(forNode: node, address: address, options: options, password: password) +let result = try! ens.setName(forNode: node, name: name, options: options, password: password) +let result = try! ens.setContent(forNode: node, hash: hash, options: options, password: password) +let result = try! ens.setABI(forNode: node, contentType: .JSON, data: data, options: options, password: password) +let result = try! ens.setPublicKey(forNode: node, publicKey: publicKey, options: options, password: password) +let result = try! ens.setText(forNode: node, key: key, value: value, options: options, password: password) +``` +or you can get resolver to use its methods directly: +```swift +let resolver = try! ens.registry.getResolver(forDomain: domain) +let doSomething = try! resolver. ... +``` +or set it as ENS instance property and use its methods from it: +```swift +try! ens.setENSResolver(withDomain: domain) +let doSomething = try! ens.resolver!. ... +``` + +### BaseRegistrar +You can set BaseRegistrar as ENS instance property and use its methods from it: +```swift +ens.setBaseRegistrar(withAddress: address) +let doSomething = try! ens.baseRegistrar!. ... +``` + +### RegistrarController +You can set RegistrarController as ENS instance property and use its methods from it: +```swift +ens.setRegistrarController(withAddresss: address) +let doSomething = try! ens.registrarController!. ... +``` + + + + From b9f46eecba937d398410ff02519f18638e1c1f45 Mon Sep 17 00:00:00 2001 From: Anton Grigorev Date: Fri, 19 Apr 2019 18:29:32 +0300 Subject: [PATCH 11/19] Update README.md --- README.md | 83 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 208b2e7a3..8f4be85b2 100755 --- a/README.md +++ b/README.md @@ -33,45 +33,50 @@ --- - [Usage Doc](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md) - **[Introduction](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#introduction)** - - *[Preffered models](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preffered-models)* - - [Preffered keys Wallet Model](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preffered-keys-wallet-model-account) - - [Preffered ERC-20 Model](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preffered-erc-20-model) -- **[Account Management](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#account-management)** - - *[Create Account](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-account)* - - [Create Account With Private Key](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-account-with-private-key) - - [Create Account With Mnemonics Phrase](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-account-with-mnemonics-phrase) - - *[Import Account](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-account)* - - [Import Account With Private Key](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#import-account-with-private-key) - - [Import Account With Mnemonics Phrase](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#import-account-with-mnemonics-phrase) - - [Get Keystore Manager from wallet data](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-keystore-manager-from-wallet-data) - - [Get wallet Private key](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-wallet-private-key) -- **[Ethereum Endpoints interaction](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#ethereum-endpoints-interaction)** - - [web3 instance](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#web3-instance) - - [Ethereum Address](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#ethereum-address) - - *[Get Balance](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-balance)* - - [Getting ETH balance](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#getting-eth-balance) - - [Getting ERC20 token balance](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#getting-erc20-token-balance) - - *[Transactions Operations](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#transactions-operations)* - - [Preparing Transaction For Sending Ether](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preparing-transaction-for-sending-ether) - - [Preparing Transaction For Sending ERC-20 Tokens](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preparing-transaction-for-sending-erc-20-tokens) - - [Preparing Write Transaction for sending to some Contract and use its method](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preparing-write-transaction-for-sending-to-some-contract-and-use-its-method) - - [Preparing Read Transaction to call some Contract method](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preparing-read-transaction-to-call-some-contract-method) - - [Send write transaction](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#writing) - - [Send read transaction](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#reading) - - [Get Block number](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-block-number) -- **[Websockets](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#websockets)** - - [Web3socketDelegate](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#web3socketdelegate) - - [Get latest new pending transactions](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-latest-new-pending-transactions) - - *[Custom Websocket Provider](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#custom-websocket-provider)* - - [Connect to custom endpoint](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#connect-to-custom-endpoint) - - [Send message](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#send-message) - - *[Infura Websocket Provider](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#infura-websocket-provider)* - - [Connect to Infura endpoint](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#connect-to-infura-endpoint) - - [Connect to custom endpoint with API similar to Infura WSS endpoint](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#connect-to-custom-endpoint-with-api-similar-to-infura-wss-endpoint) - - [Create a filter in the node to notify when something happened](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-a-filter-in-the-node-to-notify-when-something-happened) - - [Get new pending transactions](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-new-pending-transactions) - - [Create a new subscription over particular events](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-a-new-subscription-over-particular-events) - - [Subscribe on new pending transactions](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#subscribe-on-new-pending-transactions) + - *[Preffered models](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preffered-models)* + - [Preffered keys Wallet Model](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preffered-keys-wallet-model-account) + - [Preffered ERC-20 Model](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preffered-erc-20-model) + - **[Account Management](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#account-management)** + - *[Create Account](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-account)* + - [Create Account With Private Key](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-account-with-private-key) + - [Create Account With Mnemonics Phrase](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-account-with-mnemonics-phrase) + - *[Import Account](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-account)* + - [Import Account With Private Key](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#import-account-with-private-key) + - [Import Account With Mnemonics Phrase](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#import-account-with-mnemonics-phrase) + - [Get Keystore Manager from wallet data](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-keystore-manager-from-wallet-data) + - [Get wallet Private key](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-wallet-private-key) + - **[Ethereum Endpoints interaction](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#ethereum-endpoints-interaction)** + - [web3 instance](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#web3-instance) + - [Ethereum Address](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#ethereum-address) + - *[Get Balance](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-balance)* + - [Getting ETH balance](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#getting-eth-balance) + - [Getting ERC20 token balance](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#getting-erc20-token-balance) + - *[Transactions Operations](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#transactions-operations)* + - [Preparing Transaction For Sending Ether](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preparing-transaction-for-sending-ether) + - [Preparing Transaction For Sending ERC-20 Tokens](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preparing-transaction-for-sending-erc-20-tokens) + - [Preparing Write Transaction for sending to some Contract and use its method](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preparing-write-transaction-for-sending-to-some-contract-and-use-its-method) + - [Preparing Read Transaction to call some Contract method](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#preparing-read-transaction-to-call-some-contract-method) + - [Send write transaction](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#writing) + - [Send read transaction](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#reading) + - [Get Block number](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-block-number) + - **[Websockets](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#websockets)** + - [Web3socketDelegate](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#web3socketdelegate) + - [Get latest new pending transactions](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-latest-new-pending-transactions) + - *[Custom Websocket Provider](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#custom-websocket-provider)* + - [Connect to custom endpoint](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#connect-to-custom-endpoint) + - [Send message](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#send-message) + - *[Infura Websocket Provider](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#infura-websocket-provider)* + - [Connect to Infura endpoint](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#connect-to-infura-endpoint) + - [Connect to custom endpoint with API similar to Infura WSS endpoint](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#connect-to-custom-endpoint-with-api-similar-to-infura-wss-endpoint) + - [Create a filter in the node to notify when something happened](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-a-filter-in-the-node-to-notify-when-something-happened) + - [Get new pending transactions](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#get-new-pending-transactions) + - [Create a new subscription over particular events](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#create-a-new-subscription-over-particular-events) + - [Subscribe on new pending transactions](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#subscribe-on-new-pending-transactions) + - **[ENS](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#ens)** + - [Registry](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#registry) + - [Resolver](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#resolver) + - [BaseRegistrar](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#baseregistrar) + - [RegistrarController](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#registrarcontroller) ## Ready Features - [x] Swift implementation of [web3.js](https://github.com/ethereum/web3.js/) functionality :zap: From e633fd25675049e81534050858c23063fbff02a1 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Fri, 19 Apr 2019 18:29:52 +0300 Subject: [PATCH 12/19] some changes --- web3swift/Utils/EIP/EIP681.swift | 6 ++---- web3swift/Utils/ENS/ENS.swift | 18 ++++++------------ 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/web3swift/Utils/EIP/EIP681.swift b/web3swift/Utils/EIP/EIP681.swift index 4c2bc7679..24f2b907d 100755 --- a/web3swift/Utils/EIP/EIP681.swift +++ b/web3swift/Utils/EIP/EIP681.swift @@ -126,10 +126,8 @@ extension Web3 { do { let web = web3(provider: InfuraProvider(Networks.fromInt(Int(code.chainID ?? 1)) ?? Networks.Mainnet)!) let ensModel = ENS(web3: web) - guard let address = try ensModel?.useENSResolver(withDomain: ens) - .getAddress(forNode: ens) else { - return nil - } + try ensModel?.setENSResolver(withDomain: ens) + let address = try ensModel?.getAddress(forNode: ens) nativeValue = address as AnyObject } catch { return nil diff --git a/web3swift/Utils/ENS/ENS.swift b/web3swift/Utils/ENS/ENS.swift index 059fb0213..085412347 100755 --- a/web3swift/Utils/ENS/ENS.swift +++ b/web3swift/Utils/ENS/ENS.swift @@ -24,48 +24,42 @@ public class ENS { self.registry = registry } - func useENSResolver(_ resolver: Resolver) throws -> ENS { + func setENSResolver(_ resolver: Resolver) throws { guard resolver.web3.provider.url == self.web3.provider.url else { throw Web3Error.processingError(desc: "Resolver should use same provider as ENS") } self.resolver = resolver - return self } - func useENSResolver(withDomain domain: String) throws -> ENS { + func setENSResolver(withDomain domain: String) throws { guard let resolver = try? self.registry.getResolver(forDomain: domain) else { throw Web3Error.processingError(desc: "No resolver for this domain") } self.resolver = resolver - return self } - func useBaseRegistrar(_ baseRegistrar: BaseRegistrar) throws -> ENS { + func setBaseRegistrar(_ baseRegistrar: BaseRegistrar) throws { guard baseRegistrar.web3.provider.url == self.web3.provider.url else { throw Web3Error.processingError(desc: "Base registrar should use same provider as ENS") } self.baseRegistrar = baseRegistrar - return self } - func useBaseRegistrar(withAddress address: EthereumAddress) -> ENS { + func setBaseRegistrar(withAddress address: EthereumAddress) { let baseRegistrar = BaseRegistrar(web3: web3, address: address) self.baseRegistrar = baseRegistrar - return self } - func useRegistrarController(_ registrarController: ETHRegistrarController) throws -> ENS { + func setRegistrarController(_ registrarController: ETHRegistrarController) throws { guard registrarController.web3.provider.url == self.web3.provider.url else { throw Web3Error.processingError(desc: "Registrar controller should use same provider as ENS") } self.registrarController = registrarController - return self } - func useRegistrarController(withAddress address: EthereumAddress) -> ENS { + func setRegistrarController(withAddress address: EthereumAddress) { let registrarController = ETHRegistrarController(web3: web3, address: address) self.registrarController = registrarController - return self } lazy var defaultOptions: TransactionOptions = { From 0e4db0116f4975461d0cb38b98d301c27e8730f2 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Sat, 20 Apr 2019 17:34:37 +0300 Subject: [PATCH 13/19] added reverse registrar --- web3swift.xcodeproj/project.pbxproj | 18 ++- web3swift/Utils/ENS/ENS.swift | 15 +- ...Registrar.swift => ENSBaseRegistrar.swift} | 0 web3swift/Utils/ENS/ENSReverseRegistrar.swift | 68 +++++++++ web3swift/Web3/Web3+Utils.swift | 142 ++++++++++++++++++ 5 files changed, 236 insertions(+), 7 deletions(-) rename web3swift/Utils/ENS/{BaseRegistrar.swift => ENSBaseRegistrar.swift} (100%) create mode 100644 web3swift/Utils/ENS/ENSReverseRegistrar.swift diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 2f05dba08..cbb06bf8c 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -20,14 +20,16 @@ 3A3F59BF225931BE0075C9E7 /* ENSResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B219DC162154F3EE0035BF94 /* ENSResolver.swift */; }; 3A52CCB22264A6D4001C8D7A /* NonceMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81ED4EA72190D922003E932E /* NonceMiddleware.swift */; }; 3A52CCB32264A6DC001C8D7A /* NonceMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81ED4EA72190D922003E932E /* NonceMiddleware.swift */; }; - 3A52CCB72264B712001C8D7A /* BaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */; }; - 3A52CCB82264B712001C8D7A /* BaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */; }; + 3A52CCB72264B712001C8D7A /* ENSBaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* ENSBaseRegistrar.swift */; }; + 3A52CCB82264B712001C8D7A /* ENSBaseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB62264B712001C8D7A /* ENSBaseRegistrar.swift */; }; 3A52CCBA2264B728001C8D7A /* ETHRegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */; }; 3A52CCBB2264B728001C8D7A /* ETHRegistrarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */; }; 3A52CCBD226747EB001C8D7A /* PublicKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBC226747EB001C8D7A /* PublicKey.swift */; }; 3A52CCBE226747EB001C8D7A /* PublicKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBC226747EB001C8D7A /* PublicKey.swift */; }; 3A52CCC022675CFC001C8D7A /* ENSRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */; }; 3A52CCC122675CFC001C8D7A /* ENSRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */; }; + 3AD7D0AD226B5AA900E0F98D /* ENSReverseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AD7D0AC226B5AA900E0F98D /* ENSReverseRegistrar.swift */; }; + 3AD7D0AE226B5AA900E0F98D /* ENSReverseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AD7D0AC226B5AA900E0F98D /* ENSReverseRegistrar.swift */; }; 3AE8913C2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; 3AE8913D2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; 3AE8913E2256286C00D08E99 /* Web3+ERC1376.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */; }; @@ -268,10 +270,11 @@ 2B8FEFF3962166E1BEADC886 /* Pods_web3swift_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 342700493511FEB189700D13 /* Pods-web3swift-iOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig"; sourceTree = ""; }; 391A0D2EF42488E5C8AB2F71 /* Pods_web3swift_osx_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_osx_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseRegistrar.swift; sourceTree = ""; }; + 3A52CCB62264B712001C8D7A /* ENSBaseRegistrar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSBaseRegistrar.swift; sourceTree = ""; }; 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETHRegistrarController.swift; sourceTree = ""; }; 3A52CCBC226747EB001C8D7A /* PublicKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublicKey.swift; sourceTree = ""; }; 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSRegistry.swift; sourceTree = ""; }; + 3AD7D0AC226B5AA900E0F98D /* ENSReverseRegistrar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSReverseRegistrar.swift; sourceTree = ""; }; 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1155.swift"; sourceTree = ""; }; 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1376.swift"; sourceTree = ""; }; 3AE891202256286B00D08E99 /* Web3+ERC888.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC888.swift"; sourceTree = ""; }; @@ -537,7 +540,8 @@ 3A52CCBC226747EB001C8D7A /* PublicKey.swift */, B219DC162154F3EE0035BF94 /* ENSResolver.swift */, 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */, - 3A52CCB62264B712001C8D7A /* BaseRegistrar.swift */, + 3AD7D0AC226B5AA900E0F98D /* ENSReverseRegistrar.swift */, + 3A52CCB62264B712001C8D7A /* ENSBaseRegistrar.swift */, 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */, ); path = ENS; @@ -1193,6 +1197,7 @@ 3AE891642256620200D08E99 /* Web3+WebsocketProvider.swift in Sources */, 81195AB020D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, 3A52CCBD226747EB001C8D7A /* PublicKey.swift in Sources */, + 3AD7D0AD226B5AA900E0F98D /* ENSReverseRegistrar.swift in Sources */, 81EB1E4B208173D7003BD47F /* Web3+Personal.swift in Sources */, 81909D1821862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */, 81A1824B20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift in Sources */, @@ -1268,7 +1273,7 @@ 81A1822B20D67A1B0016741F /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, 815630042007BC8F00A0EC2F /* BIP39+WordLists.swift in Sources */, 8113D2CE1FD7E1590074282C /* EthereumTransaction.swift in Sources */, - 3A52CCB72264B712001C8D7A /* BaseRegistrar.swift in Sources */, + 3A52CCB72264B712001C8D7A /* ENSBaseRegistrar.swift in Sources */, 3AE8914E2256286C00D08E99 /* Web3+ERC721.swift in Sources */, 81A1821F20D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */, 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */, @@ -1322,6 +1327,7 @@ 3AE891652256620200D08E99 /* Web3+WebsocketProvider.swift in Sources */, 81909D1921862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */, 3A52CCBE226747EB001C8D7A /* PublicKey.swift in Sources */, + 3AD7D0AE226B5AA900E0F98D /* ENSReverseRegistrar.swift in Sources */, 8125F06A20499AC300A0F2FE /* BloomFilter.swift in Sources */, 81C0FD062044A8D100D82FAF /* TransactionSigner.swift in Sources */, 41948123203630530065A83B /* Web3+JSONRPC.swift in Sources */, @@ -1397,7 +1403,7 @@ 81909D1321862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */, 4194813F203630530065A83B /* Dictionary+Extension.swift in Sources */, 41948140203630530065A83B /* Array+Extension.swift in Sources */, - 3A52CCB82264B712001C8D7A /* BaseRegistrar.swift in Sources */, + 3A52CCB82264B712001C8D7A /* ENSBaseRegistrar.swift in Sources */, 3AE8914F2256286C00D08E99 /* Web3+ERC721.swift in Sources */, 81A1822020D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */, 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */, diff --git a/web3swift/Utils/ENS/ENS.swift b/web3swift/Utils/ENS/ENS.swift index 085412347..d51e17903 100755 --- a/web3swift/Utils/ENS/ENS.swift +++ b/web3swift/Utils/ENS/ENS.swift @@ -15,6 +15,7 @@ public class ENS { var resolver: Resolver? = nil var baseRegistrar: BaseRegistrar? = nil var registrarController: ETHRegistrarController? = nil + var reverseRegistrar: ReverseRegistrar? = nil init?(web3: web3) { self.web3 = web3 @@ -62,11 +63,23 @@ public class ENS { self.registrarController = registrarController } + func setReverseRegistrar(_ reverseRegistrar: ReverseRegistrar) throws { + guard reverseRegistrar.web3.provider.url == self.web3.provider.url else { + throw Web3Error.processingError(desc: "Registrar controller should use same provider as ENS") + } + self.reverseRegistrar = reverseRegistrar + } + + func setReverseRegistrar(withAddress address: EthereumAddress) { + let reverseRegistrar = ReverseRegistrar(web3: web3, address: address) + self.reverseRegistrar = reverseRegistrar + } + lazy var defaultOptions: TransactionOptions = { return TransactionOptions.defaultOptions }() - //MARK: - Convenience resolver methods + //MARK: - Convenience public resolver methods public func getAddress(forNode node: String) throws -> EthereumAddress { guard let resolver = try? self.registry.getResolver(forDomain: node) else { throw Web3Error.processingError(desc: "Failed to get resolver for domain") diff --git a/web3swift/Utils/ENS/BaseRegistrar.swift b/web3swift/Utils/ENS/ENSBaseRegistrar.swift similarity index 100% rename from web3swift/Utils/ENS/BaseRegistrar.swift rename to web3swift/Utils/ENS/ENSBaseRegistrar.swift diff --git a/web3swift/Utils/ENS/ENSReverseRegistrar.swift b/web3swift/Utils/ENS/ENSReverseRegistrar.swift new file mode 100644 index 000000000..e52ef5d1e --- /dev/null +++ b/web3swift/Utils/ENS/ENSReverseRegistrar.swift @@ -0,0 +1,68 @@ +// +// ENSReverseRegistrar.swift +// web3swift +// +// Created by Anton on 20/04/2019. +// Copyright © 2019 The Matter Inc. All rights reserved. +// + +import Foundation +import BigInt +import EthereumAddress + +public extension ENS { + class ReverseRegistrar { + let web3: web3 + let address: EthereumAddress + + lazy var contract: web3.web3contract = { + let contract = self.web3.contract(Web3.Utils.reverseRegistrarABI, at: self.address, abiVersion: 2) + precondition(contract != nil) + return contract! + }() + + lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions + }() + + init(web3: web3, address: EthereumAddress) { + self.web3 = web3 + self.address = address + } + + public func claimAddress(from: EthereumAddress, owner: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("claim", parameters: [owner as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func claimAddressWithResolver(from: EthereumAddress, owner: EthereumAddress, resolver: EthereumAddress) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("claimWithResolver", parameters: [owner, resolver] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func setName(from: EthereumAddress, name: String) throws -> WriteTransaction { + defaultOptions.from = from + defaultOptions.to = self.address + guard let transaction = self.contract.write("setName", parameters: [name] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + return transaction + } + + public func getReverseRecordName(address: EthereumAddress) throws -> Data { + guard let transaction = self.contract.read("node", parameters: [address] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let name = result["0"] as? Data else {throw Web3Error.processingError(desc: "Can't get answer")} + return name + } + + public func getDefaultResolver() throws -> EthereumAddress { + guard let transaction = self.contract.read("defaultResolver", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let address = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Can't get answer")} + return address + } + } +} diff --git a/web3swift/Web3/Web3+Utils.swift b/web3swift/Web3/Web3+Utils.swift index c5875de4e..b88efc294 100755 --- a/web3swift/Web3/Web3+Utils.swift +++ b/web3swift/Web3/Web3+Utils.swift @@ -4742,6 +4742,148 @@ extension Web3.Utils { "type": "event" } ] +""" + + public static var reverseRegistrarABI = """ +[ + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "resolver", + "type": "address" + } + ], + "name": "claimWithResolver", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "claim", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ens", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ADDR_REVERSE_NODE", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "defaultResolver", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "addr", + "type": "address" + } + ], + "name": "node", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "name", + "type": "string" + } + ], + "name": "setName", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "ensAddr", + "type": "address" + }, + { + "name": "resolverAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } +] """ //function setAddr(bytes32 node, address addr) From 1affbec060eda30b9e81f23bdced6e3ec5cbd39e Mon Sep 17 00:00:00 2001 From: Anton Grigorev Date: Sat, 20 Apr 2019 17:37:35 +0300 Subject: [PATCH 14/19] Update Usage.md --- Documentation/Usage.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Documentation/Usage.md b/Documentation/Usage.md index 64a8f3789..5224c97b3 100755 --- a/Documentation/Usage.md +++ b/Documentation/Usage.md @@ -46,6 +46,7 @@ - [Resolver](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#resolver) - [BaseRegistrar](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#baseregistrar) - [RegistrarController](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#registrarcontroller) + - [ReverseRegistrar](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#reverseregistrar) ## Introduction @@ -497,6 +498,11 @@ ens.setRegistrarController(withAddresss: address) let doSomething = try! ens.registrarController!. ... ``` - +### ReverseRegistrar +You can set ReverseRegistrar as ENS instance property and use its methods from it: +```swift +ens.setReverseRegistrar(withAddresss: address) +let doSomething = try! ens.reverseRegistrar!. ... +``` From e78081da2a3c385a06900c739f15dcb36f212fc8 Mon Sep 17 00:00:00 2001 From: Anton Grigorev Date: Sat, 20 Apr 2019 17:38:26 +0300 Subject: [PATCH 15/19] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8f4be85b2..91428ab7e 100755 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ - [Resolver](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#resolver) - [BaseRegistrar](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#baseregistrar) - [RegistrarController](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#registrarcontroller) + - [ReverseRegistrar](https://github.com/matter-labs/web3swift/blob/master/Documentation/Usage.md#reverseregistrar) ## Ready Features - [x] Swift implementation of [web3.js](https://github.com/ethereum/web3.js/) functionality :zap: From 59935aad58d505fce0d5e561370aaede188ac8a4 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Wed, 24 Apr 2019 02:17:50 +0300 Subject: [PATCH 16/19] fixed warnings --- .../web3swift 2.0 Migration Guide.md | 2 +- .../EthereumABI/Classes/ABIDecoding.swift | 2 +- .../EthereumABI/Classes/ABIEncoding.swift | 2 +- .../Classes/ABIParameterTypes.swift | 2 +- .../EthereumABI/Classes/ABIDecoding.swift | 2 +- .../EthereumABI/Classes/ABIEncoding.swift | 2 +- .../Classes/ABIParameterTypes.swift | 2 +- .../Classes/ComparisonExtensions.swift | 2 +- .../Contract/Classes/ContractProtocol.swift | 2 +- .../Contract/Classes/EthereumContract.swift | 4 +- .../EthereumFilterEncodingExtensions.swift | 2 +- .../Contract/Classes/EventFiltering.swift | 4 +- .../Classes/Web3+BrowserFunctions.swift | 2 +- .../HookedFunctions/Classes/Web3+Wallet.swift | 2 +- .../Classes/AbstractKeystore.swift | 2 +- .../Classes/BIP32Keystore.swift | 2 +- .../Classes/EthereumKeystoreV3.swift | 2 +- .../KeystoreManager/Classes/IBAN.swift | 2 +- .../Classes/KeystoreManager.swift | 2 +- .../Classes/PlainKeystore.swift | 2 +- .../ERC1155/Web3+ERC1155.swift | 2 +- .../ERC1376/Web3+ERC1376.swift | 2 +- .../ERC1400/Web3+ERC1400.swift | 2 +- .../ERC1410/Web3+ERC1410.swift | 2 +- .../ERC1594/Web3+ERC1594.swift | 2 +- .../ERC1633/Web3+ERC1633.swift | 2 +- .../ERC1643/Web3+ERC1643.swift | 2 +- .../ERC1644/Web3+ERC1644.swift | 2 +- .../ERC20/Web3+ERC20.swift | 2 +- .../ERC721/Web3+ERC721.swift | 2 +- .../ERC721x/Web3+ERC721x.swift | 2 +- .../ERC777/Web3+ERC777.swift | 2 +- .../ERC820/Web3+ERC820.swift | 2 +- .../ERC888/Web3+ERC888.swift | 2 +- .../PrecompiledContracts/ST20/Web3+ST20.swift | 2 +- .../ST20/Web3+SecurityToken.swift | 2 +- .../Promise+Web3+Eth+GetAccounts.swift | 2 +- .../Classes/Promise+Web3+Eth+GetBalance.swift | 2 +- ...Promise+Web3+Eth+GetTransactionCount.swift | 2 +- .../Promise+Web3+Personal+CreateAccount.swift | 2 +- .../Classes/Promise+Web3+Personal+Sign.swift | 2 +- .../Promise+Web3+Personal+UnlockAccount.swift | 2 +- .../Transaction/Classes/BloomFilter.swift | 2 +- .../Classes/EthereumTransaction.swift | 4 +- .../Classes/TransactionSigner.swift | 2 +- .../web3swift/Utils/Classes/EIP67Code.swift | 4 +- .../Web3/Classes/Web3+Contract.swift | 2 +- .../web3swift/Web3/Classes/Web3+Eth.swift | 2 +- .../web3swift/Web3/Classes/Web3+JSONRPC.swift | 2 +- .../Classes/Web3+MutatingTransaction.swift | 2 +- .../web3swift/Web3/Classes/Web3+Options.swift | 2 +- .../Web3/Classes/Web3+Personal.swift | 2 +- .../Web3/Classes/Web3+Protocols.swift | 2 +- .../Classes/Web3+ReadingTransaction.swift | 2 +- .../Web3/Classes/Web3+Structures.swift | 2 +- .../web3swift/Web3/Classes/Web3+Utils.swift | 4 +- .../web3swiftExample/ViewController.swift | 4 +- Podfile | 7 +- Podfile.lock | 43 +- Pods/BigInt/LICENSE.md | 0 Pods/BigInt/README.md | 0 Pods/BigInt/sources/Addition.swift | 0 Pods/BigInt/sources/BigInt.swift | 0 Pods/BigInt/sources/BigUInt.swift | 0 Pods/BigInt/sources/Bitwise Ops.swift | 0 Pods/BigInt/sources/Codable.swift | 0 Pods/BigInt/sources/Comparable.swift | 0 Pods/BigInt/sources/Data Conversion.swift | 0 Pods/BigInt/sources/Division.swift | 0 Pods/BigInt/sources/Exponentiation.swift | 0 .../sources/Floating Point Conversion.swift | 0 Pods/BigInt/sources/GCD.swift | 0 Pods/BigInt/sources/Hashable.swift | 0 Pods/BigInt/sources/Integer Conversion.swift | 0 Pods/BigInt/sources/Multiplication.swift | 0 Pods/BigInt/sources/Prime Test.swift | 0 Pods/BigInt/sources/Random.swift | 0 Pods/BigInt/sources/Shifts.swift | 0 Pods/BigInt/sources/Square Root.swift | 0 Pods/BigInt/sources/Strideable.swift | 0 Pods/BigInt/sources/String Conversion.swift | 0 Pods/BigInt/sources/Subtraction.swift | 0 Pods/BigInt/sources/Words and Bits.swift | 0 Pods/CryptoSwift/README.md | 15 +- .../Foundation/Data+Extension.swift | 2 +- .../EthereumABI/Classes/ABIExtensions.swift | 271 -- Pods/EthereumABI/EthereumABI/EthereumABI.h | 23 - Pods/EthereumABI/LICENSE | 13 - Pods/EthereumABI/README.md | 3 - .../EthereumAddress/Classes/Extensions.swift | 226 - .../EthereumAddress/EthereumAddress.h | 23 - Pods/EthereumAddress/LICENSE | 13 - Pods/EthereumAddress/README.md | 3 - .../Headers/Private/EthereumABI/EthereumABI.h | 1 - .../Private/EthereumAddress/EthereumAddress.h | 1 - Pods/Headers/Private/SwiftRLP/SwiftRLP.h | 1 - .../EthereumABI/EthereumABI-iOS-umbrella.h | 1 - .../EthereumABI/EthereumABI-iOS.modulemap | 1 - .../EthereumABI/EthereumABI-macOS-umbrella.h | 1 - .../EthereumABI/EthereumABI-macOS.modulemap | 1 - Pods/Headers/Public/EthereumABI/EthereumABI.h | 1 - .../EthereumAddress-iOS-umbrella.h | 1 - .../EthereumAddress-iOS.modulemap | 1 - .../EthereumAddress-macOS-umbrella.h | 1 - .../EthereumAddress-macOS.modulemap | 1 - .../Public/EthereumAddress/EthereumAddress.h | 1 - .../Public/SwiftRLP/SwiftRLP-iOS-umbrella.h | 1 - .../Public/SwiftRLP/SwiftRLP-iOS.modulemap | 1 - .../Public/SwiftRLP/SwiftRLP-macOS-umbrella.h | 1 - .../Public/SwiftRLP/SwiftRLP-macOS.modulemap | 1 - Pods/Headers/Public/SwiftRLP/SwiftRLP.h | 1 - Pods/Manifest.lock | 43 +- Pods/Pods.xcodeproj/project.pbxproj | 4304 ++++++----------- .../Sources/NSNotificationCenter+AnyPromise.h | 0 .../Sources/NSNotificationCenter+AnyPromise.m | 0 .../NSNotificationCenter+Promise.swift | 0 .../Foundation/Sources/NSObject+Promise.swift | 0 .../Foundation/Sources/NSTask+AnyPromise.h | 0 .../Foundation/Sources/NSTask+AnyPromise.m | 15 +- .../Sources/NSURLSession+AnyPromise.h | 0 .../Sources/NSURLSession+AnyPromise.m | 0 .../Sources/NSURLSession+Promise.swift | 2 + .../Foundation/Sources/PMKFoundation.h | 0 .../Foundation/Sources/Process+Promise.swift | 50 +- .../Foundation/Sources/afterlife.swift | 0 .../Extensions/UIKit/Sources/PMKUIKit.h | 0 .../UIKit/Sources/UIView+AnyPromise.h | 0 .../UIKit/Sources/UIView+AnyPromise.m | 0 .../UIKit/Sources/UIView+Promise.swift | 0 .../Sources/UIViewController+AnyPromise.h | 0 .../Sources/UIViewController+AnyPromise.m | 0 .../UIViewPropertyAnimator+Promise.swift | 0 Pods/PromiseKit/LICENSE | 0 Pods/PromiseKit/README.md | 72 +- Pods/PromiseKit/Sources/AnyPromise+Private.h | 0 Pods/PromiseKit/Sources/AnyPromise.h | 6 +- Pods/PromiseKit/Sources/AnyPromise.m | 0 Pods/PromiseKit/Sources/AnyPromise.swift | 0 Pods/PromiseKit/Sources/Box.swift | 4 +- Pods/PromiseKit/Sources/Catchable.swift | 12 +- Pods/PromiseKit/Sources/Configuration.swift | 24 +- .../Sources/CustomStringConvertible.swift | 0 Pods/PromiseKit/Sources/Deprecations.swift | 4 +- Pods/PromiseKit/Sources/Error.swift | 5 + Pods/PromiseKit/Sources/Guarantee.swift | 25 +- Pods/PromiseKit/Sources/LogEvent.swift | 30 + .../Sources/NSMethodSignatureForBlock.m | 0 .../PromiseKit/Sources/PMKCallVariadicBlock.m | 0 Pods/PromiseKit/Sources/Promise.swift | 4 +- Pods/PromiseKit/Sources/PromiseKit.h | 0 Pods/PromiseKit/Sources/Resolver.swift | 26 +- Pods/PromiseKit/Sources/Thenable.swift | 0 Pods/PromiseKit/Sources/after.m | 0 Pods/PromiseKit/Sources/after.swift | 4 +- Pods/PromiseKit/Sources/dispatch_promise.m | 0 Pods/PromiseKit/Sources/firstly.swift | 0 Pods/PromiseKit/Sources/fwd.h | 0 Pods/PromiseKit/Sources/hang.m | 0 Pods/PromiseKit/Sources/hang.swift | 4 + Pods/PromiseKit/Sources/join.m | 0 Pods/PromiseKit/Sources/race.m | 0 Pods/PromiseKit/Sources/race.swift | 0 Pods/PromiseKit/Sources/when.m | 0 Pods/PromiseKit/Sources/when.swift | 9 +- Pods/SipHash/LICENSE.md | 0 Pods/SipHash/README.md | 0 Pods/SipHash/SipHash/Primitive Types.swift | 0 Pods/SipHash/SipHash/RandomUInt64.swift | 0 Pods/SipHash/SipHash/SipHashable.swift | 0 Pods/SipHash/SipHash/SipHasher.swift | 0 Pods/SwiftRLP/LICENSE | 13 - Pods/SwiftRLP/SwiftRLP/SwiftRLP.h | 21 - .../BigInt-iOS/BigInt-iOS-dummy.m | 0 .../BigInt-iOS/BigInt-iOS-prefix.pch | 0 .../BigInt-iOS/BigInt-iOS-umbrella.h | 0 .../BigInt-iOS/BigInt-iOS.modulemap | 0 .../BigInt-iOS/BigInt-iOS.xcconfig | 0 .../BigInt-macOS/BigInt-macOS-dummy.m | 0 .../BigInt-macOS/BigInt-macOS-prefix.pch | 0 .../BigInt-macOS/BigInt-macOS-umbrella.h | 0 .../BigInt-macOS/BigInt-macOS.modulemap | 0 .../BigInt-macOS/BigInt-macOS.xcconfig | 0 .../CryptoSwift-iOS/CryptoSwift-iOS-dummy.m | 0 .../CryptoSwift-iOS-prefix.pch | 0 .../CryptoSwift-iOS-umbrella.h | 0 .../CryptoSwift-iOS/CryptoSwift-iOS.modulemap | 0 .../CryptoSwift-iOS/CryptoSwift-iOS.xcconfig | 0 .../CryptoSwift-macOS-dummy.m | 0 .../CryptoSwift-macOS-prefix.pch | 0 .../CryptoSwift-macOS-umbrella.h | 0 .../CryptoSwift-macOS.modulemap | 0 .../CryptoSwift-macOS.xcconfig | 0 .../EthereumABI-iOS/EthereumABI-iOS-dummy.m | 5 - .../EthereumABI-iOS-prefix.pch | 12 - .../EthereumABI-iOS-umbrella.h | 17 - .../EthereumABI-iOS/EthereumABI-iOS.modulemap | 7 - .../EthereumABI-iOS/EthereumABI-iOS.xcconfig | 13 - .../EthereumABI-macOS-dummy.m | 5 - .../EthereumABI-macOS-prefix.pch | 12 - .../EthereumABI-macOS-umbrella.h | 17 - .../EthereumABI-macOS.modulemap | 7 - .../EthereumABI-macOS.xcconfig | 13 - .../EthereumAddress-iOS-dummy.m | 5 - .../EthereumAddress-iOS-prefix.pch | 12 - .../EthereumAddress-iOS-umbrella.h | 17 - .../EthereumAddress-iOS.modulemap | 7 - .../EthereumAddress-iOS.xcconfig | 13 - .../EthereumAddress-macOS-dummy.m | 5 - .../EthereumAddress-macOS-prefix.pch | 12 - .../EthereumAddress-macOS-umbrella.h | 17 - .../EthereumAddress-macOS.modulemap | 7 - .../EthereumAddress-macOS.xcconfig | 13 - ...ds-web3swift-iOS-acknowledgements.markdown | 51 - .../Pods-web3swift-iOS-acknowledgements.plist | 69 - .../Pods-web3swift-iOS-dummy.m | 0 .../Pods-web3swift-iOS-umbrella.h | 0 .../Pods-web3swift-iOS.debug.xcconfig | 12 +- .../Pods-web3swift-iOS.modulemap | 0 .../Pods-web3swift-iOS.release.xcconfig | 12 +- ...3swift-iOS_Tests-acknowledgements.markdown | 0 ...web3swift-iOS_Tests-acknowledgements.plist | 0 .../Pods-web3swift-iOS_Tests-dummy.m | 0 .../Pods-web3swift-iOS_Tests.debug.xcconfig | 8 +- .../Pods-web3swift-iOS_Tests.release.xcconfig | 8 +- ...-web3swift-macOS-acknowledgements.markdown | 51 - ...ods-web3swift-macOS-acknowledgements.plist | 69 - .../Pods-web3swift-macOS-dummy.m | 0 .../Pods-web3swift-macOS-umbrella.h | 0 .../Pods-web3swift-macOS.debug.xcconfig | 12 +- .../Pods-web3swift-macOS.modulemap | 0 .../Pods-web3swift-macOS.release.xcconfig | 12 +- ...wift-macOS_Tests-acknowledgements.markdown | 0 ...b3swift-macOS_Tests-acknowledgements.plist | 0 .../Pods-web3swift-macOS_Tests-dummy.m | 0 .../Pods-web3swift-macOS_Tests.debug.xcconfig | 8 +- ...ods-web3swift-macOS_Tests.release.xcconfig | 8 +- ...iseKit.root-CorePromise-Foundation-dummy.m | 0 ...Kit.root-CorePromise-Foundation-prefix.pch | 0 ...Kit.root-CorePromise-Foundation-umbrella.h | 0 ...eKit.root-CorePromise-Foundation.modulemap | 0 ...seKit.root-CorePromise-Foundation.xcconfig | 0 .../PromiseKit/PromiseKit-dummy.m | 0 .../PromiseKit/PromiseKit-prefix.pch | 0 .../PromiseKit/PromiseKit-umbrella.h | 0 .../PromiseKit/PromiseKit.modulemap | 0 .../PromiseKit/PromiseKit.xcconfig | 0 .../SipHash-iOS/SipHash-iOS-dummy.m | 0 .../SipHash-iOS/SipHash-iOS-prefix.pch | 0 .../SipHash-iOS/SipHash-iOS-umbrella.h | 0 .../SipHash-iOS/SipHash-iOS.modulemap | 0 .../SipHash-iOS/SipHash-iOS.xcconfig | 0 .../SipHash-macOS/SipHash-macOS-dummy.m | 0 .../SipHash-macOS/SipHash-macOS-prefix.pch | 0 .../SipHash-macOS/SipHash-macOS-umbrella.h | 0 .../SipHash-macOS/SipHash-macOS.modulemap | 0 .../SipHash-macOS/SipHash-macOS.xcconfig | 0 .../SwiftRLP-iOS/SwiftRLP-iOS-dummy.m | 5 - .../SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch | 12 - .../SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h | 17 - .../SwiftRLP-iOS/SwiftRLP-iOS.modulemap | 7 - .../SwiftRLP-iOS/SwiftRLP-iOS.xcconfig | 13 - .../SwiftRLP-macOS/SwiftRLP-macOS-dummy.m | 5 - .../SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch | 12 - .../SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h | 17 - .../SwiftRLP-macOS/SwiftRLP-macOS.modulemap | 7 - .../SwiftRLP-macOS/SwiftRLP-macOS.xcconfig | 13 - .../secp256k1_swift-iOS-dummy.m | 0 .../secp256k1_swift-iOS-prefix.pch | 0 .../secp256k1_swift-iOS-umbrella.h | 0 .../secp256k1_swift-iOS.modulemap | 0 .../secp256k1_swift-iOS.xcconfig | 0 .../secp256k1_swift-macOS-dummy.m | 0 .../secp256k1_swift-macOS-prefix.pch | 0 .../secp256k1_swift-macOS-umbrella.h | 0 .../secp256k1_swift-macOS.modulemap | 0 .../secp256k1_swift-macOS.xcconfig | 0 .../secp256k1/contrib/lax_der_parsing.c | 0 .../secp256k1/contrib/lax_der_parsing.h | 0 .../contrib/lax_der_privatekey_parsing.c | 0 .../contrib/lax_der_privatekey_parsing.h | 0 .../Classes/secp256k1/include/secp256k1.h | 0 .../secp256k1/include/secp256k1_ecdh.h | 0 .../secp256k1/include/secp256k1_recovery.h | 0 .../Classes/secp256k1/src/basic-config.h | 0 .../Classes/secp256k1/src/ecdsa.h | 0 .../Classes/secp256k1/src/ecdsa_impl.h | 0 .../Classes/secp256k1/src/eckey.h | 0 .../Classes/secp256k1/src/eckey_impl.h | 0 .../Classes/secp256k1/src/ecmult.h | 0 .../Classes/secp256k1/src/ecmult_const.h | 0 .../Classes/secp256k1/src/ecmult_const_impl.h | 0 .../Classes/secp256k1/src/ecmult_gen.h | 0 .../Classes/secp256k1/src/ecmult_gen_impl.h | 0 .../Classes/secp256k1/src/ecmult_impl.h | 0 .../Classes/secp256k1/src/field.h | 0 .../Classes/secp256k1/src/field_10x26.h | 0 .../Classes/secp256k1/src/field_10x26_impl.h | 0 .../Classes/secp256k1/src/field_5x52.h | 0 .../secp256k1/src/field_5x52_asm_impl.h | 0 .../Classes/secp256k1/src/field_5x52_impl.h | 0 .../secp256k1/src/field_5x52_int128_impl.h | 0 .../Classes/secp256k1/src/field_impl.h | 0 .../Classes/secp256k1/src/group.h | 0 .../Classes/secp256k1/src/group_impl.h | 0 .../Classes/secp256k1/src/hash.h | 0 .../Classes/secp256k1/src/hash_impl.h | 0 .../secp256k1/src/modules/ecdh/main_impl.h | 0 .../Classes/secp256k1/src/num.h | 0 .../Classes/secp256k1/src/num_gmp.h | 0 .../Classes/secp256k1/src/num_gmp_impl.h | 0 .../Classes/secp256k1/src/num_impl.h | 0 .../Classes/secp256k1/src/scalar.h | 0 .../Classes/secp256k1/src/scalar_4x64.h | 0 .../Classes/secp256k1/src/scalar_4x64_impl.h | 0 .../Classes/secp256k1/src/scalar_8x32.h | 0 .../Classes/secp256k1/src/scalar_8x32_impl.h | 0 .../Classes/secp256k1/src/scalar_impl.h | 0 .../Classes/secp256k1/src/scalar_low.h | 0 .../Classes/secp256k1/src/scalar_low_impl.h | 0 .../Classes/secp256k1/src/scratch.h | 0 .../Classes/secp256k1/src/scratch_impl.h | 0 .../Classes/secp256k1/src/secp256k1.c | 0 .../Classes/secp256k1/src/util.h | 0 web3swift.podspec | 9 +- web3swift.xcodeproj/project.pbxproj | 245 +- .../xcschemes/web3swift-iOS.xcscheme | 2 +- .../xcschemes/web3swift-macOS.xcscheme | 2 +- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 5 - web3swift/Contract/ComparisonExtensions.swift | 2 +- web3swift/Contract/ContractProtocol.swift | 2 +- web3swift/Contract/EthereumContract.swift | 4 +- .../EthereumFilterEncodingExtensions.swift | 2 +- web3swift/Contract/EventFiltering.swift | 4 +- .../Convenience/BigUInt+Extensions.swift | 2 +- web3swift/Convenience/Data+Extension.swift | 136 +- .../Convenience/RIPEMD160+StackOveflow.swift | 307 +- .../EthereumABI}/ABI.swift | 2 +- .../EthereumABI}/ABIDecoding.swift | 57 +- .../EthereumABI}/ABIElements.swift | 10 +- .../EthereumABI}/ABIEncoding.swift | 9 +- .../EthereumABI}/ABIParameterTypes.swift | 3 +- .../EthereumABI}/ABIParsing.swift | 8 +- .../EthereumABI}/ABITypeParser.swift | 0 .../EthereumAddress}/EthereumAddress.swift | 0 web3swift/EthereumAddress/Extensions.swift | 59 + .../Web3+BrowserFunctions.swift | 2 +- web3swift/HookedFunctions/Web3+Wallet.swift | 2 +- .../KeystoreManager/AbstractKeystore.swift | 2 +- web3swift/KeystoreManager/BIP32HDNode.swift | 8 +- web3swift/KeystoreManager/BIP32Keystore.swift | 2 +- .../KeystoreManager/EthereumKeystoreV3.swift | 2 +- web3swift/KeystoreManager/IBAN.swift | 2 +- .../KeystoreManager/KeystoreManager.swift | 2 +- web3swift/KeystoreManager/PlainKeystore.swift | 2 +- .../Classes/EthereumAddress+ObjC.swift | 2 +- .../Promise+Web3+Eth+GetAccounts.swift | 2 +- .../Promise+Web3+Eth+GetBalance.swift | 2 +- ...Promise+Web3+Eth+GetTransactionCount.swift | 2 +- .../Promise+Web3+Personal+CreateAccount.swift | 2 +- .../Promises/Promise+Web3+Personal+Sign.swift | 2 +- .../Promise+Web3+Personal+UnlockAccount.swift | 2 +- .../Classes => web3swift/SwiftRLP}/RLP.swift | 67 +- web3swift/Tokens/ERC1155/Web3+ERC1155.swift | 2 +- web3swift/Tokens/ERC1376/Web3+ERC1376.swift | 2 +- web3swift/Tokens/ERC1400/Web3+ERC1400.swift | 2 +- web3swift/Tokens/ERC1410/Web3+ERC1410.swift | 2 +- web3swift/Tokens/ERC1594/Web3+ERC1594.swift | 2 +- web3swift/Tokens/ERC1633/Web3+ERC1633.swift | 2 +- web3swift/Tokens/ERC1643/Web3+ERC1643.swift | 2 +- web3swift/Tokens/ERC1644/Web3+ERC1644.swift | 2 +- web3swift/Tokens/ERC20/Web3+ERC20.swift | 2 +- web3swift/Tokens/ERC721/Web3+ERC721.swift | 2 +- web3swift/Tokens/ERC721x/Web3+ERC721x.swift | 2 +- web3swift/Tokens/ERC777/Web3+ERC777.swift | 2 +- web3swift/Tokens/ERC820/Web3+ERC820.swift | 2 +- web3swift/Tokens/ERC888/Web3+ERC888.swift | 2 +- web3swift/Tokens/ST20/Web3+ST20.swift | 2 +- .../Tokens/ST20/Web3+SecurityToken.swift | 2 +- web3swift/Transaction/BloomFilter.swift | 2 +- .../Transaction/EthereumTransaction.swift | 8 +- web3swift/Transaction/TransactionSigner.swift | 2 +- web3swift/Utils/EIP/EIP67Code.swift | 4 +- web3swift/Utils/EIP/EIP681.swift | 4 +- web3swift/Utils/ENS/ENS.swift | 2 +- web3swift/Utils/ENS/ENSBaseRegistrar.swift | 2 +- web3swift/Utils/ENS/ENSRegistry.swift | 2 +- web3swift/Utils/ENS/ENSResolver.swift | 2 +- web3swift/Utils/ENS/ENSReverseRegistrar.swift | 2 +- .../Utils/ENS/ETHRegistrarController.swift | 2 +- web3swift/Utils/Hooks/NonceMiddleware.swift | 2 +- web3swift/Web3/Web3+Contract.swift | 2 +- web3swift/Web3/Web3+Eth.swift | 2 +- web3swift/Web3/Web3+JSONRPC.swift | 2 +- web3swift/Web3/Web3+MutatingTransaction.swift | 2 +- web3swift/Web3/Web3+Options.swift | 2 +- web3swift/Web3/Web3+Personal.swift | 2 +- web3swift/Web3/Web3+Protocols.swift | 2 +- web3swift/Web3/Web3+ReadingTransaction.swift | 2 +- web3swift/Web3/Web3+Structures.swift | 2 +- web3swift/Web3/Web3+Utils.swift | 4 +- .../web3swift_AdvancedABIv2_Tests.swift | 2 +- web3swiftTests/web3swift_EIP67_Tests.swift | 2 +- web3swiftTests/web3swift_ENS_Tests.swift | 4 +- .../web3swift_ERC20_Class_Tests.swift | 2 +- web3swiftTests/web3swift_ERC20_Tests.swift | 2 +- .../web3swift_Eventloop_Tests.swift | 2 +- web3swiftTests/web3swift_RLP_Tests.swift | 2 +- ...web3swift_ST20AndSecurityToken_Tests.swift | 2 +- web3swiftTests/web3swift_Tests.swift | 8 +- web3swiftTests/web3swift_User_cases.swift | 4 +- .../web3swift_Websockets_Tests.swift | 2 +- web3swiftTests/web3swift_infura_Tests.swift | 2 +- .../web3swift_keystores_Tests.swift | 10 +- web3swiftTests/web3swift_promises_Tests.swift | 2 +- .../web3swift_remoteParsing_Tests.swift | 2 +- ...wift_rinkeby_personalSignature_Tests.swift | 2 +- .../web3swift_transactions_Tests.swift | 4 +- 419 files changed, 2526 insertions(+), 4698 deletions(-) mode change 100755 => 100644 Podfile.lock mode change 100755 => 100644 Pods/BigInt/LICENSE.md mode change 100755 => 100644 Pods/BigInt/README.md mode change 100755 => 100644 Pods/BigInt/sources/Addition.swift mode change 100755 => 100644 Pods/BigInt/sources/BigInt.swift mode change 100755 => 100644 Pods/BigInt/sources/BigUInt.swift mode change 100755 => 100644 Pods/BigInt/sources/Bitwise Ops.swift mode change 100755 => 100644 Pods/BigInt/sources/Codable.swift mode change 100755 => 100644 Pods/BigInt/sources/Comparable.swift mode change 100755 => 100644 Pods/BigInt/sources/Data Conversion.swift mode change 100755 => 100644 Pods/BigInt/sources/Division.swift mode change 100755 => 100644 Pods/BigInt/sources/Exponentiation.swift mode change 100755 => 100644 Pods/BigInt/sources/Floating Point Conversion.swift mode change 100755 => 100644 Pods/BigInt/sources/GCD.swift mode change 100755 => 100644 Pods/BigInt/sources/Hashable.swift mode change 100755 => 100644 Pods/BigInt/sources/Integer Conversion.swift mode change 100755 => 100644 Pods/BigInt/sources/Multiplication.swift mode change 100755 => 100644 Pods/BigInt/sources/Prime Test.swift mode change 100755 => 100644 Pods/BigInt/sources/Random.swift mode change 100755 => 100644 Pods/BigInt/sources/Shifts.swift mode change 100755 => 100644 Pods/BigInt/sources/Square Root.swift mode change 100755 => 100644 Pods/BigInt/sources/Strideable.swift mode change 100755 => 100644 Pods/BigInt/sources/String Conversion.swift mode change 100755 => 100644 Pods/BigInt/sources/Subtraction.swift mode change 100755 => 100644 Pods/BigInt/sources/Words and Bits.swift delete mode 100755 Pods/EthereumABI/EthereumABI/Classes/ABIExtensions.swift delete mode 100755 Pods/EthereumABI/EthereumABI/EthereumABI.h delete mode 100755 Pods/EthereumABI/LICENSE delete mode 100755 Pods/EthereumABI/README.md delete mode 100755 Pods/EthereumAddress/EthereumAddress/Classes/Extensions.swift delete mode 100755 Pods/EthereumAddress/EthereumAddress/EthereumAddress.h delete mode 100755 Pods/EthereumAddress/LICENSE delete mode 100755 Pods/EthereumAddress/README.md delete mode 120000 Pods/Headers/Private/EthereumABI/EthereumABI.h delete mode 120000 Pods/Headers/Private/EthereumAddress/EthereumAddress.h delete mode 120000 Pods/Headers/Private/SwiftRLP/SwiftRLP.h delete mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h delete mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap delete mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h delete mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap delete mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI.h delete mode 120000 Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h delete mode 120000 Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap delete mode 120000 Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h delete mode 120000 Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap delete mode 120000 Pods/Headers/Public/EthereumAddress/EthereumAddress.h delete mode 120000 Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h delete mode 120000 Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap delete mode 120000 Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h delete mode 120000 Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap delete mode 120000 Pods/Headers/Public/SwiftRLP/SwiftRLP.h mode change 100755 => 100644 Pods/Manifest.lock mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift mode change 100755 => 100644 Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift mode change 100755 => 100644 Pods/PromiseKit/Extensions/UIKit/Sources/PMKUIKit.h mode change 100755 => 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.h mode change 100755 => 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.m mode change 100755 => 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIView+Promise.swift mode change 100755 => 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.h mode change 100755 => 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.m mode change 100755 => 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift mode change 100755 => 100644 Pods/PromiseKit/LICENSE mode change 100755 => 100644 Pods/PromiseKit/README.md mode change 100755 => 100644 Pods/PromiseKit/Sources/AnyPromise+Private.h mode change 100755 => 100644 Pods/PromiseKit/Sources/AnyPromise.h mode change 100755 => 100644 Pods/PromiseKit/Sources/AnyPromise.m mode change 100755 => 100644 Pods/PromiseKit/Sources/AnyPromise.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/Box.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/Catchable.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/Configuration.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/CustomStringConvertible.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/Deprecations.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/Error.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/Guarantee.swift create mode 100644 Pods/PromiseKit/Sources/LogEvent.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m mode change 100755 => 100644 Pods/PromiseKit/Sources/PMKCallVariadicBlock.m mode change 100755 => 100644 Pods/PromiseKit/Sources/Promise.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/PromiseKit.h mode change 100755 => 100644 Pods/PromiseKit/Sources/Resolver.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/Thenable.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/after.m mode change 100755 => 100644 Pods/PromiseKit/Sources/after.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/dispatch_promise.m mode change 100755 => 100644 Pods/PromiseKit/Sources/firstly.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/fwd.h mode change 100755 => 100644 Pods/PromiseKit/Sources/hang.m mode change 100755 => 100644 Pods/PromiseKit/Sources/hang.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/join.m mode change 100755 => 100644 Pods/PromiseKit/Sources/race.m mode change 100755 => 100644 Pods/PromiseKit/Sources/race.swift mode change 100755 => 100644 Pods/PromiseKit/Sources/when.m mode change 100755 => 100644 Pods/PromiseKit/Sources/when.swift mode change 100755 => 100644 Pods/SipHash/LICENSE.md mode change 100755 => 100644 Pods/SipHash/README.md mode change 100755 => 100644 Pods/SipHash/SipHash/Primitive Types.swift mode change 100755 => 100644 Pods/SipHash/SipHash/RandomUInt64.swift mode change 100755 => 100644 Pods/SipHash/SipHash/SipHashable.swift mode change 100755 => 100644 Pods/SipHash/SipHash/SipHasher.swift delete mode 100755 Pods/SwiftRLP/LICENSE delete mode 100755 Pods/SwiftRLP/SwiftRLP/SwiftRLP.h mode change 100755 => 100644 Pods/Target Support Files/BigInt-iOS/BigInt-iOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/BigInt-iOS/BigInt-iOS-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/BigInt-iOS/BigInt-iOS.xcconfig mode change 100755 => 100644 Pods/Target Support Files/BigInt-macOS/BigInt-macOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/BigInt-macOS/BigInt-macOS.xcconfig mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.xcconfig mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.xcconfig delete mode 100755 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-dummy.m delete mode 100755 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch delete mode 100755 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h delete mode 100755 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap delete mode 100755 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.xcconfig delete mode 100755 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-dummy.m delete mode 100755 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch delete mode 100755 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h delete mode 100755 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap delete mode 100755 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.xcconfig delete mode 100755 Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-dummy.m delete mode 100755 Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-prefix.pch delete mode 100755 Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h delete mode 100755 Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap delete mode 100755 Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.xcconfig delete mode 100755 Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-dummy.m delete mode 100755 Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch delete mode 100755 Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h delete mode 100755 Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap delete mode 100755 Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.xcconfig mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.markdown mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.plist mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-dummy.m mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.markdown mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.plist mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-dummy.m mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig mode change 100755 => 100644 Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig mode change 100755 => 100644 Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-dummy.m mode change 100755 => 100644 Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap mode change 100755 => 100644 Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.xcconfig mode change 100755 => 100644 Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m mode change 100755 => 100644 Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/PromiseKit/PromiseKit.modulemap mode change 100755 => 100644 Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig mode change 100755 => 100644 Pods/Target Support Files/SipHash-iOS/SipHash-iOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/SipHash-iOS/SipHash-iOS-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/SipHash-iOS/SipHash-iOS.xcconfig mode change 100755 => 100644 Pods/Target Support Files/SipHash-macOS/SipHash-macOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/SipHash-macOS/SipHash-macOS-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/SipHash-macOS/SipHash-macOS.xcconfig delete mode 100755 Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-dummy.m delete mode 100755 Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch delete mode 100755 Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h delete mode 100755 Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap delete mode 100755 Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.xcconfig delete mode 100755 Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-dummy.m delete mode 100755 Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch delete mode 100755 Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h delete mode 100755 Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap delete mode 100755 Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.xcconfig mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.xcconfig mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-dummy.m mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap mode change 100755 => 100644 Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.xcconfig mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_parsing.c mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_parsing.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_privatekey_parsing.c mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_privatekey_parsing.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1_ecdh.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1_recovery.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/basic-config.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/ecdsa.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/ecdsa_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/eckey.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/eckey_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/ecmult.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_const.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_const_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_gen.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_gen_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/field.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/field_10x26.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/field_10x26_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_asm_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_int128_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/field_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/group.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/group_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/hash.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/hash_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/modules/ecdh/main_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/num.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/num_gmp.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/num_gmp_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/num_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scalar.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scalar_4x64.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scalar_4x64_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scalar_8x32.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scalar_8x32_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scalar_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scalar_low.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scalar_low_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scratch.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/scratch_impl.h mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/secp256k1.c mode change 100755 => 100644 Pods/secp256k1_swift/Classes/secp256k1/src/util.h mode change 100755 => 100644 web3swift.xcodeproj/project.pbxproj mode change 100755 => 100644 web3swift.xcworkspace/contents.xcworkspacedata mode change 100755 => 100644 web3swift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100755 web3swift.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename {Pods/EthereumABI/EthereumABI/Classes => web3swift/EthereumABI}/ABI.swift (99%) rename {Pods/EthereumABI/EthereumABI/Classes => web3swift/EthereumABI}/ABIDecoding.swift (83%) rename {Pods/EthereumABI/EthereumABI/Classes => web3swift/EthereumABI}/ABIElements.swift (98%) rename {Pods/EthereumABI/EthereumABI/Classes => web3swift/EthereumABI}/ABIEncoding.swift (96%) rename {Pods/EthereumABI/EthereumABI/Classes => web3swift/EthereumABI}/ABIParameterTypes.swift (99%) rename {Pods/EthereumABI/EthereumABI/Classes => web3swift/EthereumABI}/ABIParsing.swift (99%) rename {Pods/EthereumABI/EthereumABI/Classes => web3swift/EthereumABI}/ABITypeParser.swift (100%) rename {Pods/EthereumAddress/EthereumAddress/Classes => web3swift/EthereumAddress}/EthereumAddress.swift (100%) create mode 100755 web3swift/EthereumAddress/Extensions.swift rename {Pods/SwiftRLP/Classes => web3swift/SwiftRLP}/RLP.swift (86%) diff --git a/Documentation/web3swift 2.0 Migration Guide.md b/Documentation/web3swift 2.0 Migration Guide.md index 9e99c5f06..7e71f0614 100755 --- a/Documentation/web3swift 2.0 Migration Guide.md +++ b/Documentation/web3swift 2.0 Migration Guide.md @@ -50,7 +50,7 @@ Now you have to do "import Web3swift" (capitalization!) instead of "import web3s ## New pods -Now EthereumAddress and Ethereum ABI are separate projects. Use "import EthereumAddress" and "import Ethereum ABI" everywhere you use them. +Now EthereumAddress and Ethereum ABI are separate projects. Use "//import EthereumAddress" and "import Ethereum ABI" everywhere you use them. ## Breaking API Changes diff --git a/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift b/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift index 1ef76c1d9..d043ac33e 100755 --- a/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift +++ b/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift @@ -5,7 +5,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public struct ABIDecoder { diff --git a/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift b/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift index e163dc0a2..b6ce6a7dc 100755 --- a/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift +++ b/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift @@ -5,7 +5,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public struct ABIEncoder { diff --git a/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift b/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift index 469c155fd..e6fab4ae9 100755 --- a/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift +++ b/Example/web3swiftBrowser/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift @@ -5,7 +5,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension ABI.Element { diff --git a/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift b/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift index 1ef76c1d9..d043ac33e 100755 --- a/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift +++ b/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift @@ -5,7 +5,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public struct ABIDecoder { diff --git a/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift b/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift index e163dc0a2..b6ce6a7dc 100755 --- a/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift +++ b/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift @@ -5,7 +5,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public struct ABIEncoder { diff --git a/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift b/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift index 469c155fd..e6fab4ae9 100755 --- a/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift +++ b/Example/web3swiftExample/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift @@ -5,7 +5,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension ABI.Element { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ComparisonExtensions.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ComparisonExtensions.swift index d11da016b..33f525ff6 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ComparisonExtensions.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ComparisonExtensions.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension BigUInt: EventFilterComparable { public func isEqualTo(_ other: AnyObject) -> Bool { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ContractProtocol.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ContractProtocol.swift index bff1d131c..60a31251d 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ContractProtocol.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/ContractProtocol.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public protocol ContractProtocol { var address: EthereumAddress? {get set} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumContract.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumContract.swift index 5d5fd944c..203c51519 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumContract.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumContract.swift @@ -5,8 +5,8 @@ import Foundation import BigInt -import EthereumAddress -import EthereumABI +//import EthereumAddress +//import EthereumABI public struct EthereumContract:ContractProtocol { public var transactionOptions: TransactionOptions? = TransactionOptions.defaultOptions diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift index e818b94fd..d590a87d9 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension BigUInt: EventFilterEncodable { public func eventFilterEncoded() -> String? { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EventFiltering.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EventFiltering.swift index d45d0e1c6..a6cbeb8bc 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EventFiltering.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Contract/Classes/EventFiltering.swift @@ -5,8 +5,8 @@ // import Foundation -import EthereumABI -import EthereumAddress +//import EthereumABI +//import EthereumAddress internal func filterLogs(decodedLogs: [EventParserResultProtocol], eventFilter: EventFilter) -> [EventParserResultProtocol] { let filteredLogs = decodedLogs.filter { (result) -> Bool in diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift index 5f31ebecc..1f72dfe93 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import secp256k1_swift -import EthereumAddress +//import EthereumAddress extension web3.BrowserFunctions { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+Wallet.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+Wallet.swift index 30adb5086..c7b0e8c44 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+Wallet.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/HookedFunctions/Classes/Web3+Wallet.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension web3.Web3Wallet { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/AbstractKeystore.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/AbstractKeystore.swift index 72f72a15d..d8a19f97d 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/AbstractKeystore.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/AbstractKeystore.swift @@ -5,7 +5,7 @@ // import Foundation -import EthereumAddress +//import EthereumAddress public protocol AbstractKeystore { var addresses: [EthereumAddress]? {get} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP32Keystore.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP32Keystore.swift index 4f08e24ca..79a3c3784 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP32Keystore.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/BIP32Keystore.swift @@ -7,7 +7,7 @@ import Foundation import CryptoSwift import Foundation -import EthereumAddress +//import EthereumAddress public class BIP32Keystore: AbstractKeystore { // Protocol diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift index 55918fa78..522711ef9 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift @@ -8,7 +8,7 @@ import Foundation import CryptoSwift import Foundation import secp256k1_swift -import EthereumAddress +//import EthereumAddress public class EthereumKeystoreV3: AbstractKeystore { // Class diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/IBAN.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/IBAN.swift index 5f4e22f49..500f9560a 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/IBAN.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/IBAN.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public struct ICAP { public var asset: String diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/KeystoreManager.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/KeystoreManager.swift index 5e9d6873e..617725f58 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/KeystoreManager.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/KeystoreManager.swift @@ -5,7 +5,7 @@ // import Foundation -import EthereumAddress +//import EthereumAddress public class KeystoreManager: AbstractKeystore { public var isHDKeystore: Bool = false diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/PlainKeystore.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/PlainKeystore.swift index 7a03158af..e59822d11 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/PlainKeystore.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/KeystoreManager/Classes/PlainKeystore.swift @@ -7,7 +7,7 @@ import Foundation import secp256k1_swift -import EthereumAddress +//import EthereumAddress public class PlainKeystore: AbstractKeystore { private var privateKey: Data diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift index 7d129d82e..b1b22c15d 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1155/Web3+ERC1155.swift @@ -9,7 +9,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //Multi Token Standard protocol IERC1155: IERC165 { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift index 868dbb7c3..7e1c6b943 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1376/Web3+ERC1376.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit public enum IERC1376DelegateMode: UInt { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift index ae51bf0ad..27e057017 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1400/Web3+ERC1400.swift @@ -7,7 +7,7 @@ // import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Security Token Standard diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift index 8bdec4635..0c9567c12 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1410/Web3+ERC1410.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Partially Fungible Token Standard diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift index 3590a2de3..7e8b94616 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1594/Web3+ERC1594.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Core Security Token Standard diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift index a71e051b8..e2207d75f 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1633/Web3+ERC1633.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit ///Re-Fungible Token Standard (RFT) diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift index 231d8b5df..e18bbead8 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1643/Web3+ERC1643.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Document Management Standard diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift index a82cc2da7..fffbe6609 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC1644/Web3+ERC1644.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Controller Token Operation Standard diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift index b4116e264..f3000f57b 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Token Standard diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift index 1960b095a..22e6b388c 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //Non-Fungible Token Standard protocol IERC721: IERC165 { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift index ccaff5438..11507bd1a 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC721x/Web3+ERC721x.swift @@ -9,7 +9,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress ///A Smarter Token for the Future of Crypto Collectibles ///ERC721x is an extension of ERC721 that adds support for multi-fungible tokens and batch transfers, while being fully backward-compatible. diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift index 8127bf0fe..07376a3c2 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC777/Web3+ERC777.swift @@ -8,7 +8,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //A New Advanced Token Standard protocol IERC777: IERC20, IERC820 { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift index 4ae4e3cdb..4e805e9a2 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC820/Web3+ERC820.swift @@ -7,7 +7,7 @@ // import Foundation -import EthereumAddress +//import EthereumAddress //Pseudo-introspection using a registry contract protocol IERC820: IERC165 { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift index f5201c158..ce98f9b7c 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ERC888/Web3+ERC888.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //MultiDimensional Token Standard diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift index 933dc32db..cc6b77344 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+ST20.swift @@ -9,7 +9,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //NPolymath Token Standard protocol IST20: IERC20 { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift index 3a60b5ac1..2412616d4 100644 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/PrecompiledContracts/ST20/Web3+SecurityToken.swift @@ -9,7 +9,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //The Ownable contract has an owner address, and provides basic authorization control functions, this simplifies the implementation of "user permissions". protocol IOwnable { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift index 9e01bf580..f8ccd0cd1 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Eth { public func getAccountsPromise() -> Promise<[EthereumAddress]> { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift index 92c69512d..5bdb60305 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift @@ -7,7 +7,7 @@ import Foundation import PromiseKit import BigInt -import EthereumAddress +//import EthereumAddress extension web3.Eth { public func getBalancePromise(address: EthereumAddress, onBlock: String = "latest") -> Promise { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift index 593280f03..cbd1f4708 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Eth { public func getTransactionCountPromise(address: EthereumAddress, onBlock: String = "latest") -> Promise { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift index bfac4ac73..e5e83d556 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Personal { public func createAccountPromise(password:String = "web3swift") -> Promise { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift index 582bbd345..bf71b10c1 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Personal { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift index 15f5e8409..62512f6d4 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Personal { public func unlockAccountPromise(account: EthereumAddress, password:String = "web3swift", seconds: UInt64 = 300) -> Promise { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/BloomFilter.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/BloomFilter.swift index 9a83b0595..0165e4d0e 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/BloomFilter.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/BloomFilter.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import CryptoSwift -import EthereumAddress +//import EthereumAddress public struct EthereumBloomFilter{ public var bytes = Data(repeatElement(UInt8(0), count: 256)) diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/EthereumTransaction.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/EthereumTransaction.swift index dbe203f8d..3b56c58b6 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/EthereumTransaction.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/EthereumTransaction.swift @@ -6,9 +6,9 @@ import Foundation import BigInt -import SwiftRLP +//import SwiftRLP import secp256k1_swift -import EthereumAddress +//import EthereumAddress public struct EthereumTransaction: CustomStringConvertible { public var nonce: BigUInt diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/TransactionSigner.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/TransactionSigner.swift index 4b46af649..3d4e90053 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/TransactionSigner.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Transaction/Classes/TransactionSigner.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import secp256k1_swift -import EthereumAddress +//import EthereumAddress public enum TransactionSignerError: Error { case signatureError(String) diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Utils/Classes/EIP67Code.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Utils/Classes/EIP67Code.swift index ff35a1b68..39ad909d8 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Utils/Classes/EIP67Code.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Utils/Classes/EIP67Code.swift @@ -7,8 +7,8 @@ import Foundation import CoreImage import BigInt -import EthereumAddress -import EthereumABI +//import EthereumAddress +//import EthereumABI extension Web3 { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Contract.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Contract.swift index 52ac7087d..93e49f3a6 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Contract.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Contract.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension web3 { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eth.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eth.swift index 25a9deeff..134791c1d 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eth.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Eth.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension web3.Eth { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+JSONRPC.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+JSONRPC.swift index 652c03132..283ecbaf6 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+JSONRPC.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+JSONRPC.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress /// Global counter object to enumerate JSON RPC requests. public struct Counter { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift index d52fdb8e8..75bfc87e1 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+MutatingTransaction.swift @@ -8,7 +8,7 @@ import Foundation import BigInt import PromiseKit fileprivate typealias PromiseResult = PromiseKit.Result -import EthereumAddress +//import EthereumAddress public class WriteTransaction: ReadTransaction { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Options.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Options.swift index a0790932a..fd3b4372d 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Options.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Options.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public protocol TransactionOptionsInheritable { var transactionOptions: TransactionOptions {get} diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Personal.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Personal.swift index 0363be491..73029fd14 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Personal.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Personal.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension web3.Personal { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Protocols.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Protocols.swift index 885f29ab4..42745d8e9 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Protocols.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Protocols.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import class PromiseKit.Promise -import EthereumAddress +//import EthereumAddress /// Protocol for generic Ethereum event parsing results public protocol EventParserResultProtocol { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift index 8e2e52a05..0effcba13 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+ReadingTransaction.swift @@ -8,7 +8,7 @@ import Foundation import BigInt import PromiseKit fileprivate typealias PromiseResult = PromiseKit.Result -import EthereumAddress +//import EthereumAddress public class ReadTransaction { public var transaction:EthereumTransaction diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Structures.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Structures.swift index 31ece1c87..32180fbcc 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Structures.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Structures.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress fileprivate func decodeHexToData(_ container: KeyedDecodingContainer, key: KeyedDecodingContainer.Key, allowOptional:Bool = false) throws -> Data? { if (allowOptional) { diff --git a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Utils.swift b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Utils.swift index 3365f294e..7d3ee6fe1 100755 --- a/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Utils.swift +++ b/Example/web3swiftExample/Pods/web3swift/web3swift/Web3/Classes/Web3+Utils.swift @@ -7,9 +7,9 @@ import Foundation import BigInt import CryptoSwift -import SwiftRLP +//import SwiftRLP import secp256k1_swift -import EthereumAddress +//import EthereumAddress public typealias Web3Utils = Web3.Utils diff --git a/Example/web3swiftExample/web3swiftExample/ViewController.swift b/Example/web3swiftExample/web3swiftExample/ViewController.swift index 71016e97b..cf1933a18 100755 --- a/Example/web3swiftExample/web3swiftExample/ViewController.swift +++ b/Example/web3swiftExample/web3swiftExample/ViewController.swift @@ -10,8 +10,8 @@ import UIKit import BigInt import Web3swift import Foundation -import EthereumABI -import EthereumAddress +//import EthereumABI +//import EthereumAddress import BigInt class ViewController: UIViewController, Web3SocketDelegate { diff --git a/Podfile b/Podfile index 9dc3da349..0b818964d 100755 --- a/Podfile +++ b/Podfile @@ -1,12 +1,9 @@ def import_pods pod 'Starscream', '3.1.0' - pod 'PromiseKit', '6.4.1' + pod 'PromiseKit', '6.8.4' pod 'BigInt', '3.1' - pod 'CryptoSwift', '0.15.0' + pod 'CryptoSwift', '1.0.0' pod 'secp256k1_swift', '1.0.3', :modular_headers => true - pod 'SwiftRLP', '1.1' - pod 'EthereumAddress', '1.0.0' - pod 'EthereumABI', '1.1.1' end target 'web3swift-macOS' do diff --git a/Podfile.lock b/Podfile.lock old mode 100755 new mode 100644 index b54c77f2e..ca08b1cc7 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,61 +1,44 @@ PODS: - BigInt (3.1.0): - SipHash (~> 1.2) - - CryptoSwift (0.15.0) - - EthereumABI (1.1.1): - - BigInt (~> 3.1) - - CryptoSwift (~> 0.13) - - EthereumAddress (~> 1.0.0) - - EthereumAddress (1.0.0): - - CryptoSwift (~> 0.13) - - PromiseKit (6.4.1): - - PromiseKit/CorePromise (= 6.4.1) - - PromiseKit/Foundation (= 6.4.1) - - PromiseKit/UIKit (= 6.4.1) - - PromiseKit/CorePromise (6.4.1) - - PromiseKit/Foundation (6.4.1): + - CryptoSwift (1.0.0) + - PromiseKit (6.8.4): + - PromiseKit/CorePromise (= 6.8.4) + - PromiseKit/Foundation (= 6.8.4) + - PromiseKit/UIKit (= 6.8.4) + - PromiseKit/CorePromise (6.8.4) + - PromiseKit/Foundation (6.8.4): - PromiseKit/CorePromise - - PromiseKit/UIKit (6.4.1): + - PromiseKit/UIKit (6.8.4): - PromiseKit/CorePromise - secp256k1_swift (1.0.3) - SipHash (1.2.2) - Starscream (3.1.0) - - SwiftRLP (1.1): - - BigInt (~> 3.1) DEPENDENCIES: - BigInt (= 3.1) - - CryptoSwift (= 0.15.0) - - EthereumABI (= 1.1.1) - - EthereumAddress (= 1.0.0) - - PromiseKit (= 6.4.1) + - CryptoSwift (= 1.0.0) + - PromiseKit (= 6.8.4) - secp256k1_swift (= 1.0.3) - Starscream (= 3.1.0) - - SwiftRLP (= 1.1) SPEC REPOS: https://github.com/cocoapods/specs.git: - BigInt - CryptoSwift - - EthereumABI - - EthereumAddress - PromiseKit - secp256k1_swift - SipHash - Starscream - - SwiftRLP SPEC CHECKSUMS: BigInt: 76b5dfdfa3e2e478d4ffdf161aeede5502e2742f - CryptoSwift: 769f58a9e89f64e8796c2e59ce5f002dc81a2438 - EthereumABI: f040f5429e5a4366d028c88b88d9441e137593af - EthereumAddress: f476e1320dca3a0024431e713ede7a09c7eb7796 - PromiseKit: 4c76a6506638034e3d7bede97b2ff7743f7bd2dc + CryptoSwift: d81eeaa59dc5a8d03720fe919a6fd07b51f7439f + PromiseKit: 51794a832647e7b819336dc2279039ce9f1cc49b secp256k1_swift: 4fc5c4b2d2c6d21ee8ccb868cdc92da12f38bed9 SipHash: fad90a4683e420c52ef28063063dbbce248ea6d4 Starscream: 08172b481e145289c4930cb567230fb55897cfa4 - SwiftRLP: 5512899925f1a9e1c78c902ed3bf857880e814a0 -PODFILE CHECKSUM: 429b4775205f039533979812eac3d89270bb42cf +PODFILE CHECKSUM: 05af588ef31e0ef4a3a31e870c35864888ab113a COCOAPODS: 1.7.0.beta.3 diff --git a/Pods/BigInt/LICENSE.md b/Pods/BigInt/LICENSE.md old mode 100755 new mode 100644 diff --git a/Pods/BigInt/README.md b/Pods/BigInt/README.md old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Addition.swift b/Pods/BigInt/sources/Addition.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/BigInt.swift b/Pods/BigInt/sources/BigInt.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/BigUInt.swift b/Pods/BigInt/sources/BigUInt.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Bitwise Ops.swift b/Pods/BigInt/sources/Bitwise Ops.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Codable.swift b/Pods/BigInt/sources/Codable.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Comparable.swift b/Pods/BigInt/sources/Comparable.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Data Conversion.swift b/Pods/BigInt/sources/Data Conversion.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Division.swift b/Pods/BigInt/sources/Division.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Exponentiation.swift b/Pods/BigInt/sources/Exponentiation.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Floating Point Conversion.swift b/Pods/BigInt/sources/Floating Point Conversion.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/GCD.swift b/Pods/BigInt/sources/GCD.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Hashable.swift b/Pods/BigInt/sources/Hashable.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Integer Conversion.swift b/Pods/BigInt/sources/Integer Conversion.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Multiplication.swift b/Pods/BigInt/sources/Multiplication.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Prime Test.swift b/Pods/BigInt/sources/Prime Test.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Random.swift b/Pods/BigInt/sources/Random.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Shifts.swift b/Pods/BigInt/sources/Shifts.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Square Root.swift b/Pods/BigInt/sources/Square Root.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Strideable.swift b/Pods/BigInt/sources/Strideable.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/String Conversion.swift b/Pods/BigInt/sources/String Conversion.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Subtraction.swift b/Pods/BigInt/sources/Subtraction.swift old mode 100755 new mode 100644 diff --git a/Pods/BigInt/sources/Words and Bits.swift b/Pods/BigInt/sources/Words and Bits.swift old mode 100755 new mode 100644 diff --git a/Pods/CryptoSwift/README.md b/Pods/CryptoSwift/README.md index 426836588..a239407d7 100644 --- a/Pods/CryptoSwift/README.md +++ b/Pods/CryptoSwift/README.md @@ -1,6 +1,6 @@ [![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20Android%20%7CmacOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) -[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0%20%7C%204.1-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) +[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0%20%7C%204.1%20%7C%204.2%20%7C%205.0-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/CryptoSwift.svg?style=flat&label=CocoaPods&colorA=28a745&&colorB=4E4E4E)](https://cocoapods.org/pods/CryptoSwift) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat&colorA=28a745&&colorB=4E4E4E)](https://github.com/Carthage/Carthage) [![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg?style=flat&colorA=28a745&&colorB=4E4E4E)](https://github.com/apple/swift-package-manager) @@ -134,15 +134,16 @@ In the project, you'll find [single scheme](http://promisekit.org/news/2016/08/M - Swift 2.2, 2.3: branch [swift2](https://github.com/krzyzanowskim/CryptoSwift/tree/swift2) version <= 0.5.2 - Swift 3.1, branch [swift3](https://github.com/krzyzanowskim/CryptoSwift/tree/swift3) version <= 0.6.9 - Swift 3.2, branch [swift32](https://github.com/krzyzanowskim/CryptoSwift/tree/swift32) version = 0.7.0 -- Swift 4.0, branch [swift4](https://github.com/krzyzanowskim/CryptoSwift/tree/swift4) version >= 0.7.1 -- Swift 4.1, branch [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) version >= 0.9.0 +- Swift 4.0, branch [swift4](https://github.com/krzyzanowskim/CryptoSwift/tree/swift4) version <= 0.12.0 +- Swift 4.2, branch [swift42](https://github.com/krzyzanowskim/CryptoSwift/tree/swift42) version <= 0.15.0 +- Swift 5.0, branch [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) #### CocoaPods You can use [CocoaPods](http://cocoapods.org/?q=cryptoSwift). ```ruby -platform :ios, '8.0' +platform :ios, '10.0' use_frameworks! target 'MyApp' do @@ -174,7 +175,7 @@ You can use [Swift Package Manager](https://swift.org/package-manager/) and spec ```swift dependencies: [ - .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMinor(from: "0.9.0")) + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMinor(from: "1.0.0")) ] ``` @@ -182,7 +183,7 @@ or more strict ```swift dependencies: [ - .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .exact("0.9.0")) + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .exact("1.0.0")) ] ``` @@ -507,8 +508,6 @@ You can follow me on Twitter at [@krzyzanowskim](http://twitter.com/krzyzanowski This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information. -The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code. - ## License Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift b/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift index 38967b4dd..5da7329ad 100644 --- a/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift +++ b/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift @@ -82,7 +82,7 @@ extension Data { extension Data { public init(hex: String) { - self.init(bytes: Array(hex: hex)) + self.init(Array(hex: hex)) } public var bytes: Array { diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABIExtensions.swift b/Pods/EthereumABI/EthereumABI/Classes/ABIExtensions.swift deleted file mode 100755 index f006e44e9..000000000 --- a/Pods/EthereumABI/EthereumABI/Classes/ABIExtensions.swift +++ /dev/null @@ -1,271 +0,0 @@ -// -// Created by Alex Vlasov on 25/10/2018. -// Copyright © 2018 Alex Vlasov. All rights reserved. -// - -import Foundation -import BigInt - -extension Data { - func setLengthLeft(_ toBytes: UInt64, isNegative:Bool = false ) -> Data? { - let existingLength = UInt64(self.count) - if (existingLength == toBytes) { - return Data(self) - } else if (existingLength > toBytes) { - return nil - } - var data:Data - if (isNegative) { - data = Data(repeating: UInt8(255), count: Int(toBytes - existingLength)) - } else { - data = Data(repeating: UInt8(0), count: Int(toBytes - existingLength)) - } - data.append(self) - return data - } - - func setLengthRight(_ toBytes: UInt64, isNegative:Bool = false ) -> Data? { - let existingLength = UInt64(self.count) - if (existingLength == toBytes) { - return Data(self) - } else if (existingLength > toBytes) { - return nil - } - var data:Data = Data() - data.append(self) - if (isNegative) { - data.append(Data(repeating: UInt8(255), count: Int(toBytes - existingLength))) - } else { - data.append(Data(repeating: UInt8(0), count:Int(toBytes - existingLength))) - } - return data - } - - static func fromHex(_ hex: String) -> Data? { - let string = hex.lowercased().stripHexPrefix() - let array = Array(hex: string) - if (array.count == 0) { - if (hex == "0x" || hex == "") { - return Data() - } else { - return nil - } - } - return Data(array) - } -} - -extension BigInt { - func toTwosComplement() -> Data { - if (self.sign == BigInt.Sign.plus) { - return self.magnitude.serialize() - } else { - let serializedLength = self.magnitude.serialize().count - let MAX = BigUInt(1) << (serializedLength*8) - let twoComplement = MAX - self.magnitude - return twoComplement.serialize() - } - } -} - -extension BigUInt { - func abiEncode(bits: UInt64) -> Data? { - let data = self.serialize() - let paddedLength = UInt64((bits + 7) / 8) - let padded = data.setLengthLeft(paddedLength) - return padded - } -} - -extension BigInt { - func abiEncode(bits: UInt64) -> Data? { - let isNegative = self < (BigInt(0)) - let data = self.toTwosComplement() - let paddedLength = UInt64((bits + 7) / 8) - let padded = data.setLengthLeft(paddedLength, isNegative: isNegative) - return padded - } -} - -extension BigInt { - static func fromTwosComplement(data: Data) -> BigInt { - let isPositive = ((data[0] & 128) >> 7) == 0 - if (isPositive) { - let magnitude = BigUInt(data) - return BigInt(magnitude) - } else { - let MAX = (BigUInt(1) << (data.count*8)) - let magnitude = MAX - BigUInt(data) - let bigint = BigInt(0) - BigInt(magnitude) - return bigint - } - } -} - -extension String { - var fullRange: Range { - return startIndex.. Index? { - guard let range = range(of: String(char)) else { - return nil - } - return range.lowerBound - } - -// func split(intoChunksOf chunkSize: Int) -> [String] { -// var output = [String]() -// let splittedString = self -// .map { $0 } -// .split(intoChunksOf: chunkSize) -// splittedString.forEach { -// output.append($0.map { String($0) }.joined(separator: "")) -// } -// return output -// } - - subscript (bounds: CountableClosedRange) -> String { - let start = index(self.startIndex, offsetBy: bounds.lowerBound) - let end = index(self.startIndex, offsetBy: bounds.upperBound) - return String(self[start...end]) - } - - subscript (bounds: CountableRange) -> String { - let start = index(self.startIndex, offsetBy: bounds.lowerBound) - let end = index(self.startIndex, offsetBy: bounds.upperBound) - return String(self[start..) -> String { - let start = index(self.startIndex, offsetBy: bounds.lowerBound) - let end = self.endIndex - return String(self[start.. String { - let stringLength = self.count - if stringLength < toLength { - return String(repeatElement(character, count: toLength - stringLength)) + self - } else { - return String(self.suffix(toLength)) - } - } - -// func interpretAsBinaryData() -> Data? { -// let padded = self.padding(toLength: ((self.count + 7) / 8) * 8, withPad: "0", startingAt: 0) -// let byteArray = padded.split(intoChunksOf: 8).map { UInt8(strtoul($0, nil, 2)) } -// return Data(byteArray) -// } - - func hasHexPrefix() -> Bool { - return self.hasPrefix("0x") - } - - func stripHexPrefix() -> String { - if self.hasPrefix("0x") { - let indexStart = self.index(self.startIndex, offsetBy: 2) - return String(self[indexStart...]) - } - return self - } - - func addHexPrefix() -> String { - if !self.hasPrefix("0x") { - return "0x" + self - } - return self - } - - func matchingStrings(regex: String) -> [[String]] { - guard let regex = try? NSRegularExpression(pattern: regex, options: []) else { return [] } - let nsString = self as NSString - let results = regex.matches(in: self, options: [], range: NSMakeRange(0, nsString.length)) - return results.map { result in - (0.. Range? { - guard - let from16 = utf16.index(utf16.startIndex, offsetBy: nsRange.location, limitedBy: utf16.endIndex), - let to16 = utf16.index(utf16.startIndex, offsetBy: nsRange.location + nsRange.length, limitedBy: utf16.endIndex), - let from = from16.samePosition(in: self), - let to = to16.samePosition(in: self) - else { return nil } - return from ..< to - } - - var asciiValue: Int { - get { - let s = self.unicodeScalars - return Int(s[s.startIndex].value) - } - } -} - -extension Character { - var asciiValue: Int { - get { - let s = String(self).unicodeScalars - return Int(s[s.startIndex].value) - } - } -} - -extension Array where Element == UInt8 { - init(hex: String) { - self.init(reserveCapacity: hex.unicodeScalars.lazy.underestimatedCount) - var buffer: UInt8? - var skip = hex.hasPrefix("0x") ? 2 : 0 - for char in hex.unicodeScalars.lazy { - guard skip == 0 else { - skip -= 1 - continue - } - guard char.value >= 48 && char.value <= 102 else { - removeAll() - return - } - let v: UInt8 - let c: UInt8 = UInt8(char.value) - switch c { - case let c where c <= 57: - v = c - 48 - case let c where c >= 65 && c <= 70: - v = c - 55 - case let c where c >= 97: - v = c - 87 - default: - removeAll() - return - } - if let b = buffer { - append(b << 4 | v) - buffer = nil - } else { - buffer = v - } - } - if let b = buffer { - append(b) - } - } - - func toHexString() -> String { - return `lazy`.reduce("") { - var s = String($1, radix: 16) - if s.count == 1 { - s = "0" + s - } - return $0 + s - } - } -} diff --git a/Pods/EthereumABI/EthereumABI/EthereumABI.h b/Pods/EthereumABI/EthereumABI/EthereumABI.h deleted file mode 100755 index f2d5c0b75..000000000 --- a/Pods/EthereumABI/EthereumABI/EthereumABI.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// EthereumABI.h -// EthereumABI -// -// Created by Alex Vlasov on 25/10/2018. -// Copyright © 2018 Alex Vlasov. All rights reserved. -// - -#if TARGET_OS_IPHONE -#import -#else -#import -#endif - -//! Project version number for EthereumABI. -FOUNDATION_EXPORT double EthereumABIVersionNumber; - -//! Project version string for EthereumABI. -FOUNDATION_EXPORT const unsigned char EthereumABIVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Pods/EthereumABI/LICENSE b/Pods/EthereumABI/LICENSE deleted file mode 100755 index d49e6aa41..000000000 --- a/Pods/EthereumABI/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/Pods/EthereumABI/README.md b/Pods/EthereumABI/README.md deleted file mode 100755 index 0e96dc82f..000000000 --- a/Pods/EthereumABI/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Description - -Ethereum ABI parsing, decoding and encoding module for other projects diff --git a/Pods/EthereumAddress/EthereumAddress/Classes/Extensions.swift b/Pods/EthereumAddress/EthereumAddress/Classes/Extensions.swift deleted file mode 100755 index 58cf99d59..000000000 --- a/Pods/EthereumAddress/EthereumAddress/Classes/Extensions.swift +++ /dev/null @@ -1,226 +0,0 @@ -// -// Extensions.swift -// EthereumAddress -// -// Created by Alex Vlasov on 25/10/2018. -// Copyright © 2018 Alex Vlasov. All rights reserved. -// - -import Foundation - -extension Data { - func setLengthLeft(_ toBytes: UInt64, isNegative:Bool = false ) -> Data? { - let existingLength = UInt64(self.count) - if (existingLength == toBytes) { - return Data(self) - } else if (existingLength > toBytes) { - return nil - } - var data:Data - if (isNegative) { - data = Data(repeating: UInt8(255), count: Int(toBytes - existingLength)) - } else { - data = Data(repeating: UInt8(0), count: Int(toBytes - existingLength)) - } - data.append(self) - return data - } - - func setLengthRight(_ toBytes: UInt64, isNegative:Bool = false ) -> Data? { - let existingLength = UInt64(self.count) - if (existingLength == toBytes) { - return Data(self) - } else if (existingLength > toBytes) { - return nil - } - var data:Data = Data() - data.append(self) - if (isNegative) { - data.append(Data(repeating: UInt8(255), count: Int(toBytes - existingLength))) - } else { - data.append(Data(repeating: UInt8(0), count:Int(toBytes - existingLength))) - } - return data - } - - static func fromHex(_ hex: String) -> Data? { - let string = hex.lowercased().stripHexPrefix() - let array = Array(hex: string) - if (array.count == 0) { - if (hex == "0x" || hex == "") { - return Data() - } else { - return nil - } - } - return Data(array) - } -} - -extension String { - var fullRange: Range { - return startIndex.. Index? { - guard let range = range(of: String(char)) else { - return nil - } - return range.lowerBound - } - - // func split(intoChunksOf chunkSize: Int) -> [String] { - // var output = [String]() - // let splittedString = self - // .map { $0 } - // .split(intoChunksOf: chunkSize) - // splittedString.forEach { - // output.append($0.map { String($0) }.joined(separator: "")) - // } - // return output - // } - - subscript (bounds: CountableClosedRange) -> String { - let start = index(self.startIndex, offsetBy: bounds.lowerBound) - let end = index(self.startIndex, offsetBy: bounds.upperBound) - return String(self[start...end]) - } - - subscript (bounds: CountableRange) -> String { - let start = index(self.startIndex, offsetBy: bounds.lowerBound) - let end = index(self.startIndex, offsetBy: bounds.upperBound) - return String(self[start..) -> String { - let start = index(self.startIndex, offsetBy: bounds.lowerBound) - let end = self.endIndex - return String(self[start.. String { - let stringLength = self.count - if stringLength < toLength { - return String(repeatElement(character, count: toLength - stringLength)) + self - } else { - return String(self.suffix(toLength)) - } - } - - // func interpretAsBinaryData() -> Data? { - // let padded = self.padding(toLength: ((self.count + 7) / 8) * 8, withPad: "0", startingAt: 0) - // let byteArray = padded.split(intoChunksOf: 8).map { UInt8(strtoul($0, nil, 2)) } - // return Data(byteArray) - // } - - func hasHexPrefix() -> Bool { - return self.hasPrefix("0x") - } - - func stripHexPrefix() -> String { - if self.hasPrefix("0x") { - let indexStart = self.index(self.startIndex, offsetBy: 2) - return String(self[indexStart...]) - } - return self - } - - func addHexPrefix() -> String { - if !self.hasPrefix("0x") { - return "0x" + self - } - return self - } - - func matchingStrings(regex: String) -> [[String]] { - guard let regex = try? NSRegularExpression(pattern: regex, options: []) else { return [] } - let nsString = self as NSString - let results = regex.matches(in: self, options: [], range: NSMakeRange(0, nsString.length)) - return results.map { result in - (0.. Range? { - guard - let from16 = utf16.index(utf16.startIndex, offsetBy: nsRange.location, limitedBy: utf16.endIndex), - let to16 = utf16.index(utf16.startIndex, offsetBy: nsRange.location + nsRange.length, limitedBy: utf16.endIndex), - let from = from16.samePosition(in: self), - let to = to16.samePosition(in: self) - else { return nil } - return from ..< to - } - - var asciiValue: Int { - get { - let s = self.unicodeScalars - return Int(s[s.startIndex].value) - } - } -} - -extension Character { - var asciiValue: Int { - get { - let s = String(self).unicodeScalars - return Int(s[s.startIndex].value) - } - } -} - -extension Array where Element == UInt8 { - init(hex: String) { - self.init(reserveCapacity: hex.unicodeScalars.lazy.underestimatedCount) - var buffer: UInt8? - var skip = hex.hasPrefix("0x") ? 2 : 0 - for char in hex.unicodeScalars.lazy { - guard skip == 0 else { - skip -= 1 - continue - } - guard char.value >= 48 && char.value <= 102 else { - removeAll() - return - } - let v: UInt8 - let c: UInt8 = UInt8(char.value) - switch c { - case let c where c <= 57: - v = c - 48 - case let c where c >= 65 && c <= 70: - v = c - 55 - case let c where c >= 97: - v = c - 87 - default: - removeAll() - return - } - if let b = buffer { - append(b << 4 | v) - buffer = nil - } else { - buffer = v - } - } - if let b = buffer { - append(b) - } - } - - func toHexString() -> String { - return `lazy`.reduce("") { - var s = String($1, radix: 16) - if s.count == 1 { - s = "0" + s - } - return $0 + s - } - } -} diff --git a/Pods/EthereumAddress/EthereumAddress/EthereumAddress.h b/Pods/EthereumAddress/EthereumAddress/EthereumAddress.h deleted file mode 100755 index 32cf27a4d..000000000 --- a/Pods/EthereumAddress/EthereumAddress/EthereumAddress.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// EthereumAddress.h -// EthereumAddress -// -// Created by Alex Vlasov on 25/10/2018. -// Copyright © 2018 Alex Vlasov. All rights reserved. -// - -#if TARGET_OS_IPHONE -#import -#else -#import -#endif - -//! Project version number for EthereumAddress. -FOUNDATION_EXPORT double EthereumAddressVersionNumber; - -//! Project version string for EthereumAddress. -FOUNDATION_EXPORT const unsigned char EthereumAddressVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Pods/EthereumAddress/LICENSE b/Pods/EthereumAddress/LICENSE deleted file mode 100755 index d49e6aa41..000000000 --- a/Pods/EthereumAddress/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/Pods/EthereumAddress/README.md b/Pods/EthereumAddress/README.md deleted file mode 100755 index 8678762a3..000000000 --- a/Pods/EthereumAddress/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ethereum address - -Lightweight implementaiton of Ethereum address native structure with parsing and validation options. diff --git a/Pods/Headers/Private/EthereumABI/EthereumABI.h b/Pods/Headers/Private/EthereumABI/EthereumABI.h deleted file mode 120000 index 6b3bc1af1..000000000 --- a/Pods/Headers/Private/EthereumABI/EthereumABI.h +++ /dev/null @@ -1 +0,0 @@ -../../../EthereumABI/EthereumABI/EthereumABI.h \ No newline at end of file diff --git a/Pods/Headers/Private/EthereumAddress/EthereumAddress.h b/Pods/Headers/Private/EthereumAddress/EthereumAddress.h deleted file mode 120000 index 17795db36..000000000 --- a/Pods/Headers/Private/EthereumAddress/EthereumAddress.h +++ /dev/null @@ -1 +0,0 @@ -../../../EthereumAddress/EthereumAddress/EthereumAddress.h \ No newline at end of file diff --git a/Pods/Headers/Private/SwiftRLP/SwiftRLP.h b/Pods/Headers/Private/SwiftRLP/SwiftRLP.h deleted file mode 120000 index a403a2602..000000000 --- a/Pods/Headers/Private/SwiftRLP/SwiftRLP.h +++ /dev/null @@ -1 +0,0 @@ -../../../SwiftRLP/SwiftRLP/SwiftRLP.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h deleted file mode 120000 index ee619cc01..000000000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap deleted file mode 120000 index 953972e54..000000000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h deleted file mode 120000 index 7a121903e..000000000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap deleted file mode 120000 index f255bc945..000000000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI.h b/Pods/Headers/Public/EthereumABI/EthereumABI.h deleted file mode 120000 index 6b3bc1af1..000000000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI.h +++ /dev/null @@ -1 +0,0 @@ -../../../EthereumABI/EthereumABI/EthereumABI.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h deleted file mode 120000 index d3b3259af..000000000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap deleted file mode 120000 index 1c9cc9a18..000000000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h deleted file mode 120000 index 7a7fe62ab..000000000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap deleted file mode 120000 index 6f8ec35aa..000000000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress.h deleted file mode 120000 index 17795db36..000000000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress.h +++ /dev/null @@ -1 +0,0 @@ -../../../EthereumAddress/EthereumAddress/EthereumAddress.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h deleted file mode 120000 index 6d882e0a4..000000000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap deleted file mode 120000 index 1e6b8ca75..000000000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h deleted file mode 120000 index fe6716e4e..000000000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap deleted file mode 120000 index c8ef81727..000000000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP.h deleted file mode 120000 index a403a2602..000000000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP.h +++ /dev/null @@ -1 +0,0 @@ -../../../SwiftRLP/SwiftRLP/SwiftRLP.h \ No newline at end of file diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock old mode 100755 new mode 100644 index b54c77f2e..ca08b1cc7 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,61 +1,44 @@ PODS: - BigInt (3.1.0): - SipHash (~> 1.2) - - CryptoSwift (0.15.0) - - EthereumABI (1.1.1): - - BigInt (~> 3.1) - - CryptoSwift (~> 0.13) - - EthereumAddress (~> 1.0.0) - - EthereumAddress (1.0.0): - - CryptoSwift (~> 0.13) - - PromiseKit (6.4.1): - - PromiseKit/CorePromise (= 6.4.1) - - PromiseKit/Foundation (= 6.4.1) - - PromiseKit/UIKit (= 6.4.1) - - PromiseKit/CorePromise (6.4.1) - - PromiseKit/Foundation (6.4.1): + - CryptoSwift (1.0.0) + - PromiseKit (6.8.4): + - PromiseKit/CorePromise (= 6.8.4) + - PromiseKit/Foundation (= 6.8.4) + - PromiseKit/UIKit (= 6.8.4) + - PromiseKit/CorePromise (6.8.4) + - PromiseKit/Foundation (6.8.4): - PromiseKit/CorePromise - - PromiseKit/UIKit (6.4.1): + - PromiseKit/UIKit (6.8.4): - PromiseKit/CorePromise - secp256k1_swift (1.0.3) - SipHash (1.2.2) - Starscream (3.1.0) - - SwiftRLP (1.1): - - BigInt (~> 3.1) DEPENDENCIES: - BigInt (= 3.1) - - CryptoSwift (= 0.15.0) - - EthereumABI (= 1.1.1) - - EthereumAddress (= 1.0.0) - - PromiseKit (= 6.4.1) + - CryptoSwift (= 1.0.0) + - PromiseKit (= 6.8.4) - secp256k1_swift (= 1.0.3) - Starscream (= 3.1.0) - - SwiftRLP (= 1.1) SPEC REPOS: https://github.com/cocoapods/specs.git: - BigInt - CryptoSwift - - EthereumABI - - EthereumAddress - PromiseKit - secp256k1_swift - SipHash - Starscream - - SwiftRLP SPEC CHECKSUMS: BigInt: 76b5dfdfa3e2e478d4ffdf161aeede5502e2742f - CryptoSwift: 769f58a9e89f64e8796c2e59ce5f002dc81a2438 - EthereumABI: f040f5429e5a4366d028c88b88d9441e137593af - EthereumAddress: f476e1320dca3a0024431e713ede7a09c7eb7796 - PromiseKit: 4c76a6506638034e3d7bede97b2ff7743f7bd2dc + CryptoSwift: d81eeaa59dc5a8d03720fe919a6fd07b51f7439f + PromiseKit: 51794a832647e7b819336dc2279039ce9f1cc49b secp256k1_swift: 4fc5c4b2d2c6d21ee8ccb868cdc92da12f38bed9 SipHash: fad90a4683e420c52ef28063063dbbce248ea6d4 Starscream: 08172b481e145289c4930cb567230fb55897cfa4 - SwiftRLP: 5512899925f1a9e1c78c902ed3bf857880e814a0 -PODFILE CHECKSUM: 429b4775205f039533979812eac3d89270bb42cf +PODFILE CHECKSUM: 05af588ef31e0ef4a3a31e870c35864888ab113a COCOAPODS: 1.7.0.beta.3 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index b3381334e..a029aaef8 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,469 +7,431 @@ objects = { /* Begin PBXBuildFile section */ - 00439D5A6E9D67F769DF04A760CF8797 /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = B469FEEFD4DEDA89819045EEEB18538F /* firstly.swift */; }; - 00DA6F98B4F035D1E6FCDFC96FB9BC56 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 168239DB48F2C0DEB1D2D73295F556AD /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01803C8E34FCA68E95621D3EA349FB22 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 000324BCB32A0DC73A29393B4D60B2D6 /* GCM.swift */; }; - 021FAFB49E4682B804C8DB3E7DECC6ED /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D71818FDDBB76986F7A95E01EFE8EFE /* String+FoundationExtension.swift */; }; - 022B431C7C8752440448F1DC6D16F405 /* EthereumABI-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 214DB209A3B8A67A320236844EEB6B6E /* EthereumABI-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 025F981D5C4500BB8AA021194FE47EA7 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = BC996D26C0B6C88133784FFF9B0D3535 /* NSNotificationCenter+AnyPromise.m */; }; - 03B650E8237CC0BEB4D7FC9A63BC4812 /* EthereumABI.h in Headers */ = {isa = PBXBuildFile; fileRef = A92682F12710C31879D2D90258C95F5E /* EthereumABI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 04F8996D924A658DCDCA6E146773D5FD /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6BCF9A48B01832EF9C2384895B10C32 /* WebSocket.swift */; }; - 0533D8D66340E758F208A11716462C62 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B19493893227F9EA7DA865FA170BC75F /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 053F83151425C8B2CBE1DEDDF5E4113F /* Pods-web3swift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BB6E1B3EFEB698FADF96BBF004079EB0 /* Pods-web3swift-macOS-dummy.m */; }; - 069BAFD84C38280FAA3DB073D147B126 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 4720B3151FA9FFC928C7EA4CFF52990D /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 07B52D11465AFADDA0922C296F3C962F /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 452643BFC330DA77845C5A6609A2075C /* AnyPromise.m */; }; - 07F6C599901282E06141F6488B55F043 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 72A0F3D157B6FF7544997435C8C2653A /* lax_der_parsing.c */; }; - 08B020DD1E2B48B515AB4E632AC70831 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E54F5880B3D7EC60B0CDF9C10B012452 /* UInt64+Extension.swift */; }; - 0911D55A0B09055D6CF157BE168BC52D /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86C2174B142F67C7A0A5B9F9ADC0C14 /* Guarantee.swift */; }; + 002AAAA880DEFFCA9459A26E9E92E0D9 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAE87BED1CF20813A9CB30CB5ADE8AF /* Error.swift */; }; + 00DA6F98B4F035D1E6FCDFC96FB9BC56 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5478CD6BE0741A6D364C23E9FF1077AC /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01803C8E34FCA68E95621D3EA349FB22 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83ED950A4869DED9E450F9688529398B /* GCM.swift */; }; + 021FAFB49E4682B804C8DB3E7DECC6ED /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B6BD85AD1F3C37FDBC8610C2BBA334 /* String+FoundationExtension.swift */; }; + 029FACF28D637ADA219E3F1E8993B779 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = F79CB0EB6597A6EDC54750BA2A60677A /* after.swift */; }; + 03E798430E62F56509146CD18AF60B0C /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653EDAB70FA4D1975C3FF6B6AD9965BA /* NSNotificationCenter+Promise.swift */; }; + 043AC05F23E9C59CC1A7F48E3FC477DE /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 27028DD53E5FDD45CB01A8136AAEA87B /* PromiseKit-dummy.m */; }; + 04F8996D924A658DCDCA6E146773D5FD /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C257E1502CFA7F2A46BADBE76577FDD /* WebSocket.swift */; }; + 05087E21C624085D72241A62B2D4454B /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3279A426C1F0101503616FAE68E83993 /* Box.swift */; }; + 0533D8D66340E758F208A11716462C62 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BBF5F4FE850C1A6D626DBE3867A76EF /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 067E808B1D32B4D77117162FF41BB64A /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA0722A278ACD20B9304F4FE7DAA22D5 /* hang.swift */; }; + 069BAFD84C38280FAA3DB073D147B126 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B991B925F7AE711ACAA8B19741AD685 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 06A8D45D409443986F839D317B2F66E9 /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A17CB38D45292A19C3559652B2A9857 /* firstly.swift */; }; + 07F6C599901282E06141F6488B55F043 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 9E13CD510B8B4FFE1C33845B056172F8 /* lax_der_parsing.c */; }; + 08B020DD1E2B48B515AB4E632AC70831 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B66B81D2CC11A42B29DF35C11CFBF7A7 /* UInt64+Extension.swift */; }; 09B6BC2DBE49E7A8C1A7EABA34ACE318 /* Pods-web3swift-macOS_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E7D99D8968EF613FE8D38FF29AABC097 /* Pods-web3swift-macOS_Tests-dummy.m */; }; - 0A11C0F9B934691866059D59116B481F /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6D15773B216D17D4F691E62FF8CA3EF /* BigUInt.swift */; }; - 0A4DB6625965D8E286C6B2AD645F4BD8 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01FD97D62B430F3D613355747840CE5D /* Addition.swift */; }; - 0A8CEC53556C4684EBB5E8087FC431B8 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 4720B3151FA9FFC928C7EA4CFF52990D /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B6F3455270ED43061165E6AE41DF882 /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E01CFFDCEDDDCABD59A31B7EB69E9DE /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B7F7E027B8890BE15103551EDD73731 /* EthereumAddress-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6AD7D1CE9AF066C076FC7786A1A513 /* EthereumAddress-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C729FA209B23D741A7BF68CA6F61098 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0937B20C1C28BD4A95220D8278C0BAB /* Int+Extension.swift */; }; - 0D206E20237A65EEC7D91EE361181AF7 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C5DBA3C55976F3557DCEB82573D9BB6 /* CCM.swift */; }; - 0D56FC0A02CFA67CED7FABF1E43993BE /* SwiftRLP-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E77AB91398628682525840EA48574A3 /* SwiftRLP-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0DDBEBBC35E7006100CCD67DAA2EB959 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 1B84D8BD6AA21608D7C1F367D7A228AD /* lax_der_privatekey_parsing.c */; }; - 0E524E38163C478A87BA8971BBB5179A /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C77233EDBFE88FFF7D996071BFEF9FF /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E660F023671ED9ABFBE4F2240F427C1 /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 874702FA185AB07E20694BD305534623 /* NSNotificationCenter+Promise.swift */; }; - 0EF4B207D551D2B314BB0EA5BECA189D /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22A5C841DECB9325536991C63FACE457 /* Scrypt.swift */; }; - 0EFABDDC8436ECF2E3AD5DB3AF265EE9 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4932C467CA0B003C3876AE37A7FB8F71 /* EthereumAddress.swift */; }; - 0F4004B3B9FB60B20C17CD2D36515902 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF231834D762125E63881191D14D68E2 /* Thenable.swift */; }; - 0F9C3AAB096E8C0FE8DF2F59168EEBF3 /* ABIParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5F7881BFABC825DDDAE7BC87CCF2F5A /* ABIParsing.swift */; }; - 0FA99484039A8BEB2423C0E701C05DA1 /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F1816031AF1B0046AEFD2145335206 /* hang.swift */; }; - 0FCA9824C775454DEE65386700FCC506 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 668BF93A8E194EF22FBCC85DFFCB8207 /* Rabbit+Foundation.swift */; }; - 103E92B26E0A7209D9D1A9FD4BE42E9E /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EC5795AC0B3B95BE65438DD06CE5775 /* secp256k1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 10717F8A2457487A4D4C18F24CFBCC86 /* ABIParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FD052809124761131D26FCAAC8DFE06 /* ABIParameterTypes.swift */; }; - 10F47D3D1F33B3C138B20176C31F37E6 /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = E45A96C016E09A710D203C8CBCA1CC17 /* UIView+Promise.swift */; }; - 11E104340B2B221FE96346047BAD6D71 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 998E4267B14D6FCC02485CC22984717A /* Padding.swift */; }; - 1216B707DC708F71B95BEC576ED3A514 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFD4227B942CE70ACCC835E6BBEB35CA /* Integer Conversion.swift */; }; - 12ED0D6352AD8E7C6B2AF8872FE07A58 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 50882954044EA934A9C57877220EE29C /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1320F17FFDF4C4CB83653EBF7F399161 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1326A835DF33C20CE38ABD87049E2E1 /* Catchable.swift */; }; - 13A13B8815787000544347A9930BA16D /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD8CD832FD8B563E6275F7D3E39363CA /* SHA3.swift */; }; - 14E030347AC858068E3B0504B303E206 /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A2547AB8A3C31DFE2F52096FA37EFBD /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1513BEBB3898B1412DE2E2CD5F023838 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6727BE5280045EA814058E5E322E9E7F /* Generics.swift */; }; - 15402A6097DF6978559A905F3A65AC92 /* SwiftRLP-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E0FB31E65F41C13C1EBEE6A9EC943D0C /* SwiftRLP-macOS-dummy.m */; }; - 157A52C754866F2C98865A270562F595 /* CryptoSwift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 770C082676DEC5562E8B9742FB4DD986 /* CryptoSwift-macOS-dummy.m */; }; - 159BACB4E2560B12CDCDE549D1E1A872 /* SSLClientCertificate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D0D59FEBAFE71FEF0F232F155DD9036 /* SSLClientCertificate.swift */; }; - 15F0FADACFCD4E6B4B0617D2ABD80054 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A48A732CCD02C41B96B7A7D8839431 /* RandomUInt64.swift */; }; - 16611430E3EF5802C894F95F267D5AC0 /* UIViewPropertyAnimator+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C1FD176D21CBD655A33F843E356B587 /* UIViewPropertyAnimator+Promise.swift */; }; - 180706F21BF426F0D3D1B99B0C9477EF /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = B469FEEFD4DEDA89819045EEEB18538F /* firstly.swift */; }; - 186425A9A842EBE5930B4D8F8E636BE4 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F14B41EF96F500D63E7EB1BC7461785 /* SipHasher.swift */; }; - 18A65DB9641AA9A0561755A7D07D8961 /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = B2726DFCF39AE67A76395E9DA733E93D /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19247CDF5AE68A5FC65909EF92111B25 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E54F5880B3D7EC60B0CDF9C10B012452 /* UInt64+Extension.swift */; }; - 19B5E5C266EE9B93BF166D024B2ABBD2 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = F73C36BE59D8447897AC55092730A868 /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1B0B519A890C7F9491BC726B690153B5 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F73FDACA65B2CE9252283FAEFD72902 /* Division.swift */; }; - 1B613212C785996AF8EB7231C256F79E /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = BC996D26C0B6C88133784FFF9B0D3535 /* NSNotificationCenter+AnyPromise.m */; }; - 1B85FB16B458E4D90420E9B119A6C9BE /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = A238F5B6F2D22DB74709581576A9D2ED /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1B91092A9BAFC23D4091AE56F94B68E4 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CB0DEB3D6F4BB4A5D7EB57F2C14F338 /* NoPadding.swift */; }; - 1BA549783B4D28E606671796489C4E90 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = FDD5FF297FA7350FDD93F56157E2E2FF /* secp256k1.c */; }; - 1C6D65C7BD3DB9F02296BE5C51F1F083 /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = CEFB3AC9CC56D3115091656B23154192 /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C90445001B50ADF0BB69BEF639E5742 /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F1543F15D7A392EF250460DC3BAFB1BB /* scratch_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E211054D59D77C4D1B112F2021ADC96 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D098F96767671EABB2B0DC76CAB4492 /* PKCS7Padding.swift */; }; - 1E6C8ECFAB1A902A4936FFEB22079A02 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01FD97D62B430F3D613355747840CE5D /* Addition.swift */; }; - 1EE91A9718C2762FFB79FDBF644F5A4E /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123D9B5EFB2A4F497CDF42CBFE8B9F9D /* HMAC+Foundation.swift */; }; - 1F1EF4F5E8A211670C84F4E56F2003B0 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = B414DCA754533B2497E413195353037D /* Operators.swift */; }; - 2000B7B520FE6E56E8A656A2B19D5C0C /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC65E597AF9D5E83BB91E20DA536A2C /* Shifts.swift */; }; - 203DD312A5D6C23266BCE56892FD739B /* BigInt-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EC37B098A9AE8541D075182A9F4E648 /* BigInt-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 20E3C2E2A103F5ED5D4271DAC1CD0C97 /* SwiftRLP.h in Headers */ = {isa = PBXBuildFile; fileRef = 1041CA6D2F438B6A5364EE9337F0A3CC /* SwiftRLP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 212AEFA0295AA6EFD0671B8DE6476FE4 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A0E4286FA50E0C4B204B68B307246B1F /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 218252986F3FE334E9419BAE32CA0C16 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E573622FDFDB2E36CBBAEF6D136A2F2 /* race.m */; }; - 219D30A27DA74C0F4A8F93AD7F1A0B2E /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 127203DB9162380E9EA1CCD66C9F7BB3 /* Resolver.swift */; }; - 227AD61FC03EEF7ABD45C12C6C24E107 /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA3CA96A1C96C617C6CDC66E3C5CFD15 /* UInt8+Extension.swift */; }; - 22A00756B498E2904A5C0D9208DBAE17 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D098F96767671EABB2B0DC76CAB4492 /* PKCS7Padding.swift */; }; - 22AA6C68DAA84A001CF2BAA2D4DF0D0D /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ECD101929431D17696D4E479E2191F2 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 23026CDCF1B06AA4FFFDA08573D104F0 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E85A0961ED2B533E0550BFCFDA420BDC /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2357617AD9054CFE364623315AA1157F /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 668BF93A8E194EF22FBCC85DFFCB8207 /* Rabbit+Foundation.swift */; }; - 2408ABF0F183F0CC36D50F8433F3F332 /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = CEFB3AC9CC56D3115091656B23154192 /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 240903F1CB0F5FD146220A03F19D4CBA /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F90F921EB768BEADEB4297FCFF9E57 /* UInt128.swift */; }; - 244036C257C3DBC2586BE1D9164F3C90 /* SSLSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 404CEB85861C5E34014047653BFDBBCD /* SSLSecurity.swift */; }; - 249562F51A5E07DF862CB21AC0F31ADC /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB76205BB4AC2F224C001580773B939 /* Codable.swift */; }; - 26EBB50E8669E2A1A897A1EB40A9D62C /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F1E2B1C1E824F624C378758F6EA7541 /* NSURLSession+Promise.swift */; }; - 277660D74FBDD95B3610266167F7CF7A /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 56CD10FF531B107D40A576BBB22E0276 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 27860F9D8159E94F56559A5872FCBC24 /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D45CB1CE69B624AF22052E077769AEF /* ZeroPadding.swift */; }; - 27891BA144B2378BB844324DA484C121 /* Starscream-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 067B8E36AC70F0A5D2808468761BFF09 /* Starscream-iOS-dummy.m */; }; - 27F978D548FE9CB3CCA5C6780758B9B1 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4932C467CA0B003C3876AE37A7FB8F71 /* EthereumAddress.swift */; }; - 28097ED8B451F07ED5BD6CEE9FDC2CD8 /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1F32B67BA1C0835300910DAB00B988 /* NSObject+Promise.swift */; }; - 28C63781E7E4AB8243321FEB317BD5A6 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8537B1DE0AF0B2EAEBB180E4592606 /* Utils.swift */; }; - 28DA93F5A980C0267D2102D521738F56 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 28E99B9CFB57C13F2AFD6FEE4E6D506E /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 28EE037EE765815C85B1864FDA289DBE /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C306FE6A77B894436983FE71A345064D /* Process+Promise.swift */; }; - 2924B754AE216404471861BF98F57C47 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3B12F7827FEDC820149590DF2F51E63 /* BlockCipher.swift */; }; - 2A3F786E13160373E1874FBB99972FEA /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 19C878797582D0612D89FF481F3A2AF2 /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A72B0FD70E02FE05ADCED34389E5D5F /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08CA3ADA337C349B5C3CD45ABD7E5736 /* SipHashable.swift */; }; - 2AE4456F891EB698A161E579E7DE2609 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9AA784AE92F708FBBB1EC6F903AD81A /* SHA2.swift */; }; - 2B130EE26C370B4FA7D8C5DA0334CAE7 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D86040A42AE6B2D31485A1D8B40BF07 /* PKCS7.swift */; }; - 2B239FA51CE6B11F663BC2C668FC1EC3 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 073D210D24EBE028D4BAE70A788B2EF5 /* PBKDF1.swift */; }; - 2C7C88A9FF74E6BAC1FD7020B4E13C26 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = B961DFA6EA054CD31302DED1A6967059 /* HKDF.swift */; }; - 2CB296DD07D7828CB9BBFFC5AE4E862F /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 079F924129D8309B5345106A36F994D6 /* String+Extension.swift */; }; - 2CB3D55F31D6927F4AA4C4BF34FF932A /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C57AA209A6E63301C96AC826A79072C /* secp256k1.swift */; }; - 2D8CC88FA9D0C800AB2D1C968854167D /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 589937E90DBD42643A3BB7C0F8E1CB6E /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2DAB2610704DE94E99988D5BF72F1630 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E17833B43F970EABB91E7CAFCCC1D9F1 /* Authenticator.swift */; }; - 2E09A1612BBA4E4B65676B2DC3D40ABC /* Starscream-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 034CD824C39CDDB5F1BE5765285EC8DB /* Starscream-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2E9AA763D6EB6DF71169A2ED2A1FDB42 /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07B8BEBE25678BD1D1AF1A9FFC737880 /* Words and Bits.swift */; }; - 2F2C9F792F9FFC644F4883857A40367D /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0527E6B94F781FC38F1E041D48897CA9 /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2FA15EA28C9FC0D2EF49F0F8670CCA65 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E560E43A25FA0AB7E707AE850B504F /* Cryptor.swift */; }; - 2FD4F4C90AB776B0711FC6EC0E0EBDD6 /* SipHash-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA3ECEA3134878CB7A7290522C5150D /* SipHash-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3167F30268878033D0C63889142F1B8C /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6788ABC80588BB40BF2D1D12AAE66F22 /* Exponentiation.swift */; }; - 327A3E34451AB394BFDD5FA1B8B1DDC7 /* EthereumABI-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE228EB1CF69DA3A1AD9E255C783A76 /* EthereumABI-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 334E6BEBF2CAA31BB2E7F88BE0957F35 /* ABIParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5F7881BFABC825DDDAE7BC87CCF2F5A /* ABIParsing.swift */; }; - 33720ACBE2362615C8F0AEE4E1A82A31 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9AA784AE92F708FBBB1EC6F903AD81A /* SHA2.swift */; }; - 35350BBB406679583EA6863DAA8140EC /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 57EB0C73FF61D37BECDA16782B6CD011 /* PMKUIKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3559A7A8E7B191D2BB3A6FFE39969474 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F9131F785641C468536589E493F91F6 /* Error.swift */; }; - 359E9EC2987D3D30A5406C0B9155D9BB /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 795FA48BAA4F836DA1F3F4EEE1497F9D /* DigestType.swift */; }; - 361E941F93802DA9F9370489FCD7A1EB /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 589937E90DBD42643A3BB7C0F8E1CB6E /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 363E097BF6A01F967F2CC088DD7DDE05 /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 22276031D3E12A4B4692747F2EED285F /* PromiseKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 372D7A21D48378B6EAF7FAC6B38C55E2 /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 56FC04DFDECA01D4A3CC74702800B629 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 37D4FDB5780A501363399C76C3F8A0E1 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = D478FD26E9B06D4AF421D0A847F05CB7 /* after.m */; }; - 38E18BA5911B746761441D40EFB80A27 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = B414DCA754533B2497E413195353037D /* Operators.swift */; }; - 38FAFA5C87E9E768FC1E6F3C74DCEF95 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D489E3BD7EFF73F8DFEB5DC16FCCBED /* AES.Cryptors.swift */; }; - 3927593FDF9A68FE5B3B19753FAB6B82 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 168239DB48F2C0DEB1D2D73295F556AD /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A97BEE7E6EE85BE7466F516701AD584 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = DABB16DE6F842BC5F7C1FA8AE65F3C2B /* Deprecations.swift */; }; - 3AFB09BA89E8209E5860153952A5F633 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349FEDC79E659427A3A7E4B09E30D9B4 /* Configuration.swift */; }; - 3B55DF733126435403FA04631C90C45B /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF499901EB24B63A873FD3D4CDF092DE /* Array+Extension.swift */; }; - 3C723ABAC4572B12348A703F88DC327D /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = 05596F76EAC2A61FD7625823DC488551 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3CD56CB53F54C1F00A71586EEF1F9DB2 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 15173F566998512BBB9AA1D3ADE4DFAC /* hang.m */; }; - 3CD743811BD5D5217234E9E6E7E7369A /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A3FB1A72B8E12263DEBE540355A86EC /* ECB.swift */; }; - 3D020451F3210AAE671251056FF97463 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D86040A42AE6B2D31485A1D8B40BF07 /* PKCS7.swift */; }; - 3D89F469F02B4986A9BA09AD80085568 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3B12F7827FEDC820149590DF2F51E63 /* BlockCipher.swift */; }; - 3DE6906CAC11AA102A6A46DAB64A5279 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656D93793AE4808C058F16FFC5A211E0 /* BlockMode.swift */; }; - 3E04A266F52E5D9C574E6D14E3B6BF44 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 361FA6E8F841E7B9BE7AA982EFBC3A90 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E4E6653D2E799232D121569D1DC6EC0 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 873856E9190AE5B8652985DAC73FF8EB /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FC74B15C59611B68A23AEE1F980682D /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5343C2355FC862E74DB99D600421545 /* CFB.swift */; }; - 4004D937141813B6CF84E329BD436EEE /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 56FC04DFDECA01D4A3CC74702800B629 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 409126CF337E38512CA24534D229B6D5 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34526A3852A1A5C2F7C458D97A8A900F /* UInt16+Extension.swift */; }; - 40CEB3E93F53C9F957172F26C0C4612C /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A3FB1A72B8E12263DEBE540355A86EC /* ECB.swift */; }; - 4123A2F2BEB523206CDB002F90969932 /* PromiseKit.root-CorePromise-Foundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DA74424254B5E6BA2DAC23538953B3B8 /* PromiseKit.root-CorePromise-Foundation-dummy.m */; }; - 424B4D98E2454D0A035F5F268E5435B7 /* BigInt-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E07D550DE80C5CE390AEDE911947858 /* BigInt-iOS-dummy.m */; }; - 42CBF29A9D2F4D27B33BB161B275341A /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFA33456BBF3A81EF266736D5EFCD104 /* Comparable.swift */; }; - 433354A15C963BEDF093FC8DF02A6BE7 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D752DC0BF982B73696FF172811AC786B /* BlockEncryptor.swift */; }; - 435B6948B2C1853FA16EE2A9FB5D36CC /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D45CB1CE69B624AF22052E077769AEF /* ZeroPadding.swift */; }; - 439FF0B3698C7F9417B1FE2A3A5713BA /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 1B84D8BD6AA21608D7C1F367D7A228AD /* lax_der_privatekey_parsing.c */; }; - 4409B4CF53C44C4A38722272FE1EA3A3 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D1367804F4BB564BD046352AA73051 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44319204ED0CA6A922B93904A2A95FEE /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 558814016D6A7FC3319ADE8CEB46E03D /* BlockDecryptor.swift */; }; - 4465B572B209EAB6564086249F3DBDD0 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 2034666AD58D00ED6CBB99F6582D6D6A /* join.m */; }; - 44965233E311D3C51C6849BDCD0E93FB /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BA80B342B58A1F7D98B7CF0298D7AC /* Prime Test.swift */; }; - 4522DBA7A0DEBD2D76EB7148B78F0FA7 /* EthereumAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 59D114BC19FD2727C45A3F54CBF0D2C4 /* EthereumAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 45EE63EB69A7B5F0AFCDA0555298D9D4 /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F57FA7DB572E3F83C8C5DFA6FC1B57A /* BigInt.swift */; }; - 4702D26908C5B49D2000560DC6DEC459 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = C856A3750DB25449B35FB4F2DA792010 /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 476DEAA8AF896F6AD72F0B373A9DD1FA /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 363536B52D3D69D576EA73073652D568 /* Hashable.swift */; }; - 4A06BC0AADAD31305DDC10A3E41E0732 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D387481791D12FD62A9BA2B990CF54 /* PBKDF2.swift */; }; - 4A2E47CB1697E276EAFBC7979E6A6839 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657F66F26C28DFF82FF46807563B4E9C /* Floating Point Conversion.swift */; }; - 4CF3AB5953980F1BE7AACF4BFCDBBF47 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = DABB16DE6F842BC5F7C1FA8AE65F3C2B /* Deprecations.swift */; }; - 4DA86A75F12D7351502421DCBBAB12AD /* SwiftRLP-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C742B85EDF338401A2BBA47FB717ED4D /* SwiftRLP-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4E8ACC9BFE2A9CEAE8B942BE68D949E7 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2C009D2A4A1D0A320D910113F2E8E83 /* AES+Foundation.swift */; }; - 516083577F237F4204D8D0B56F19F779 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B84C48CEECDD98F374D9F5616427EB17 /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 519384789CEE84CE82C8981C0BE44B31 /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0527E6B94F781FC38F1E041D48897CA9 /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 51D7430F23144EFB2A36FDE351A6D996 /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5455FAE35B59D48DACC1505D3EF8F287 /* ABI.swift */; }; - 522EF6236FAD5887D3F5175843C371ED /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C76CBAF8958BC38DD11D5CAEEDC99155 /* Strideable.swift */; }; - 528E8859551BACF7AE8037FFAB08D3C1 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2C009D2A4A1D0A320D910113F2E8E83 /* AES+Foundation.swift */; }; - 52B7A922734284CCD62E379A768EC90D /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9CF0275E8A1D7A2B41F5A774A5F0ED6 /* MD5.swift */; }; - 53A69006D3A783CD2C9CF4494D9EBEA6 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = D62D03C802FE484FA46F8B981FFE7FEC /* race.swift */; }; - 53A746CE242B39FD6B76FDF660A57DF3 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 72A0F3D157B6FF7544997435C8C2653A /* lax_der_parsing.c */; }; - 54A3C85639672E915E66CDCB10B89C2B /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17C7F2CD460A6321790F2C068142BD16 /* UInt32+Extension.swift */; }; - 555C510A2AA7ED117D3E7DDD36DC29E7 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 19C878797582D0612D89FF481F3A2AF2 /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 555DE1D0C3020E12344A24FAAA8BA5B8 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 096D76C734D0C860C06F45FC68A87663 /* AEADChaCha20Poly1305.swift */; }; - 55AF1A2B2AF621E92A3DC3627572D977 /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7939B57B76F4EC762DDB703A9633C24 /* Data Conversion.swift */; }; - 57F5335C1539C9F1BE75BCB75AA47FE7 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6727BE5280045EA814058E5E322E9E7F /* Generics.swift */; }; - 581B1BDF7A84EA7075965C213767B4CA /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = 2378E9B88E5CD07C799D5E271D8B82B8 /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 58D50AE2ED87610C41151109F3119633 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E85A0961ED2B533E0550BFCFDA420BDC /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5BBDAFE210D6B78F2266AF2E51862A1A /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF499901EB24B63A873FD3D4CDF092DE /* Array+Extension.swift */; }; - 5BD95DF6D71741CA87C4B9FE7C41E0CA /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B57AA627BE7FC2E77F5EE8C075A9D8 /* CBCMAC.swift */; }; - 5C072C3C4A74219B5FA2D5C9F60F98A8 /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17C7F2CD460A6321790F2C068142BD16 /* UInt32+Extension.swift */; }; - 5C701C2C1EECF8756F3C33A520FC487A /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB76205BB4AC2F224C001580773B939 /* Codable.swift */; }; - 5CD127C5E160A42B8AE4E822B599388C /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05135AEC6E4F9A692EB6BDAD910A12F /* GCD.swift */; }; - 5CF8A73123657D5E589251C7C5A2DFF4 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B696D5331F11BE5F3C3E5F68D2F3B11 /* when.m */; }; - 5D1489AF420BA86ED7267F073472FFFD /* ABIElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9523141DD1B656335F02284D93ED090 /* ABIElements.swift */; }; - 5E1FB22432F5241B2B0A5DA1FF94B585 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = B961DFA6EA054CD31302DED1A6967059 /* HKDF.swift */; }; - 5E391295FD075199BE28FBE54379EDE9 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ECF3FA28CBE557FA60588B18EA6AE573 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E431D4EA69AC64D22C5B651B790B606 /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2313F89A5AEB8DD926DBBDFC3D842668 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5ED3A0F5F11EA960F868E2902448B37A /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 22276031D3E12A4B4692747F2EED285F /* PromiseKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5F07582968E5C4B1E49F966651704237 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6F5E183E707AD82165C551C7480ABF1 /* BatchedCollection.swift */; }; - 605CAB815FB1C8FD4AEC064C27106F73 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AEEA5D7B37190F5679847BDDFB197AB /* Cipher.swift */; }; - 609F839B5A14B6BED8318A6C4C8EF50D /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C1AE2C7C7CAE48D1076D3FB542DB358 /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 60A09DF3A33D24ACF94BE39003AB86EB /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ECF3FA28CBE557FA60588B18EA6AE573 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6137CE9939581087D84DE192E3088480 /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3739CAE1052D6D89A6AE9793698C7B47 /* AEAD.swift */; }; - 623A36BB7B51E1DC6A5F34DB67B8CCB3 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 977EB9C15469AD0FAC5C4C47DFCA1E44 /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 628C1D447289AE2ACE6BEA6ADE01EC09 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 981C052F09397EE9506712DC4B7F2C14 /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 63D79493C4B05B0F596B43E129B6DFBE /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9CF0275E8A1D7A2B41F5A774A5F0ED6 /* MD5.swift */; }; + 0A11C0F9B934691866059D59116B481F /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFC1C755F5C2F88999DCFF42701D573A /* BigUInt.swift */; }; + 0A4DB6625965D8E286C6B2AD645F4BD8 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E6C540A70650CFB45BB7C274471E84 /* Addition.swift */; }; + 0A5CF83078426B2D139A8139077C87C9 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 115F2E0B1F15AFB9D1B7F053BCF5818A /* Resolver.swift */; }; + 0A8CEC53556C4684EBB5E8087FC431B8 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B991B925F7AE711ACAA8B19741AD685 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B6F3455270ED43061165E6AE41DF882 /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 21307FEC44274F5C58857F4BB7C52FC3 /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C729FA209B23D741A7BF68CA6F61098 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CBD6E2A5A1C37DEF84883C5389E04D /* Int+Extension.swift */; }; + 0D206E20237A65EEC7D91EE361181AF7 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67B360708114DFD3CEDA6F6661C38A1C /* CCM.swift */; }; + 0DDBEBBC35E7006100CCD67DAA2EB959 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 66D10DA17CCD420FDD7BEB051B5E7EC9 /* lax_der_privatekey_parsing.c */; }; + 0E524E38163C478A87BA8971BBB5179A /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = B40E698A102CB11557BE911B8A3C3C35 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0EF4B207D551D2B314BB0EA5BECA189D /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F44FEB52A96A2387B75A25F9D9F2E4 /* Scrypt.swift */; }; + 0FCA9824C775454DEE65386700FCC506 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 771BACECA893F1BB7DA72C1C37C44901 /* Rabbit+Foundation.swift */; }; + 103E92B26E0A7209D9D1A9FD4BE42E9E /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 05F3218F9C7AEB2A3CD6B49C28F61D42 /* secp256k1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 11E104340B2B221FE96346047BAD6D71 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A765C09E2790502B46527F61B90C054 /* Padding.swift */; }; + 1216B707DC708F71B95BEC576ED3A514 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69D87B68E67A99002EEC5252514B0D57 /* Integer Conversion.swift */; }; + 12B58DE32E4A642BE42B5DD7F5D3EED0 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AA4B5350C604E8B4710156DD91F473B /* hang.m */; }; + 12ED0D6352AD8E7C6B2AF8872FE07A58 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C3402B3B1196A6A499C758A336D2A6 /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 13A13B8815787000544347A9930BA16D /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE1EFB69CC3055F1503CF6B27E7B0BE9 /* SHA3.swift */; }; + 1513BEBB3898B1412DE2E2CD5F023838 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1EB7C609DEF82CF47B51F78AD1D46F2 /* Generics.swift */; }; + 157A52C754866F2C98865A270562F595 /* CryptoSwift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 91B2C1CB3CCA65D8206D68C219428919 /* CryptoSwift-macOS-dummy.m */; }; + 159BACB4E2560B12CDCDE549D1E1A872 /* SSLClientCertificate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F101D6CF40D7F4694116ACF526EEB96A /* SSLClientCertificate.swift */; }; + 15F0FADACFCD4E6B4B0617D2ABD80054 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC7066B3F5257C3F62F8E9181B71DF23 /* RandomUInt64.swift */; }; + 16AB332EAE742445CC3FB8EBF34AF2B2 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F0DD77BBE1D1D0B60E77FC98FE58A8 /* AnyPromise.swift */; }; + 186425A9A842EBE5930B4D8F8E636BE4 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C23B3D828DED4F74CD73C1DAC483E86C /* SipHasher.swift */; }; + 18A65DB9641AA9A0561755A7D07D8961 /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = DA4B10A7801FFA5184E69E581DD4BDD2 /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 19247CDF5AE68A5FC65909EF92111B25 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B66B81D2CC11A42B29DF35C11CFBF7A7 /* UInt64+Extension.swift */; }; + 19B5E5C266EE9B93BF166D024B2ABBD2 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 26571C1AD51ADD36B8487457A2DE999E /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1AF9930C8AD9068C23C077EFE8E47D8E /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7EC0B885851718878974A7B10FEE4C7 /* UIView+Promise.swift */; }; + 1B0B519A890C7F9491BC726B690153B5 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B75520BE742B11ACE9049044041CEBF /* Division.swift */; }; + 1B765C25585B150AE631EBBC31CC7A4D /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7266342A9EBC8B7442D5901610483A /* NSURLSession+Promise.swift */; }; + 1B85FB16B458E4D90420E9B119A6C9BE /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F38BA9962689772EDA0506F2A3254E4 /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1B91092A9BAFC23D4091AE56F94B68E4 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09B0D5FCD0E2E1B27A4E69416D49470 /* NoPadding.swift */; }; + 1BA549783B4D28E606671796489C4E90 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 877AAAF7B5AB6E1D5F6E9AFE46EECAE1 /* secp256k1.c */; }; + 1C6D65C7BD3DB9F02296BE5C51F1F083 /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = A4CD3F94452C7F2EB5C3EC9C7071BCEB /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C90445001B50ADF0BB69BEF639E5742 /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BE83D3F4A88261D1B818A5FEC1D80E2D /* scratch_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E211054D59D77C4D1B112F2021ADC96 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 259D4B9E3002CB46981373646552C189 /* PKCS7Padding.swift */; }; + 1E6488AD243EB09B2BAD090507946B76 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = C5D97D113E11DDD7067C70CF4517DAF7 /* after.m */; }; + 1E6C8ECFAB1A902A4936FFEB22079A02 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E6C540A70650CFB45BB7C274471E84 /* Addition.swift */; }; + 1EE91A9718C2762FFB79FDBF644F5A4E /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D66A9F054A063BD046DA3EB26245B11E /* HMAC+Foundation.swift */; }; + 1EEF0AC9C285DB3CA73F0D9058DF4E71 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = A73EA60796E2773612856EFBB6FA1C1D /* race.m */; }; + 1F1EF4F5E8A211670C84F4E56F2003B0 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C149F16ADBF78E5ED95460B8783C8519 /* Operators.swift */; }; + 2000B7B520FE6E56E8A656A2B19D5C0C /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 072D93E76657AD12862AB0BBB44C5648 /* Shifts.swift */; }; + 203DD312A5D6C23266BCE56892FD739B /* BigInt-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 09CD6963326BE02CBDE1C7D5B5BD0282 /* BigInt-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 20AD8745CED423283F99706D3E5A4341 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC8CB0533AA3C4EE8640E3020CD5656A /* Catchable.swift */; }; + 212AEFA0295AA6EFD0671B8DE6476FE4 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB2361281B0541EE92FEDE7A4E0F6EF /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21C45164BA9D0172A286ADE8715116A4 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 062B593234D703A4C58BC97499AFDE27 /* Configuration.swift */; }; + 227AD61FC03EEF7ABD45C12C6C24E107 /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46B77EFA51E3D4B43C25719299ACD7D6 /* UInt8+Extension.swift */; }; + 22A00756B498E2904A5C0D9208DBAE17 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 259D4B9E3002CB46981373646552C189 /* PKCS7Padding.swift */; }; + 22AA6C68DAA84A001CF2BAA2D4DF0D0D /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CCB554E0C3A9A3E2036421C7676816 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 23026CDCF1B06AA4FFFDA08573D104F0 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = DF59C2A7C3C356BD27702917CFCA4DA8 /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2357617AD9054CFE364623315AA1157F /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 771BACECA893F1BB7DA72C1C37C44901 /* Rabbit+Foundation.swift */; }; + 2359DFA400D532F3555052AE96E9F3D2 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 21920B2D0558FFA6780A1DE2EA3D38AD /* join.m */; }; + 2408ABF0F183F0CC36D50F8433F3F332 /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = A4CD3F94452C7F2EB5C3EC9C7071BCEB /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 240903F1CB0F5FD146220A03F19D4CBA /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E20AB170F4A54932380A2FFF476E4D /* UInt128.swift */; }; + 2423F5718779EC89EE406DD8C7477A55 /* Pods-web3swift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 97094F93C66747990ACAF33CA0A5A034 /* Pods-web3swift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 244036C257C3DBC2586BE1D9164F3C90 /* SSLSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AD2A1D6F4792BB8C25CB35E103E9657 /* SSLSecurity.swift */; }; + 2478AE9F55B081C003329434D8A2FFDE /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA0722A278ACD20B9304F4FE7DAA22D5 /* hang.swift */; }; + 249562F51A5E07DF862CB21AC0F31ADC /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E84AAD9A4FDE032017007F9C3A55075 /* Codable.swift */; }; + 25381F983F3E46B46BB6F2D60583E315 /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0C77DD993F7E165460EC0DCE198706F /* when.swift */; }; + 277660D74FBDD95B3610266167F7CF7A /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 52D33700E85ACC83CE34BAB5E806BFF8 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 27860F9D8159E94F56559A5872FCBC24 /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B959C972252CA017C64A5A8FE37D50F /* ZeroPadding.swift */; }; + 27891BA144B2378BB844324DA484C121 /* Starscream-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBE4C77E28D19F47D5A93F5E9F88EB9 /* Starscream-iOS-dummy.m */; }; + 28C63781E7E4AB8243321FEB317BD5A6 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = F99B3DB488BEB064AB7A9230B18B29EE /* Utils.swift */; }; + 28DA93F5A980C0267D2102D521738F56 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = BEBF981EA3E9083454CEC5A42DEFA926 /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 29163DCCA96C5BB244A4A2A4B4258DB8 /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF326A733AAA3B47C05B5B6B9054A45 /* UIViewController+AnyPromise.m */; }; + 2924B754AE216404471861BF98F57C47 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27E05341BFB24F456B02B4AE8D972FF4 /* BlockCipher.swift */; }; + 2A3F786E13160373E1874FBB99972FEA /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2624E99D931CF25E3BBCCFB51B854672 /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A72B0FD70E02FE05ADCED34389E5D5F /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8C179B70319D11D98FC38396E9CE78A /* SipHashable.swift */; }; + 2AE4456F891EB698A161E579E7DE2609 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E0FC3168FD899B4C60D7FACB7716C3E /* SHA2.swift */; }; + 2B130EE26C370B4FA7D8C5DA0334CAE7 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5256EA5A29BC4C55A003D9247A1A3029 /* PKCS7.swift */; }; + 2B239FA51CE6B11F663BC2C668FC1EC3 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AAB49A993F30F4CE37221A805E2FD3 /* PBKDF1.swift */; }; + 2C7C88A9FF74E6BAC1FD7020B4E13C26 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 833388A687330F16FC8A34F917B53AA6 /* HKDF.swift */; }; + 2CB296DD07D7828CB9BBFFC5AE4E862F /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E831BD47ABF5DC7F071EE5F38159A36F /* String+Extension.swift */; }; + 2CB3D55F31D6927F4AA4C4BF34FF932A /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C1BE4E9495FD45A1BAB5EA01EE1B7D4 /* secp256k1.swift */; }; + 2D8CC88FA9D0C800AB2D1C968854167D /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F10B99718BD2A1F01F570CD3A48C92C2 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2DAB2610704DE94E99988D5BF72F1630 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ECD815A84E46BE4A5F64ABA69183213 /* Authenticator.swift */; }; + 2E09A1612BBA4E4B65676B2DC3D40ABC /* Starscream-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C000A48B6E93B9BB6102E649CD510752 /* Starscream-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2E9AA763D6EB6DF71169A2ED2A1FDB42 /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = A89C12D62DCE512AE5FBA7F84A812996 /* Words and Bits.swift */; }; + 2F2C9F792F9FFC644F4883857A40367D /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 930F74C7F566FF983C697F22EBFC996E /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F8A56B4A6507A38B1B84EDDBEEFDFF1 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 21920B2D0558FFA6780A1DE2EA3D38AD /* join.m */; }; + 2FA15EA28C9FC0D2EF49F0F8670CCA65 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BA68E7B5C9851779BB8B30EC4075868 /* Cryptor.swift */; }; + 2FD4F4C90AB776B0711FC6EC0E0EBDD6 /* SipHash-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E4F85197D7BE39E43D18268B09B15E1 /* SipHash-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 304651BE6224CA23CC6BD71163073C4B /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F236CB40EB7129EFFEED9F5772CAB27 /* AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 30EDA872902E4E7F8DB7D4C265754432 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AA4B5350C604E8B4710156DD91F473B /* hang.m */; }; + 31488A9BA10F4EA61B7AE5AE427BB97A /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = EF4C848FB0F51A14C06D1C7DA3478DFF /* UIView+AnyPromise.m */; }; + 3167F30268878033D0C63889142F1B8C /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 642B2710251F761DDF9C3680D949C77E /* Exponentiation.swift */; }; + 3295DF8AB7A6899EDC42A076A1485506 /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 62925B4703EE0F25CD5AA9B0E1A697CC /* PromiseKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33720ACBE2362615C8F0AEE4E1A82A31 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E0FC3168FD899B4C60D7FACB7716C3E /* SHA2.swift */; }; + 34948B04B578AF2A5E8D9DC4EEC0B7CB /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C20BF43F08DCC1F7C25483151BA5C94 /* fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 357CDA76E6576377BCE35DA6755434EE /* Pods-web3swift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D9B844AC37A6A6A913DB8D26AAC995C5 /* Pods-web3swift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 359E9EC2987D3D30A5406C0B9155D9BB /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F2ECBD47C16E84FD7937670288FEC49 /* DigestType.swift */; }; + 361E941F93802DA9F9370489FCD7A1EB /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F10B99718BD2A1F01F570CD3A48C92C2 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 372D7A21D48378B6EAF7FAC6B38C55E2 /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 81238A89E764F627AEECC1D25B13F568 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 38E18BA5911B746761441D40EFB80A27 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C149F16ADBF78E5ED95460B8783C8519 /* Operators.swift */; }; + 38FAFA5C87E9E768FC1E6F3C74DCEF95 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF45EF3C4580F6BD4DA8649207ADB054 /* AES.Cryptors.swift */; }; + 3927593FDF9A68FE5B3B19753FAB6B82 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5478CD6BE0741A6D364C23E9FF1077AC /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B55DF733126435403FA04631C90C45B /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8A3B02049CE51AE003FB430B2DC45E /* Array+Extension.swift */; }; + 3C723ABAC4572B12348A703F88DC327D /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = C0F56F179803DB6CBDA31DEB40AAA523 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3CA57F4C1F693AF624BC81A47558FD53 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = C5D97D113E11DDD7067C70CF4517DAF7 /* after.m */; }; + 3CD743811BD5D5217234E9E6E7E7369A /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CA248A95357A312A09B0568C297487A /* ECB.swift */; }; + 3D020451F3210AAE671251056FF97463 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5256EA5A29BC4C55A003D9247A1A3029 /* PKCS7.swift */; }; + 3D89F469F02B4986A9BA09AD80085568 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27E05341BFB24F456B02B4AE8D972FF4 /* BlockCipher.swift */; }; + 3DE6906CAC11AA102A6A46DAB64A5279 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D69632F535FD98C95190038FC7C87A9 /* BlockMode.swift */; }; + 3E04A266F52E5D9C574E6D14E3B6BF44 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = EAA23D84D0877D4153AFEBFB3FB8D870 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3E4E6653D2E799232D121569D1DC6EC0 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = AF9DC97246696CC9791EA7219ED77609 /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3F783FE463C608D221126CDCFCB514DA /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = BDA93F1AF94CABEC2ABC4A016F78439E /* PMKFoundation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3F933408D15C84E0D05F643BEC1C506D /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7266342A9EBC8B7442D5901610483A /* NSURLSession+Promise.swift */; }; + 3FC74B15C59611B68A23AEE1F980682D /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = B07AEDC66415BF92E7A4E0DA3AA93846 /* CFB.swift */; }; + 4004D937141813B6CF84E329BD436EEE /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 81238A89E764F627AEECC1D25B13F568 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 409126CF337E38512CA24534D229B6D5 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7696235BDA83DCE78CA15B9A3E55A1A1 /* UInt16+Extension.swift */; }; + 40CEB3E93F53C9F957172F26C0C4612C /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CA248A95357A312A09B0568C297487A /* ECB.swift */; }; + 424B4D98E2454D0A035F5F268E5435B7 /* BigInt-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E809513FBCA61203FE4CAEBDC9F2868 /* BigInt-iOS-dummy.m */; }; + 42CBF29A9D2F4D27B33BB161B275341A /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E7A46513E450FED264F98BA912BB81B /* Comparable.swift */; }; + 432568FDF525064342C9336384C3BD8C /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A17CB38D45292A19C3559652B2A9857 /* firstly.swift */; }; + 433354A15C963BEDF093FC8DF02A6BE7 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A8A7846779319B5AF7B7FD7678E2F7 /* BlockEncryptor.swift */; }; + 435B6948B2C1853FA16EE2A9FB5D36CC /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B959C972252CA017C64A5A8FE37D50F /* ZeroPadding.swift */; }; + 439FF0B3698C7F9417B1FE2A3A5713BA /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 66D10DA17CCD420FDD7BEB051B5E7EC9 /* lax_der_privatekey_parsing.c */; }; + 4409B4CF53C44C4A38722272FE1EA3A3 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CD1FF879BA6BC3417C799878DE6F79 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 44319204ED0CA6A922B93904A2A95FEE /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7586A4611F1EB5FD23A0A8E744A274BD /* BlockDecryptor.swift */; }; + 44965233E311D3C51C6849BDCD0E93FB /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3A22CA727BED8B76A60015627FA7D8 /* Prime Test.swift */; }; + 45EE63EB69A7B5F0AFCDA0555298D9D4 /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1839C3A694AAC21963034A492718BA /* BigInt.swift */; }; + 4702D26908C5B49D2000560DC6DEC459 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 57BA855967F971FEA645E7A12F7D7E12 /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 476DEAA8AF896F6AD72F0B373A9DD1FA /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA67FBCC3656509F23DC76392A853371 /* Hashable.swift */; }; + 4843A58391A8603A5E5272279AFA8702 /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 62925B4703EE0F25CD5AA9B0E1A697CC /* PromiseKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4A06BC0AADAD31305DDC10A3E41E0732 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F2DF7D68EEC4AF5198919C8128111FC /* PBKDF2.swift */; }; + 4A2E47CB1697E276EAFBC7979E6A6839 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 618C45B65227C5DF2E02229A52E31853 /* Floating Point Conversion.swift */; }; + 4BE4B09F5BAFDF39618C39FA1670B4A1 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 53FA797E0976B9B96348FB82F8DC3DBD /* dispatch_promise.m */; }; + 4C65C4B790C69EC8DC2D6FBD7F5F851B /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = BDA93F1AF94CABEC2ABC4A016F78439E /* PMKFoundation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4E8ACC9BFE2A9CEAE8B942BE68D949E7 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367FC28408AE4921EA09065CDC5B36AA /* AES+Foundation.swift */; }; + 50CB47BF15C56A30425F61BF4F5A210F /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDBB39B4192E81DAA1EA5CA82A584A7 /* when.m */; }; + 516083577F237F4204D8D0B56F19F779 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 13909D9749BDDAF53BF6F06729ED8378 /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 519384789CEE84CE82C8981C0BE44B31 /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 930F74C7F566FF983C697F22EBFC996E /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 522EF6236FAD5887D3F5175843C371ED /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCACB4DE2A8E1A481DE0EDC3DD135956 /* Strideable.swift */; }; + 528E8859551BACF7AE8037FFAB08D3C1 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367FC28408AE4921EA09065CDC5B36AA /* AES+Foundation.swift */; }; + 52B7A922734284CCD62E379A768EC90D /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = C551D6AEFD48F300E5BF895DF2CE0C64 /* MD5.swift */; }; + 53A746CE242B39FD6B76FDF660A57DF3 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 9E13CD510B8B4FFE1C33845B056172F8 /* lax_der_parsing.c */; }; + 54A3C85639672E915E66CDCB10B89C2B /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3633C5CE9E0505026515F5090144AF71 /* UInt32+Extension.swift */; }; + 555C510A2AA7ED117D3E7DDD36DC29E7 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2624E99D931CF25E3BBCCFB51B854672 /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 555DE1D0C3020E12344A24FAAA8BA5B8 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99CA87C90C2CE0FD4F5BEB20AFEB1833 /* AEADChaCha20Poly1305.swift */; }; + 55AF1A2B2AF621E92A3DC3627572D977 /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D692FCA6198D6487DA18678723BB0E8 /* Data Conversion.swift */; }; + 576FAC97DD811A0980916A1547033E6E /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 53FA797E0976B9B96348FB82F8DC3DBD /* dispatch_promise.m */; }; + 57F5335C1539C9F1BE75BCB75AA47FE7 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1EB7C609DEF82CF47B51F78AD1D46F2 /* Generics.swift */; }; + 581B1BDF7A84EA7075965C213767B4CA /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = 8757B059CC71702C833348E0C2B66AED /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58D50AE2ED87610C41151109F3119633 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = DF59C2A7C3C356BD27702917CFCA4DA8 /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58DADEFEFC3D99EC0302255C0B0120C7 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = AF7856EE7C3C1F5C882290EE961EAE61 /* NSTask+AnyPromise.m */; }; + 5BBDAFE210D6B78F2266AF2E51862A1A /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8A3B02049CE51AE003FB430B2DC45E /* Array+Extension.swift */; }; + 5BD95DF6D71741CA87C4B9FE7C41E0CA /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85249351EFF672E4E8D0C6EB02520237 /* CBCMAC.swift */; }; + 5C072C3C4A74219B5FA2D5C9F60F98A8 /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3633C5CE9E0505026515F5090144AF71 /* UInt32+Extension.swift */; }; + 5C701C2C1EECF8756F3C33A520FC487A /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E84AAD9A4FDE032017007F9C3A55075 /* Codable.swift */; }; + 5CD127C5E160A42B8AE4E822B599388C /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 170A63993058B055F852428188D98351 /* GCD.swift */; }; + 5E1FB22432F5241B2B0A5DA1FF94B585 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 833388A687330F16FC8A34F917B53AA6 /* HKDF.swift */; }; + 5E391295FD075199BE28FBE54379EDE9 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D4D5FA08D5CAA0932F363784006A6984 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E431D4EA69AC64D22C5B651B790B606 /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A97E581A98D7DE9A3321EDF1EADB28C /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5F07582968E5C4B1E49F966651704237 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = A571169D0C0DC6E60C6C1B152B85B6B7 /* BatchedCollection.swift */; }; + 605CAB815FB1C8FD4AEC064C27106F73 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6495EB11BB0CBD5F66F7C944D63BAD51 /* Cipher.swift */; }; + 609F839B5A14B6BED8318A6C4C8EF50D /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C2C0E04798EBB71E7123D512C62369B /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 60A09DF3A33D24ACF94BE39003AB86EB /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D4D5FA08D5CAA0932F363784006A6984 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6137CE9939581087D84DE192E3088480 /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 479AB9DD4B3F021BD51C594772FD7A92 /* AEAD.swift */; }; + 623A36BB7B51E1DC6A5F34DB67B8CCB3 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = C7458B47F20786820DFD6E8A561373E3 /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 628C1D447289AE2ACE6BEA6ADE01EC09 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F01025C6D323D833DF7384CA21560AAE /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 63D79493C4B05B0F596B43E129B6DFBE /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = C551D6AEFD48F300E5BF895DF2CE0C64 /* MD5.swift */; }; 644892D4646BB52B39011A418EA6B185 /* Pods-web3swift-iOS_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B0E783134B8D0D141409C244D06F708F /* Pods-web3swift-iOS_Tests-dummy.m */; }; - 6450AB34A45E7F4C948AC1114E1FFDBF /* Pods-web3swift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D9B844AC37A6A6A913DB8D26AAC995C5 /* Pods-web3swift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6481313C8C3C1D8D90B08F31CCA22D6C /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A2A3173F949AEAEC1663790613FC8A9 /* Square Root.swift */; }; - 64CE2C75FD9CA44225080EAA73AC1438 /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82C9C2F57398B910E4A0089E710BBAD4 /* Subtraction.swift */; }; - 65F50BF6A7D0D18C34B239737FCCA476 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A5F1CE6B4F3A924CE2C7B538CE87C90 /* PKCS5.swift */; }; - 66609A4C15CDF54B0AFD5F23AA3CE26F /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2C80E731F6754B9AEF54D249BFCC6C4 /* Poly1305.swift */; }; - 673906098B8693FC5656B1D50543E4AA /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5FAEC0C19B3262A6F246B95124C4A99 /* Cryptors.swift */; }; - 6791B3264078A6A14E0D500C9C7CF550 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8C6E174E18F006C8EB43EC02A8FE3D8 /* CBC.swift */; }; - 68F5D0F8A21B099443F011146DFE1342 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E3337421B6559FCB342E151CD2C9512 /* HMAC.swift */; }; - 6B8162913CB7353C205542A736AC2C7F /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 63530C8FD8A55BD3627FE6173EDF0AC1 /* AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C04F8CDD5800CD80CB5262438959201 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DDF3D294089BB0BD9506A83E1115D5D /* NSURLSession+AnyPromise.m */; }; - 6C51D32EA7F20A2F263A09C927C7D9B4 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D798937D9F18187B1383DE6A6CBA529A /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C6C0EBBC4C6CC78B82D0EA288076D54 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = A657B8DA6662B1DC092AD8211ADC6E9A /* SHA1.swift */; }; - 6CC7B5A5361513F8AC4126FC69E3ADA3 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 000324BCB32A0DC73A29393B4D60B2D6 /* GCM.swift */; }; - 6D9DFC0F70F52294B8874F06DEAC6951 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EC5795AC0B3B95BE65438DD06CE5775 /* secp256k1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6DF8081B070F090BB4ED056EA6140073 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98627823FFA064CF7DFF9D20FD59595E /* CTR.swift */; }; - 6E388FC4286DC27751ACF8C9D4DEF166 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF171FEA3655CACF1B6B9C6F85586945 /* after.swift */; }; - 6E7911B920C62CD0A6550093A52D92A3 /* SwiftRLP-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 21DC9B7712BFC051A8073E5880CC93ED /* SwiftRLP-iOS-dummy.m */; }; - 6FA13E9363102766D5A3B0112B6E16D7 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFD4227B942CE70ACCC835E6BBEB35CA /* Integer Conversion.swift */; }; - 702A917E750F6365E95930FCDA2E2354 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = FDD5FF297FA7350FDD93F56157E2E2FF /* secp256k1.c */; }; - 7059F1C6F46F4180F3A2449A405AAA04 /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0918CB6074FD9988D8B8AF6E9933FAAF /* when.swift */; }; - 70665101427F9CA2B3919E12AA56CFB6 /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F1E2B1C1E824F624C378758F6EA7541 /* NSURLSession+Promise.swift */; }; - 7093965F04EEE34C346E5A5BF9C625D1 /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 06CAD11822E804DF5FB8AFB3BC777B67 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 70A8CA84F69DF2609568FFC38B46A493 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9FE46BD8AC65F3CF39F89C0D3E30A0 /* Box.swift */; }; - 70BAD0FC6AC6BF76FD335BB23951B517 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57829B17883880D67DD44DBAC7E201B9 /* Promise.swift */; }; - 717E7B0EBA55C0DEE1FDDFC0AD26FEF6 /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C77233EDBFE88FFF7D996071BFEF9FF /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7185D470E99C3DDF2F5C151A2B67CD53 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 073D210D24EBE028D4BAE70A788B2EF5 /* PBKDF1.swift */; }; - 71FCE9FF2C656E2A62B0DEA5986F945C /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B436F98D1DB7929BA58C4C7D8CB1A9E /* Utils+Foundation.swift */; }; - 72AEC165C95549FCB1D95984BFAD43EB /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DDF3D294089BB0BD9506A83E1115D5D /* NSURLSession+AnyPromise.m */; }; - 72E81995594BF3655B96C0F8C67789B1 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD8CD832FD8B563E6275F7D3E39363CA /* SHA3.swift */; }; - 72EE5143110B4D378DD3F968F6773519 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE05C0D2A232189FD47CCAA74FCB9E1 /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 733BD417006FC6A9D38E5A937E5DB731 /* secp256k1_swift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 26735B315AE3BBFC093751F34FF5298A /* secp256k1_swift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 73B1A9F3331D799BF30DEC8A10506007 /* ABIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC89570C769D238D7D55E8628584BBE4 /* ABIExtensions.swift */; }; - 740F3FF9F884689265FD4C8DE267351E /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C1AE2C7C7CAE48D1076D3FB542DB358 /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 742327DDB45AA4864ED658BB64C05646 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 665234B604E940B526FA200F3100AF41 /* Array+Foundation.swift */; }; - 742C71D650C2F550FC143075C1AA2BD3 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 873856E9190AE5B8652985DAC73FF8EB /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 74FB34842EAE7160206E0C1A7EF29E67 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4707EC7A4D80C89519E38548D90ED30 /* Rabbit.swift */; }; - 74FFD588547E32458BBF2F13DF2FDA91 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6BCF9A48B01832EF9C2384895B10C32 /* WebSocket.swift */; }; - 757B699F5C29D87DA726891DE6CBD291 /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = C2B9925CFA50A6F14B49FF67EB875DC1 /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 768D4F24932CF64519F1BB4262FDD184 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D798937D9F18187B1383DE6A6CBA529A /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76904DC795DC341EB6F40DED0690D06C /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2D9C6231E62A77969C8FEF05E22002A /* Digest.swift */; }; - 76A278B49C734EA2F4FC9B7BB525EE05 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05135AEC6E4F9A692EB6BDAD910A12F /* GCD.swift */; }; - 76F4A20BAD96F7259D203DEF2A064AB4 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = B17DC3F7D16756107DB8B2C742718669 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 779D650CE2047B43A0A5355E49A23EA7 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = C2E6B3EC11027F0EEFB3213EF1B0DEE9 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77D24906952DE58B5F8CB6ED89129C36 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE3FE1B6E1523279B964529705639B3C /* RandomBytesSequence.swift */; }; - 77F455101FC0B383A79CB4B45EF9FA93 /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F57FA7DB572E3F83C8C5DFA6FC1B57A /* BigInt.swift */; }; - 78A4E087E29A5CF8CDB9BDB1479685DA /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = F51B31FCC16294985DD51A383F5EEA1C /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79E9149FA3C53278775B3976E9A4FA0E /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 28E99B9CFB57C13F2AFD6FEE4E6D506E /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79F2D81A1E48B49BBD70266491947231 /* Starscream-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CFB8DB629080336526ECA20A84C627D4 /* Starscream-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B85E57B03B837929B123B57101D48A8 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 90BAEC86C0709CB2166B55DE9A70C099 /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7BA7DBEA99267F9E13F9602C747880F0 /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDCC2D78C86E0D3B5D7F386CC02350D /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7BBA56BB7C2B36C35DCA69AA819EE420 /* EthereumAddress-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 028CF3366D14A8473EC19D2276FB883A /* EthereumAddress-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C550DBF3DFA930FD38CBADC9B6DDB91 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E3337421B6559FCB342E151CD2C9512 /* HMAC.swift */; }; - 7DACF9DE9B2216FCCB5B5D19819217AA /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E560E43A25FA0AB7E707AE850B504F /* Cryptor.swift */; }; - 7DBDF97C7D637A6814F02CA737187190 /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E984EF9D6554D3AEDDC5E172A0E0BD72 /* StreamDecryptor.swift */; }; - 7E4DC4EBB32208EA4CF1711383E936C0 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = F962FBE50972DFDC955EE9A1D6F26D28 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7EF7EDC5A9512B104FA6932359D822CF /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86C2174B142F67C7A0A5B9F9ADC0C14 /* Guarantee.swift */; }; - 803793696F606B109B851F294D7DB058 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E64CA6EFE09783E2A721986274EE9ECE /* StreamEncryptor.swift */; }; - 804A5112549BB8766B721496A6B20265 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BBD7BCB8DE7F5FD70D5A15359F58F94 /* ChaCha20.swift */; }; - 806FDA3F16840357F113CA1809044EEC /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8C6E174E18F006C8EB43EC02A8FE3D8 /* CBC.swift */; }; - 823C2D1AF3CF89792D2C912F95FC89F7 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123D9B5EFB2A4F497CDF42CBFE8B9F9D /* HMAC+Foundation.swift */; }; - 82626C83F45250C4A261F5A3B02482EC /* Pods-web3swift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 97094F93C66747990ACAF33CA0A5A034 /* Pods-web3swift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8343E0CD704DDF33F0DA4CE7AB8A54E9 /* ABIDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA40ED69BA394DFDCD5C96574C2692 /* ABIDecoding.swift */; }; - 83711B04683543142449DD54C60D94A8 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 665234B604E940B526FA200F3100AF41 /* Array+Foundation.swift */; }; - 837D71381EBFC606C0D9140EB1EF68A3 /* EthereumAddress-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D246F10F03D88257A18C3B5758B6ED34 /* EthereumAddress-iOS-dummy.m */; }; - 83A42442B2CF4914DC893A94FB17C233 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 795FA48BAA4F836DA1F3F4EEE1497F9D /* DigestType.swift */; }; - 83E4CA60A2D419AD90C1F20B321ADBC3 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 834A6EFE39EE6A9F2DC04AFA862FA91A /* AES.swift */; }; - 8422C3949EFCED2936409458762D98DF /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = F51B31FCC16294985DD51A383F5EEA1C /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84973993632AFF2ACFA1C9E148BA552D /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 2313F89A5AEB8DD926DBBDFC3D842668 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84F7AB5250503616DCD905FEBCD2039C /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98627823FFA064CF7DFF9D20FD59595E /* CTR.swift */; }; - 861F24FA8DD87F6C053A7E0AE8E33C89 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50C16AB2F38379BA2A818AE65B1024B9 /* SecureBytes.swift */; }; - 888725383CEEF37B79262C123C0D513B /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF171FEA3655CACF1B6B9C6F85586945 /* after.swift */; }; - 88C757D0524E0DD15E6AE2D961FBF67E /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D66DCE144E613BF899AF2CC0C89F08E /* dispatch_promise.m */; }; - 8997169700CAE75FEACD7D24AF3091B4 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFE39854E55F2A02E8D83EBD7E58254 /* Primitive Types.swift */; }; - 89A0553A0D489EFF562E41B962C7509D /* Starscream-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 56373AABD9B04A66DA9258FA5ED41535 /* Starscream-macOS-dummy.m */; }; - 89EF538163BEF683155FD403E5B0AA9E /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2D9C6231E62A77969C8FEF05E22002A /* Digest.swift */; }; - 8A8E7D8E38DB414BBD5A34A384E88401 /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = D6E686544EF4C8C633FE41EF2CEC1826 /* UIViewController+AnyPromise.m */; }; - 8AD02821DA12985D2761C78526F2EBC8 /* ABIParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FD052809124761131D26FCAAC8DFE06 /* ABIParameterTypes.swift */; }; - 8B0219EB2CD48D2CE7F1B08FCA5A3672 /* SwiftRLP.h in Headers */ = {isa = PBXBuildFile; fileRef = 1041CA6D2F438B6A5364EE9337F0A3CC /* SwiftRLP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8BD7F507986BE7AD40FB7223BE29D28D /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E9A1BBB6B856729DAE095907B7CC8A5 /* Random.swift */; }; - 8C2E921986CBD898E3CB198E565A1B4F /* ABITypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B30E2451B217420C1AEEC1B80582E3F /* ABITypeParser.swift */; }; - 8CFF981E7C467CED9E37F0376F5202A2 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF231834D762125E63881191D14D68E2 /* Thenable.swift */; }; - 8D6BCAD8E6A1570D2576DEE25A2CED14 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B19493893227F9EA7DA865FA170BC75F /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8DFD042606A7DBAE43153D054DDBD6CD /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ADB725BC454EEFCD74C10F77686A1113 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E0AB3AF54DC3A29F923DD589DFF3E33 /* EthereumABI.h in Headers */ = {isa = PBXBuildFile; fileRef = A92682F12710C31879D2D90258C95F5E /* EthereumABI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E18FCFD759E7BAEB3360AF9E1498C76 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 14B167377B2F0A618F50B7B7C6806B20 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E8A24DA7D134D7AB7ACE6E1E8CDABBC /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AEEA5D7B37190F5679847BDDFB197AB /* Cipher.swift */; }; - 8F6C1A66F6641449D93ECAD404D02B76 /* secp256k1_swift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 61ACBF2F72668E8349A9415D01D85A4D /* secp256k1_swift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 90B38CB79D4C0A55C0695B06F92609A5 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5FAEC0C19B3262A6F246B95124C4A99 /* Cryptors.swift */; }; - 91B9EA48A8FFB719CB7D3E225C90C633 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 686E602AE5082CBF2C101ECED65BE99C /* AnyPromise.swift */; }; - 932BB1F3FACA78A4C95FE7DC85F89320 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = AB5ED8646AD184C3A56823038022EC7F /* scratch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 933BE7DE15AFF34C0DF8229A13D908E2 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D387481791D12FD62A9BA2B990CF54 /* PBKDF2.swift */; }; - 934D50ACF6E4801B462957C1833EAE58 /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C76CBAF8958BC38DD11D5CAEEDC99155 /* Strideable.swift */; }; - 93A04D37DB1964D7A70D6AD5FFB08A3A /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54EE61B3E1378B7528157957F6E2A56C /* Blowfish+Foundation.swift */; }; - 9512E8F6573EA5F88AAB54563EDAF608 /* CryptoSwift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F901BE3FEDA6433846929FD0B9A39B5 /* CryptoSwift-iOS-dummy.m */; }; - 9598EE4AAE18E6340B0672A9EF2535A5 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6788ABC80588BB40BF2D1D12AAE66F22 /* Exponentiation.swift */; }; - 95C3EF6EEC764F39D535C17B324CC16B /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D489E3BD7EFF73F8DFEB5DC16FCCBED /* AES.Cryptors.swift */; }; - 96E0F67C718ADB7EFB9920BDF70AE2DB /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ADB725BC454EEFCD74C10F77686A1113 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 97492EE70DC6A2BB2F2A2D79FD0C1FBA /* EthereumABI-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AF4E5E9BEF07C4BF4F58F75609B6320 /* EthereumABI-iOS-dummy.m */; }; - 97EA20B7233B4341830827061D293E4B /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B84C48CEECDD98F374D9F5616427EB17 /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9904BCD5B1EACD6FE11DCAC74F0B0B73 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 43DE4AFA65A55712FB2E22A4D0808552 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99E0025178762272D29CA5D94A5D1358 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6371F5CFF9A16BD324415D744F33531 /* Collection+Extension.swift */; }; - 9A08E6873A1EB47CAAE76D90F9021F9A /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 15173F566998512BBB9AA1D3ADE4DFAC /* hang.m */; }; - 9A4F8BB1AA0111FB76166465357EABF5 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54EE61B3E1378B7528157957F6E2A56C /* Blowfish+Foundation.swift */; }; - 9AD3981A585B770D52BD9429EB7AE8BA /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE3FE1B6E1523279B964529705639B3C /* RandomBytesSequence.swift */; }; - 9BD47F65E8D46F5D043E1064CDBC2323 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = AB5ED8646AD184C3A56823038022EC7F /* scratch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C31F988DC3F2591930BA87DC99B2221 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 452643BFC330DA77845C5A6609A2075C /* AnyPromise.m */; }; - 9C49C8F33E594D2C6DACB93CCF4402E2 /* Pods-web3swift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E9773490FE3E392A59E69B644513832 /* Pods-web3swift-iOS-dummy.m */; }; - 9CAF369F9C9E863579A150720AD8FF46 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 259BD2FAAD513765CB02BA975A0BA669 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9CD54DF0F23BEAD0E2001FCE912585B1 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = D62D03C802FE484FA46F8B981FFE7FEC /* race.swift */; }; - 9E55A3B7859FEA3051F3326C2248C952 /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = B709CE33931E0C8E75247B4E76D89D5D /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9EF152B069063FA3057A27297B32A3A7 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D837D11202B852A34D063D539CC1E3FE /* Extensions.swift */; }; - 9FC4CF3929D0449FEE9C089C9D34AC8F /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = B2726DFCF39AE67A76395E9DA733E93D /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9FD000043983E879C9D8327366CA55DF /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = C2B9925CFA50A6F14B49FF67EB875DC1 /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A01C0DB6711A08ECFD6C8F6406BEF557 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F312033A8834428A85A4B806F7045CC /* Bitwise Ops.swift */; }; - A050BEA711438CC85129734996EE1D87 /* BigInt-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FB178190CC33A5491DA22006A2D8421 /* BigInt-macOS-dummy.m */; }; - A2844278FFC10E7E29A67DA4CF61DE80 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6A5F98902F7066D66657126D0CECF25 /* RLP.swift */; }; - A2B2BAD4D1FA068B43BE452509AFDE29 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D71818FDDBB76986F7A95E01EFE8EFE /* String+FoundationExtension.swift */; }; - A2BC5AF6DAC36AF7DD4326F9297F620C /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 2034666AD58D00ED6CBB99F6582D6D6A /* join.m */; }; - A33C081D80B8A159E7EEBE439CB1164B /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F73FDACA65B2CE9252283FAEFD72902 /* Division.swift */; }; - A5685B3CA4541CDC053EE98DD1734DBA /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 63530C8FD8A55BD3627FE6173EDF0AC1 /* AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A598C6767AF38F053748123382282A95 /* EthereumABI-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 98D10A3A0BF6FA4534DF828C3950FFA1 /* EthereumABI-macOS-dummy.m */; }; - A5A9B0B395976E2315B6F47C6F624058 /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22A5C841DECB9325536991C63FACE457 /* Scrypt.swift */; }; - A63D3156C4ECF681AFC0A9063FC6857D /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFA33456BBF3A81EF266736D5EFCD104 /* Comparable.swift */; }; - A657A6E9DE6140BF8BA79A0CF9F252A0 /* EthereumAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 59D114BC19FD2727C45A3F54CBF0D2C4 /* EthereumAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A6BE04456A355BFC63D2AA357A54F796 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80600472825A42BC22050F65CAC4B69 /* CMAC.swift */; }; - A6C11D5A6999507E3B7CE7A25A26755C /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C91D9C0D95A1407D72A9ECA8CF5FE82 /* OFB.swift */; }; - A6D0C39913C5D7B9245E20ACD8B3D435 /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6D15773B216D17D4F691E62FF8CA3EF /* BigUInt.swift */; }; - A8F55FBB43E21EB57F926312D6D193FA /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9BAD2F4A3F751D55DF856D0FC83C832 /* String Conversion.swift */; }; - AC8252B406FA67BD20F3436C325648EF /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = 2378E9B88E5CD07C799D5E271D8B82B8 /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ACA246ADC243516B958514961ADFA448 /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5455FAE35B59D48DACC1505D3EF8F287 /* ABI.swift */; }; - AD8C58EB45EFEDEFF50D8D311E285289 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50C16AB2F38379BA2A818AE65B1024B9 /* SecureBytes.swift */; }; - ADC3BC6EB9B16A455AFD573FE263DD2E /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A228958621D9EEC8D556B8053E56337 /* Data+Extension.swift */; }; - AE87CB774A606D36D5D323DF7B347B85 /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1F32B67BA1C0835300910DAB00B988 /* NSObject+Promise.swift */; }; - AE9F6FC5A380873A4B54271F7D01A6D7 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = D478FD26E9B06D4AF421D0A847F05CB7 /* after.m */; }; - AEC9FC92EF780D79718632B8507FCFBE /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DBFB0E7F7A154749D8E78C95795D7F /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B171FEFB94B70C21BA3D7203C2D563C6 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6F5E183E707AD82165C551C7480ABF1 /* BatchedCollection.swift */; }; - B1B9CE5F743A2D03D29B5C096EB8A7F1 /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF6D28B7D45E393BA716CDC226035DC /* afterlife.swift */; }; - B21249AD35F90B353B5483C8F8806AD1 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = F962FBE50972DFDC955EE9A1D6F26D28 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B455D240F1E5C4B64959583FC619C79C /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 14B167377B2F0A618F50B7B7C6806B20 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B566EFCF2FA69EDF66475D184BA93621 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = C2E6B3EC11027F0EEFB3213EF1B0DEE9 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B58F649D46DD71537FFEA90899931995 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F9131F785641C468536589E493F91F6 /* Error.swift */; }; - B728D1C0CA94CB8B312DB685BA5E1EBA /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F58F0D6480F143624938CC304BC9C28 /* Blowfish.swift */; }; - B80794D7F4252270531DBFA1DA07BB0D /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6371F5CFF9A16BD324415D744F33531 /* Collection+Extension.swift */; }; - B828C2369139A0DA999B3E111C012B6B /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = A238F5B6F2D22DB74709581576A9D2ED /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B8430DD99BFA0E77648CB58FA8703792 /* ABITypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B30E2451B217420C1AEEC1B80582E3F /* ABITypeParser.swift */; }; - B9231CD1C32E758150EA3F003E5B9136 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 50882954044EA934A9C57877220EE29C /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B980910D29732A6C717800457A0CB966 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 259BD2FAAD513765CB02BA975A0BA669 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA7F8FBCB34F37FCB0F7AB8A81FB6963 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFE39854E55F2A02E8D83EBD7E58254 /* Primitive Types.swift */; }; - BB18F3BF70CF374EB0A27294E2A0D363 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE05C0D2A232189FD47CCAA74FCB9E1 /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC010E7B7E43A8629C8BC3BAC8A3AA14 /* SipHash-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 857EAAD791783A2C48E951BE7AB5CF59 /* SipHash-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC32A402F5C0847534109B54424388E4 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABC685610BED914143495E9E29E6B4B /* PMKFoundation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BCC9373F6BF7E0C0CC9066E9213BDB3B /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = A85F30A26655A31C1BF18B20DB1960AB /* UIView+AnyPromise.m */; }; - BD84CDFF4634B525655ADF54807F37C1 /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = B709CE33931E0C8E75247B4E76D89D5D /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE0F81A5396398CDE432A3E6252C7BB6 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 209E7E0252865966ABF59CF9F7024196 /* Updatable.swift */; }; - BE4910F6E6A9B29CEE6F9FA77C6CC1E9 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 361FA6E8F841E7B9BE7AA982EFBC3A90 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BED9246E787164C5DCF7176145DA46ED /* Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52CB8E691CBC3E972E2F20FD42C8E5E8 /* Compression.swift */; }; - BF0B67682758CBDD673D21D35BEE7CFA /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 446017795D375E95372753EB7E99B3C2 /* Multiplication.swift */; }; - BF71667304EB972435866625431CB601 /* EthereumAddress-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B824FF3D1B5984A95C100C08666F2896 /* EthereumAddress-macOS-dummy.m */; }; - BF944F319AD3C65270183BDF7564C795 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BBD7BCB8DE7F5FD70D5A15359F58F94 /* ChaCha20.swift */; }; - C0052322694AD16624A2C8CCE5C3AA9A /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 363536B52D3D69D576EA73073652D568 /* Hashable.swift */; }; - C00B1E96C0BA8F0CDF75D7011DF6B984 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34526A3852A1A5C2F7C458D97A8A900F /* UInt16+Extension.swift */; }; - C07CB111F663AB95174FB6E036C57037 /* secp256k1_swift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 333F5852A331E94C5A92068FC4D07E60 /* secp256k1_swift-macOS-dummy.m */; }; - C0C2154C73C6CECF1D1739E05F251B3C /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 998E4267B14D6FCC02485CC22984717A /* Padding.swift */; }; - C1644D9EBBBC6A8B88BA522200B7B84F /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABC685610BED914143495E9E29E6B4B /* PMKFoundation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C173FE7BA4B060FDE435CE3472D6DB4A /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E984EF9D6554D3AEDDC5E172A0E0BD72 /* StreamDecryptor.swift */; }; - C1AC1BD71592B749FC0E026236465AA7 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F14B41EF96F500D63E7EB1BC7461785 /* SipHasher.swift */; }; - C26DB6720DEA38021DF68C24F30EE35D /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9FE46BD8AC65F3CF39F89C0D3E30A0 /* Box.swift */; }; - C2A34B9C5DC6B5BA9515632AFCB3B696 /* ABIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC89570C769D238D7D55E8628584BBE4 /* ABIExtensions.swift */; }; - C417A373D4F7AC1C8011DC1D140463D6 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 079F924129D8309B5345106A36F994D6 /* String+Extension.swift */; }; - C432DD49D64CD3832002378131B99297 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 446017795D375E95372753EB7E99B3C2 /* Multiplication.swift */; }; - C4C4026B40753EDD2E0E32B588EAE61E /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 43DE4AFA65A55712FB2E22A4D0808552 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C518223B89CB8D471C23FA0B0C36721E /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 08ED86A5F3A6098AC8193A1412BA0357 /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C5F9AC1F1BB19449C5E3D34DBDFEFC9B /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C306FE6A77B894436983FE71A345064D /* Process+Promise.swift */; }; - C67D89AD5E81467A41D34938F5595DF2 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D1367804F4BB564BD046352AA73051 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C6F73E1C3B3702F5A2FE5E4053C774EA /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC65E597AF9D5E83BB91E20DA536A2C /* Shifts.swift */; }; - C71F6E245BB235402AFAFF135E8E09D8 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656D93793AE4808C058F16FFC5A211E0 /* BlockMode.swift */; }; - C750FF70371C89C056692954A68B1473 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F58F0D6480F143624938CC304BC9C28 /* Blowfish.swift */; }; - C78B4C9CF0EB91851ED4F92F5D7BCCC1 /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF6D28B7D45E393BA716CDC226035DC /* afterlife.swift */; }; - C7914EDD8576F0557E5EEA29F0F66F41 /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 874702FA185AB07E20694BD305534623 /* NSNotificationCenter+Promise.swift */; }; - C7C90FA95B6DAFF96CE15A39386DEC3D /* SipHash-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 804FEC4DEDB4A46FEFC6D24D7E65C2E5 /* SipHash-macOS-dummy.m */; }; - C8459F4FF05B3B25C0EDA8DE104CA65B /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F1543F15D7A392EF250460DC3BAFB1BB /* scratch_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8A2F83F4B776A519DEE9F296FFEEBD4 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C74074A3D0203259F85DC852235EF7C /* PCBC.swift */; }; - C8D085C5206D0400C0697BFA3195EA72 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E07D7C1A1D0C523F1749CBCBCA85B7 /* CompactMap.swift */; }; - C907909BD544FC7E44DC2599912087BA /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C74074A3D0203259F85DC852235EF7C /* PCBC.swift */; }; - C91817F3F22292D445C4AFAAABA9DFD8 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 127203DB9162380E9EA1CCD66C9F7BB3 /* Resolver.swift */; }; - C948D4D6F78CB5315935F8D7A0A83CF0 /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B4E8BF7FC021488E6C32F493D1FCDC7 /* BlockModeOptions.swift */; }; - C9AEC37A2A3DEB0D918F6E8F2DC06332 /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 075385814DC186A7C64CAC0A16956314 /* CipherModeWorker.swift */; }; - CA105E74AB52BD015F1B00044E4F2619 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B4F9659A0D674401F418C8670C9E64D /* PromiseKit-dummy.m */; }; - CB3472B2D0CCCD39262DBA63EC9B4164 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A93D2B333FE5DA099A1F18627C6403E7 /* ChaCha20+Foundation.swift */; }; - CC8072E7B36037869373EAE466E34A33 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A93D2B333FE5DA099A1F18627C6403E7 /* ChaCha20+Foundation.swift */; }; - CC9046D345927C1D4737AF65E3A4C8F0 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C91D9C0D95A1407D72A9ECA8CF5FE82 /* OFB.swift */; }; - CD4DD6BFA55FD50AECF9272789484510 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6926D4618AA462E2F5B99E363041692 /* Bit.swift */; }; - CDC34A7795631B78B36CB8F03F0880FD /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0937B20C1C28BD4A95220D8278C0BAB /* Int+Extension.swift */; }; - CF1B3D883A771890014357974079E79F /* ABIEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 350BF04878FA44170F1BBEE59F0D7A24 /* ABIEncoding.swift */; }; - CF2A494719432135F30077A9668F76E5 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 686E602AE5082CBF2C101ECED65BE99C /* AnyPromise.swift */; }; - CFB4CA7AD695DBE17EEB5F25AEE6422D /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F1816031AF1B0046AEFD2145335206 /* hang.swift */; }; - D0281D0F882239EB5CE8985941980B87 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4707EC7A4D80C89519E38548D90ED30 /* Rabbit.swift */; }; - D13DC88A680109BBA97BA1737AD5A519 /* SSLClientCertificate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D0D59FEBAFE71FEF0F232F155DD9036 /* SSLClientCertificate.swift */; }; - D1533C2141CC7DF53CC9525F97A0BC8E /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5343C2355FC862E74DB99D600421545 /* CFB.swift */; }; - D1E4C76F4802483C687862BF57505D43 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C5DBA3C55976F3557DCEB82573D9BB6 /* CCM.swift */; }; - D259B9ED1508919F7376FD7C91B3A7CA /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7939B57B76F4EC762DDB703A9633C24 /* Data Conversion.swift */; }; - D2879925DB5DED6BC89F5D1B70AEE43A /* CryptoSwift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E42B40E0BF34EFF848050AA681271DA /* CryptoSwift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2BDF82C0FD6D55EC7B617C3C312C8C0 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57829B17883880D67DD44DBAC7E201B9 /* Promise.swift */; }; - D2C25C5A803997A40C4EBD4E39B3C173 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6A5F98902F7066D66657126D0CECF25 /* RLP.swift */; }; - D36BEEFDCF9D62515D4013642B2F06C9 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ECD101929431D17696D4E479E2191F2 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D3EE9B2E801716B1289CC61093A53A74 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1326A835DF33C20CE38ABD87049E2E1 /* Catchable.swift */; }; - D42B65B8CF94D83CB135CCEDB2986D76 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 977EB9C15469AD0FAC5C4C47DFCA1E44 /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D5B9081856F86BB27F099D58204FC8F3 /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA706BD339992057A08F7E53A5147BF8 /* CustomStringConvertible.swift */; }; - D6427ACF0E9A1A43D35C0E64E0C499EC /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 075385814DC186A7C64CAC0A16956314 /* CipherModeWorker.swift */; }; - D715FB15570B64AFD38F100C07B6B3C6 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 834A6EFE39EE6A9F2DC04AFA862FA91A /* AES.swift */; }; - D73CF65BD924FB93C168F191EFBCFA99 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8537B1DE0AF0B2EAEBB180E4592606 /* Utils.swift */; }; - D86529EF30A9336CA2FE2661178F99F6 /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = B69BDAA9D2AFAF904C0802EED1918D83 /* fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D889117CC748F0BE8A7219562B4206A2 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F312033A8834428A85A4B806F7045CC /* Bitwise Ops.swift */; }; - D963E527D2BEFA41065D6C5A7C182679 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 981C052F09397EE9506712DC4B7F2C14 /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DA77F37A28F170FAB624FD4C9597ACE5 /* CryptoSwift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 57CC24E601A1A008219ED9568D1960D4 /* CryptoSwift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB77DEACF299419A6A05E14F47C2FFE9 /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA706BD339992057A08F7E53A5147BF8 /* CustomStringConvertible.swift */; }; - DCA9C12CD237B588997C844D7596306D /* Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52CB8E691CBC3E972E2F20FD42C8E5E8 /* Compression.swift */; }; - DCB170C0CA0D0E9979EA07BF7A17D33D /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D837D11202B852A34D063D539CC1E3FE /* Extensions.swift */; }; - DCD7376630E6A626B6F2846AE4988472 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D752DC0BF982B73696FF172811AC786B /* BlockEncryptor.swift */; }; - DE6460A21AC62DC6D7D8EF8A01A5D9F5 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 90BAEC86C0709CB2166B55DE9A70C099 /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF35715AB3E005727EA339CE57FD6621 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657F66F26C28DFF82FF46807563B4E9C /* Floating Point Conversion.swift */; }; - E0C5DD62FCC9C2A41533A44DF8BC3539 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 5391BD602497E51701C1533DE7DFB656 /* NSTask+AnyPromise.m */; }; - E10DFED84D52BE20CBD188F6D871EC55 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 209E7E0252865966ABF59CF9F7024196 /* Updatable.swift */; }; - E116484DB9CBB9442CB00BD7C40677E1 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 096D76C734D0C860C06F45FC68A87663 /* AEADChaCha20Poly1305.swift */; }; - E2066057CCDBB9941A2E211F94D7F3E8 /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BA80B342B58A1F7D98B7CF0298D7AC /* Prime Test.swift */; }; - E2FB20ADDB91B166FA66CD414044AC8B /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 558814016D6A7FC3319ADE8CEB46E03D /* BlockDecryptor.swift */; }; - E41654C5FB9DA97E186A7F92A98AF1FB /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B436F98D1DB7929BA58C4C7D8CB1A9E /* Utils+Foundation.swift */; }; - E4EE18C02BC4B7C3F8F519C369242C0B /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82C9C2F57398B910E4A0089E710BBAD4 /* Subtraction.swift */; }; - E4F8A75CCEE1B138894B11ABE8156454 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A5F1CE6B4F3A924CE2C7B538CE87C90 /* PKCS5.swift */; }; - E60DF3645176BE0F96A2AD24519F9FED /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61EE5E7CEB295F84F7776DC7334E877 /* Checksum.swift */; }; - E6D119B02C621B2BD7C5B196197048D0 /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A2A3173F949AEAEC1663790613FC8A9 /* Square Root.swift */; }; - E8780434345972A9AC8E4FAF8EEE26DA /* SSLSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 404CEB85861C5E34014047653BFDBBCD /* SSLSecurity.swift */; }; - E8917FF6C51A4CE3C629E5157B384E91 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A48A732CCD02C41B96B7A7D8839431 /* RandomUInt64.swift */; }; - E8BF177E612B04CFEABEF6D7A50B1F31 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E64CA6EFE09783E2A721986274EE9ECE /* StreamEncryptor.swift */; }; - E98EF9413EC55B94F8302E4A56A67F4A /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B57AA627BE7FC2E77F5EE8C075A9D8 /* CBCMAC.swift */; }; - E9C0674C53DC69A15E24F9F3687A76EB /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = B69BDAA9D2AFAF904C0802EED1918D83 /* fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EAB8456A580E9592A76DEBED4A215719 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A0E4286FA50E0C4B204B68B307246B1F /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EBF3075934CA04CAF65C03A37FE3053F /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80600472825A42BC22050F65CAC4B69 /* CMAC.swift */; }; - EC847E84AB56C7495E6C5757626DD9B2 /* ABIDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ACA40ED69BA394DFDCD5C96574C2692 /* ABIDecoding.swift */; }; - ED20A073CA36541637AB25821B687255 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = B17DC3F7D16756107DB8B2C742718669 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED4925E215527011C217C6CA534E58D7 /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 56CD10FF531B107D40A576BBB22E0276 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED947B5A28612D07C7856DC07E4C176C /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = A657B8DA6662B1DC092AD8211ADC6E9A /* SHA1.swift */; }; - EDC8743802E001F15321CA581B7D011F /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2C80E731F6754B9AEF54D249BFCC6C4 /* Poly1305.swift */; }; - EE06CB9F5FE216F4A46A8BE1686ECA74 /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E9A1BBB6B856729DAE095907B7CC8A5 /* Random.swift */; }; - EE66AB3F1775E876525AC95F81AFF786 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DBFB0E7F7A154749D8E78C95795D7F /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EE7F0D9078BF98724F7CF01C12863445 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 5391BD602497E51701C1533DE7DFB656 /* NSTask+AnyPromise.m */; }; - EED2C4BE44EEBBA8B27717B3E4B75987 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A228958621D9EEC8D556B8053E56337 /* Data+Extension.swift */; }; - F06C8B8F8D37D3D1C6385058F2DC78E0 /* SipHash-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 06BEC764D1E8CAABF0542415203CBA68 /* SipHash-iOS-dummy.m */; }; - F123ACE93DB4C3AEFD66D668B46BA596 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D66DCE144E613BF899AF2CC0C89F08E /* dispatch_promise.m */; }; - F1711B9ED3E1786FD75051F3D6A26002 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E17833B43F970EABB91E7CAFCCC1D9F1 /* Authenticator.swift */; }; - F192B9AA41CE18FAABE09EBE04223176 /* ABIElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9523141DD1B656335F02284D93ED090 /* ABIElements.swift */; }; - F1A9E5F1FEE7FD9EEA9E895D9F3EE587 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349FEDC79E659427A3A7E4B09E30D9B4 /* Configuration.swift */; }; - F3117ECE93674E9C897BD207733C2E88 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CB0DEB3D6F4BB4A5D7EB57F2C14F338 /* NoPadding.swift */; }; - F34889659961411453A64B2DDDE8AB01 /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F90F921EB768BEADEB4297FCFF9E57 /* UInt128.swift */; }; - F405D47227694325C4BBD14C00BEEDB4 /* secp256k1_swift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D803BF15A3E1F518698E5C2D8C4EB795 /* secp256k1_swift-iOS-dummy.m */; }; - F410FA5E6E9A5837387A74801959D8F6 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = 05596F76EAC2A61FD7625823DC488551 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F416985052D8D64D5A49E2D4E968DB30 /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61EE5E7CEB295F84F7776DC7334E877 /* Checksum.swift */; }; - F41C9ED1404312A1535B38257A98700F /* BigInt-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AA5B022BA90C1E7F2A1109BB9952114C /* BigInt-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F44827E051F015CF4A696D0BD91EB7C3 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6926D4618AA462E2F5B99E363041692 /* Bit.swift */; }; - F4837C8C3C82F4E3A099C7DB3BAD6150 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 08ED86A5F3A6098AC8193A1412BA0357 /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F5B5D5150A66B947B9D0635B2D5E8908 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E07D7C1A1D0C523F1749CBCBCA85B7 /* CompactMap.swift */; }; - F6BED735A14EA39D6CACA08AAFE2A2D6 /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9BAD2F4A3F751D55DF856D0FC83C832 /* String Conversion.swift */; }; - F806DE741C3D193E72655C7A7F204F60 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = F73C36BE59D8447897AC55092730A868 /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F8136D62CB83023841C4CFA76A31B4AE /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3739CAE1052D6D89A6AE9793698C7B47 /* AEAD.swift */; }; - F8F1F525D9D4FBAEA0E4E190C1E2A795 /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C57AA209A6E63301C96AC826A79072C /* secp256k1.swift */; }; - FA421A2250B47AD522F12E72321EC96D /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = C856A3750DB25449B35FB4F2DA792010 /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB9173AB116AC0E3A81C6D45598D0664 /* ABIEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 350BF04878FA44170F1BBEE59F0D7A24 /* ABIEncoding.swift */; }; - FBD07425641D23B6229B7BD8272CEF5B /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B4E8BF7FC021488E6C32F493D1FCDC7 /* BlockModeOptions.swift */; }; - FC1C6F6D2B8F14E51FABF33D5D4A4CBA /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0918CB6074FD9988D8B8AF6E9933FAAF /* when.swift */; }; - FC7E1B49FBCCC67212409B2770452886 /* PromiseKit.root-CorePromise-Foundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BAF00A025FF916C83BCF0E5853AABAFE /* PromiseKit.root-CorePromise-Foundation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCED3D2B26FEC1C6ACE39F9874ACCBE1 /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08CA3ADA337C349B5C3CD45ABD7E5736 /* SipHashable.swift */; }; - FD35B9677AD23EEE86E243875D90BA36 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B696D5331F11BE5F3C3E5F68D2F3B11 /* when.m */; }; - FDAD17E8F7FB04B57D5E139DBF693924 /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E01CFFDCEDDDCABD59A31B7EB69E9DE /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FE10E047A66CE9F5414FCE13F86AB49A /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E573622FDFDB2E36CBBAEF6D136A2F2 /* race.m */; }; - FE68B248A41B39B45643D96F31EEE19C /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07B8BEBE25678BD1D1AF1A9FFC737880 /* Words and Bits.swift */; }; - FED8750F8DB9AA28073C5B3EAB83D84C /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA3CA96A1C96C617C6CDC66E3C5CFD15 /* UInt8+Extension.swift */; }; + 6481313C8C3C1D8D90B08F31CCA22D6C /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = D394066B2E46CE1FEECF341A753FFA6D /* Square Root.swift */; }; + 64CE2C75FD9CA44225080EAA73AC1438 /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32423D6FC8955335CA0A685C6202EBD1 /* Subtraction.swift */; }; + 64F6BE43BAE3FB36CD067BAEB7892028 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ACCFC26305C31710462E830012C47F9 /* race.swift */; }; + 6561010C453130D52D5A2578876746FB /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDBB39B4192E81DAA1EA5CA82A584A7 /* when.m */; }; + 657E91E8B0EAA72213D558B59C01E78E /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F236CB40EB7129EFFEED9F5772CAB27 /* AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65F50BF6A7D0D18C34B239737FCCA476 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99A28CD76DE93484A23853D178955072 /* PKCS5.swift */; }; + 66609A4C15CDF54B0AFD5F23AA3CE26F /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B879405C58979A9A77A22F1FD72FE04 /* Poly1305.swift */; }; + 673906098B8693FC5656B1D50543E4AA /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAB11100CBF2C34B0C25F868B02D3E26 /* Cryptors.swift */; }; + 6791B3264078A6A14E0D500C9C7CF550 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47314191D456625014BBB09321D876F /* CBC.swift */; }; + 68F5D0F8A21B099443F011146DFE1342 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4027416A1B51568CE8FA17C3316395F8 /* HMAC.swift */; }; + 6BF85113793B3B550B80C836C5331B53 /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74CE256ECB743201BB4E5F5025370CF0 /* CustomStringConvertible.swift */; }; + 6C51D32EA7F20A2F263A09C927C7D9B4 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = EF8988CD6D4E89092524AB136974B383 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C6C0EBBC4C6CC78B82D0EA288076D54 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87B32EE8714C2211CAE250E62DA1B830 /* SHA1.swift */; }; + 6C6C69C52B9B5BF2B3EA1435E7368EAC /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAE87BED1CF20813A9CB30CB5ADE8AF /* Error.swift */; }; + 6CC7B5A5361513F8AC4126FC69E3ADA3 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83ED950A4869DED9E450F9688529398B /* GCM.swift */; }; + 6CFAAA2C8EF6B62424909332721954C6 /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 1717A75622645509FF4B58F73811C673 /* PMKUIKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D9DFC0F70F52294B8874F06DEAC6951 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 05F3218F9C7AEB2A3CD6B49C28F61D42 /* secp256k1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6DF8081B070F090BB4ED056EA6140073 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F6D2648E7E5BC901A6F3A6C6EE27273 /* CTR.swift */; }; + 6E45AA7244786B9D7136EB5B030A0128 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D2754B07E8E3D474CE75E531696D33 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6FA13E9363102766D5A3B0112B6E16D7 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69D87B68E67A99002EEC5252514B0D57 /* Integer Conversion.swift */; }; + 702A917E750F6365E95930FCDA2E2354 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 877AAAF7B5AB6E1D5F6E9AFE46EECAE1 /* secp256k1.c */; }; + 7128821B4B4A04B8F0F34481BB5307CA /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F9E33D8F1F7CAB653771A85C2BAD89F /* afterlife.swift */; }; + 717E7B0EBA55C0DEE1FDDFC0AD26FEF6 /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = B40E698A102CB11557BE911B8A3C3C35 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7185D470E99C3DDF2F5C151A2B67CD53 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AAB49A993F30F4CE37221A805E2FD3 /* PBKDF1.swift */; }; + 71ED40E9913C5AA92EE372845B7EEB1F /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74CE256ECB743201BB4E5F5025370CF0 /* CustomStringConvertible.swift */; }; + 71FCE9FF2C656E2A62B0DEA5986F945C /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF66742E976C83F1C40D0CF4A0D0EC77 /* Utils+Foundation.swift */; }; + 72E81995594BF3655B96C0F8C67789B1 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE1EFB69CC3055F1503CF6B27E7B0BE9 /* SHA3.swift */; }; + 72EE5143110B4D378DD3F968F6773519 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = BB4ECF518982380D91EAF6F6A8E3422E /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 731F6AF4B9003474A7F483ACA792CEF9 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D12388DAD3F6EC1CF276AF7CF4CA70C /* AnyPromise.m */; }; + 733BD417006FC6A9D38E5A937E5DB731 /* secp256k1_swift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E59A72B7BDF7D4F8AB5E3A346DA79DE7 /* secp256k1_swift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 740F3FF9F884689265FD4C8DE267351E /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C2C0E04798EBB71E7123D512C62369B /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 742327DDB45AA4864ED658BB64C05646 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F618884500C0A49CA9D9B5658843961F /* Array+Foundation.swift */; }; + 742C71D650C2F550FC143075C1AA2BD3 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = AF9DC97246696CC9791EA7219ED77609 /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 74FB34842EAE7160206E0C1A7EF29E67 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11FD81F504F70DD7F7404FAB1FFA09BE /* Rabbit.swift */; }; + 74FFD588547E32458BBF2F13DF2FDA91 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C257E1502CFA7F2A46BADBE76577FDD /* WebSocket.swift */; }; + 757B699F5C29D87DA726891DE6CBD291 /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E1EB4BAE587092263D57BA8822AF90D /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 75DF6653EA1B1382A2E577E28DD50313 /* PromiseKit.root-CorePromise-Foundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 09D758064C979FD9CC7110D72E292C98 /* PromiseKit.root-CorePromise-Foundation-dummy.m */; }; + 761ADAE7763EA204F95443E634971F84 /* UIViewPropertyAnimator+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4161E3E976BEFE72E8FF906BBB115AFB /* UIViewPropertyAnimator+Promise.swift */; }; + 766D21DEDBC977F2D33E2E7338509A84 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 346901EFC436E45BAB36F063E0AE048F /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 768D4F24932CF64519F1BB4262FDD184 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = EF8988CD6D4E89092524AB136974B383 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76904DC795DC341EB6F40DED0690D06C /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931BB4820501F199F978D3C2ADD352A0 /* Digest.swift */; }; + 76A278B49C734EA2F4FC9B7BB525EE05 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 170A63993058B055F852428188D98351 /* GCD.swift */; }; + 779D650CE2047B43A0A5355E49A23EA7 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 887F81E9A3628F15BCDC3711D6179AC6 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77D24906952DE58B5F8CB6ED89129C36 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBA95F1E7ACF0161CBC476907408FDEB /* RandomBytesSequence.swift */; }; + 77F455101FC0B383A79CB4B45EF9FA93 /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1839C3A694AAC21963034A492718BA /* BigInt.swift */; }; + 78A4E087E29A5CF8CDB9BDB1479685DA /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 73055400CFDDC0D498AED40ED3C4F66E /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 79C465A5657F6D9F45DE6735F574BA2C /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0C77DD993F7E165460EC0DCE198706F /* when.swift */; }; + 79C57833CA884F11C921D5BB68611C53 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 115F2E0B1F15AFB9D1B7F053BCF5818A /* Resolver.swift */; }; + 79E9149FA3C53278775B3976E9A4FA0E /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = BEBF981EA3E9083454CEC5A42DEFA926 /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 79F2D81A1E48B49BBD70266491947231 /* Starscream-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CE0C8D2AC17DB2D5D8738946396BEDC0 /* Starscream-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 79FF366B10CB8D8565BB0AA73DBEBF1B /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ACCFC26305C31710462E830012C47F9 /* race.swift */; }; + 7AD014CF13E6DF9AC5096CD658320505 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC8CB0533AA3C4EE8640E3020CD5656A /* Catchable.swift */; }; + 7C550DBF3DFA930FD38CBADC9B6DDB91 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4027416A1B51568CE8FA17C3316395F8 /* HMAC.swift */; }; + 7DACF9DE9B2216FCCB5B5D19819217AA /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BA68E7B5C9851779BB8B30EC4075868 /* Cryptor.swift */; }; + 7DBDF97C7D637A6814F02CA737187190 /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78EBDC3D9006AB76A07C35035C8FE073 /* StreamDecryptor.swift */; }; + 7E4DC4EBB32208EA4CF1711383E936C0 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = AC63A51025DC620E2A53A12221675AD8 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 803793696F606B109B851F294D7DB058 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAFC664C928E8E144EE2E7881435515 /* StreamEncryptor.swift */; }; + 804A5112549BB8766B721496A6B20265 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E52615162EAD94FE296E5B7F2C50D3F /* ChaCha20.swift */; }; + 806FDA3F16840357F113CA1809044EEC /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47314191D456625014BBB09321D876F /* CBC.swift */; }; + 823C2D1AF3CF89792D2C912F95FC89F7 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D66A9F054A063BD046DA3EB26245B11E /* HMAC+Foundation.swift */; }; + 83711B04683543142449DD54C60D94A8 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F618884500C0A49CA9D9B5658843961F /* Array+Foundation.swift */; }; + 83A42442B2CF4914DC893A94FB17C233 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F2ECBD47C16E84FD7937670288FEC49 /* DigestType.swift */; }; + 83E4CA60A2D419AD90C1F20B321ADBC3 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3F41C2D3B6B20B5DF73C37340343CF4 /* AES.swift */; }; + 8422C3949EFCED2936409458762D98DF /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 73055400CFDDC0D498AED40ED3C4F66E /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 84973993632AFF2ACFA1C9E148BA552D /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A97E581A98D7DE9A3321EDF1EADB28C /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 84F7AB5250503616DCD905FEBCD2039C /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F6D2648E7E5BC901A6F3A6C6EE27273 /* CTR.swift */; }; + 861F24FA8DD87F6C053A7E0AE8E33C89 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A0777D7682D89DD4E77BA406EA9F39 /* SecureBytes.swift */; }; + 891A3C83939B073416A453E49A1131E1 /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = CC5240B4781ACBC6F0CC4CC1D226859E /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8997169700CAE75FEACD7D24AF3091B4 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 890C8F02CF4AA887B1BDDEBB58153093 /* Primitive Types.swift */; }; + 89A0553A0D489EFF562E41B962C7509D /* Starscream-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D3CB40708791C1ED4A62EEA676480DC /* Starscream-macOS-dummy.m */; }; + 89EF538163BEF683155FD403E5B0AA9E /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931BB4820501F199F978D3C2ADD352A0 /* Digest.swift */; }; + 8A9529EBEDF0322240B3B3BA7298D381 /* LogEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E6C73212DEA8321EE3C88B94BCB9D0 /* LogEvent.swift */; }; + 8BD7F507986BE7AD40FB7223BE29D28D /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 113E0416CF81608D72B59B8F2541027A /* Random.swift */; }; + 8CB8F04DF92349F2D48F7DB33C767F4D /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B783E77D6EB5976452B23E5884B464 /* Guarantee.swift */; }; + 8D6BCAD8E6A1570D2576DEE25A2CED14 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BBF5F4FE850C1A6D626DBE3867A76EF /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8DA53E0490329F9745892A0550FB64DA /* LogEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E6C73212DEA8321EE3C88B94BCB9D0 /* LogEvent.swift */; }; + 8DFD042606A7DBAE43153D054DDBD6CD /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 916B26D7C0B39968C903C493B32AF440 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E18FCFD759E7BAEB3360AF9E1498C76 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 81BFE7C860EC43A3D0A1FCD9166CEB49 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E8A24DA7D134D7AB7ACE6E1E8CDABBC /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6495EB11BB0CBD5F66F7C944D63BAD51 /* Cipher.swift */; }; + 8F6C1A66F6641449D93ECAD404D02B76 /* secp256k1_swift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 078C6E55B0F3F832129C4238FE075CB8 /* secp256k1_swift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8FF058D4B8878CC3A0C319D324301698 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3279A426C1F0101503616FAE68E83993 /* Box.swift */; }; + 90B38CB79D4C0A55C0695B06F92609A5 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAB11100CBF2C34B0C25F868B02D3E26 /* Cryptors.swift */; }; + 90E744BEA37B1A3FC3338DC09038F47B /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = D8486D8526A78CFE2EF4EC906F4A0A18 /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91B44CF38F03AF81BE21A62720419F4D /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C20BF43F08DCC1F7C25483151BA5C94 /* fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 922351BE179C58257E39FBE0262F55D2 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC035554AD40C3F7142AEF0048BEB70E /* Deprecations.swift */; }; + 932BB1F3FACA78A4C95FE7DC85F89320 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DA2BA56E31B1F804C357D0FCA532B41 /* scratch.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 933BE7DE15AFF34C0DF8229A13D908E2 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F2DF7D68EEC4AF5198919C8128111FC /* PBKDF2.swift */; }; + 934D50ACF6E4801B462957C1833EAE58 /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCACB4DE2A8E1A481DE0EDC3DD135956 /* Strideable.swift */; }; + 93A04D37DB1964D7A70D6AD5FFB08A3A /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CAC61EA7401D62DCDB9D19F07E7F962 /* Blowfish+Foundation.swift */; }; + 9512E8F6573EA5F88AAB54563EDAF608 /* CryptoSwift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52705E4A76D1521111C9EE6397FCA0 /* CryptoSwift-iOS-dummy.m */; }; + 9598EE4AAE18E6340B0672A9EF2535A5 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 642B2710251F761DDF9C3680D949C77E /* Exponentiation.swift */; }; + 95C3EF6EEC764F39D535C17B324CC16B /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF45EF3C4580F6BD4DA8649207ADB054 /* AES.Cryptors.swift */; }; + 9603B30DCB477CEC6627FFBD9E8A57A5 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = B248E0EA0BDC1DBC771D06F08042E3B6 /* Promise.swift */; }; + 96E0F67C718ADB7EFB9920BDF70AE2DB /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 916B26D7C0B39968C903C493B32AF440 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97EA20B7233B4341830827061D293E4B /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 13909D9749BDDAF53BF6F06729ED8378 /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 982565212122020ECAD005CA91F4C71C /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DF4055EC83B4434B270E053E674E85 /* Thenable.swift */; }; + 9894FF579A3BFBB26D353D4D09FCBD7D /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = C1005427FDE289DE86E4FC1FE58E66E7 /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9904BCD5B1EACD6FE11DCAC74F0B0B73 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 197EB21FF7C7D3C0D7BDC68E5F1F8E76 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 99E0025178762272D29CA5D94A5D1358 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10B225B29D9AAC8E5736C575E8F41AB1 /* Collection+Extension.swift */; }; + 9A4F8BB1AA0111FB76166465357EABF5 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CAC61EA7401D62DCDB9D19F07E7F962 /* Blowfish+Foundation.swift */; }; + 9AD3981A585B770D52BD9429EB7AE8BA /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBA95F1E7ACF0161CBC476907408FDEB /* RandomBytesSequence.swift */; }; + 9BD47F65E8D46F5D043E1064CDBC2323 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DA2BA56E31B1F804C357D0FCA532B41 /* scratch.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9CAF369F9C9E863579A150720AD8FF46 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB206432F61D9036031DDB513864739 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D102E71957D46C0B7235115A0E05CDB /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B783E77D6EB5976452B23E5884B464 /* Guarantee.swift */; }; + 9D21860789F5A8A18697DF5C401DD1BE /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D82D6E399587DE6ABA2CFDB66E0E7F8 /* NSObject+Promise.swift */; }; + 9FC4CF3929D0449FEE9C089C9D34AC8F /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = DA4B10A7801FFA5184E69E581DD4BDD2 /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9FD000043983E879C9D8327366CA55DF /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E1EB4BAE587092263D57BA8822AF90D /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A01C0DB6711A08ECFD6C8F6406BEF557 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1848530B067E254338210EC8E93984FE /* Bitwise Ops.swift */; }; + A050BEA711438CC85129734996EE1D87 /* BigInt-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 85E9F4CA2BAEA9F2E443DE34A3848896 /* BigInt-macOS-dummy.m */; }; + A246E373D0B908626F26E7723E0620A6 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DF4055EC83B4434B270E053E674E85 /* Thenable.swift */; }; + A2B2BAD4D1FA068B43BE452509AFDE29 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B6BD85AD1F3C37FDBC8610C2BBA334 /* String+FoundationExtension.swift */; }; + A33C081D80B8A159E7EEBE439CB1164B /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B75520BE742B11ACE9049044041CEBF /* Division.swift */; }; + A5A9B0B395976E2315B6F47C6F624058 /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F44FEB52A96A2387B75A25F9D9F2E4 /* Scrypt.swift */; }; + A63D3156C4ECF681AFC0A9063FC6857D /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E7A46513E450FED264F98BA912BB81B /* Comparable.swift */; }; + A6BE04456A355BFC63D2AA357A54F796 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91E499D98A7C49A97B25A5A3DFBD1021 /* CMAC.swift */; }; + A6C11D5A6999507E3B7CE7A25A26755C /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBCDE0F2D7072617433CA92E2139172F /* OFB.swift */; }; + A6D0C39913C5D7B9245E20ACD8B3D435 /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFC1C755F5C2F88999DCFF42701D573A /* BigUInt.swift */; }; + A8F55FBB43E21EB57F926312D6D193FA /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73128202582D9212ED3EEF1632B8BA1B /* String Conversion.swift */; }; + AB284EA2F9102F9624BFB1724735E71B /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 17F7E8E519DBACA1290E47FB76AF1673 /* NSURLSession+AnyPromise.m */; }; + AC2B039EA1755C11BC9E2F9B44DEF013 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = F79CB0EB6597A6EDC54750BA2A60677A /* after.swift */; }; + AC8252B406FA67BD20F3436C325648EF /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = 8757B059CC71702C833348E0C2B66AED /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ACF8BB802D16D86CE8986340B65881AD /* PromiseKit.root-CorePromise-Foundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FDCAFACF0DC261812D322C21C2BAB003 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD8C58EB45EFEDEFF50D8D311E285289 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A0777D7682D89DD4E77BA406EA9F39 /* SecureBytes.swift */; }; + ADC3BC6EB9B16A455AFD573FE263DD2E /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 467E1C21715DF708BF7D8DF6DA02814E /* Data+Extension.swift */; }; + AEC9FC92EF780D79718632B8507FCFBE /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 45F47B1B378E471F86B24A238EE95C40 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B080F6207B434DEA239861DC62D46FF9 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 346901EFC436E45BAB36F063E0AE048F /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B171FEFB94B70C21BA3D7203C2D563C6 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = A571169D0C0DC6E60C6C1B152B85B6B7 /* BatchedCollection.swift */; }; + B1BEF29FE9B4CEED40EAC1865720E105 /* Pods-web3swift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E9773490FE3E392A59E69B644513832 /* Pods-web3swift-iOS-dummy.m */; }; + B21249AD35F90B353B5483C8F8806AD1 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = AC63A51025DC620E2A53A12221675AD8 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B455D240F1E5C4B64959583FC619C79C /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 81BFE7C860EC43A3D0A1FCD9166CEB49 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B566EFCF2FA69EDF66475D184BA93621 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 887F81E9A3628F15BCDC3711D6179AC6 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B728D1C0CA94CB8B312DB685BA5E1EBA /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A3828E6D6F986A38840C154D9F00DDF /* Blowfish.swift */; }; + B80794D7F4252270531DBFA1DA07BB0D /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10B225B29D9AAC8E5736C575E8F41AB1 /* Collection+Extension.swift */; }; + B828C2369139A0DA999B3E111C012B6B /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F38BA9962689772EDA0506F2A3254E4 /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B9231CD1C32E758150EA3F003E5B9136 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C3402B3B1196A6A499C758A336D2A6 /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B980910D29732A6C717800457A0CB966 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB206432F61D9036031DDB513864739 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA7F8FBCB34F37FCB0F7AB8A81FB6963 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 890C8F02CF4AA887B1BDDEBB58153093 /* Primitive Types.swift */; }; + BB167AC671BEA02181B4BA97D487DBF1 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC035554AD40C3F7142AEF0048BEB70E /* Deprecations.swift */; }; + BB18F3BF70CF374EB0A27294E2A0D363 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = BB4ECF518982380D91EAF6F6A8E3422E /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BC010E7B7E43A8629C8BC3BAC8A3AA14 /* SipHash-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E322677C269EEA7B635AFD5D4206C80 /* SipHash-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BC4C7EE9D0694A3A0F98C92EF3197633 /* Pods-web3swift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BB6E1B3EFEB698FADF96BBF004079EB0 /* Pods-web3swift-macOS-dummy.m */; }; + BE0F81A5396398CDE432A3E6252C7BB6 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 630BA31F3A958609E3A13E56100BA045 /* Updatable.swift */; }; + BE4910F6E6A9B29CEE6F9FA77C6CC1E9 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = EAA23D84D0877D4153AFEBFB3FB8D870 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BED9246E787164C5DCF7176145DA46ED /* Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C67AE49421A3140D2FF135EF89ED5C /* Compression.swift */; }; + BF0B67682758CBDD673D21D35BEE7CFA /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2561776D348F1427469EB75D1A091837 /* Multiplication.swift */; }; + BF944F319AD3C65270183BDF7564C795 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E52615162EAD94FE296E5B7F2C50D3F /* ChaCha20.swift */; }; + C0052322694AD16624A2C8CCE5C3AA9A /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA67FBCC3656509F23DC76392A853371 /* Hashable.swift */; }; + C00B1E96C0BA8F0CDF75D7011DF6B984 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7696235BDA83DCE78CA15B9A3E55A1A1 /* UInt16+Extension.swift */; }; + C00F3BA3A1EAA206A9163135DC003F73 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A47EEF6074E91C89042CC4CF9FE790 /* Process+Promise.swift */; }; + C07CB111F663AB95174FB6E036C57037 /* secp256k1_swift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E15EE0FD008952509458F9CB045FDFD /* secp256k1_swift-macOS-dummy.m */; }; + C0C2154C73C6CECF1D1739E05F251B3C /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A765C09E2790502B46527F61B90C054 /* Padding.swift */; }; + C173FE7BA4B060FDE435CE3472D6DB4A /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78EBDC3D9006AB76A07C35035C8FE073 /* StreamDecryptor.swift */; }; + C1AC1BD71592B749FC0E026236465AA7 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C23B3D828DED4F74CD73C1DAC483E86C /* SipHasher.swift */; }; + C26DF13E91E61B8E44BF3CABA6600A7B /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = A73EA60796E2773612856EFBB6FA1C1D /* race.m */; }; + C417A373D4F7AC1C8011DC1D140463D6 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E831BD47ABF5DC7F071EE5F38159A36F /* String+Extension.swift */; }; + C432DD49D64CD3832002378131B99297 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2561776D348F1427469EB75D1A091837 /* Multiplication.swift */; }; + C4C4026B40753EDD2E0E32B588EAE61E /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 197EB21FF7C7D3C0D7BDC68E5F1F8E76 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C518223B89CB8D471C23FA0B0C36721E /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F95F54AA521C53B06A1B5C47F0CAFEC /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C67D89AD5E81467A41D34938F5595DF2 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CD1FF879BA6BC3417C799878DE6F79 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C6F73E1C3B3702F5A2FE5E4053C774EA /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 072D93E76657AD12862AB0BBB44C5648 /* Shifts.swift */; }; + C71F6E245BB235402AFAFF135E8E09D8 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D69632F535FD98C95190038FC7C87A9 /* BlockMode.swift */; }; + C750FF70371C89C056692954A68B1473 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A3828E6D6F986A38840C154D9F00DDF /* Blowfish.swift */; }; + C7C90FA95B6DAFF96CE15A39386DEC3D /* SipHash-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 86BE57B8F60161BC3E7710811A32B037 /* SipHash-macOS-dummy.m */; }; + C7FE62180C9EE782C45023AAA6380AC4 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F0DD77BBE1D1D0B60E77FC98FE58A8 /* AnyPromise.swift */; }; + C8459F4FF05B3B25C0EDA8DE104CA65B /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BE83D3F4A88261D1B818A5FEC1D80E2D /* scratch_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8A2F83F4B776A519DEE9F296FFEEBD4 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92204375C968330E8EFF8AB65E0F7925 /* PCBC.swift */; }; + C8D085C5206D0400C0697BFA3195EA72 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = A88D046EB24F71921D96094E3C23FFA5 /* CompactMap.swift */; }; + C907909BD544FC7E44DC2599912087BA /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92204375C968330E8EFF8AB65E0F7925 /* PCBC.swift */; }; + C948D4D6F78CB5315935F8D7A0A83CF0 /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377E1C31250784A37E9224962BCC5FD8 /* BlockModeOptions.swift */; }; + C9AEC37A2A3DEB0D918F6E8F2DC06332 /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4085E90F59B8EE8025AD442CD9F3311 /* CipherModeWorker.swift */; }; + CB3472B2D0CCCD39262DBA63EC9B4164 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0DE3C35CDEDF8D78B169CCD73F353F2 /* ChaCha20+Foundation.swift */; }; + CC8072E7B36037869373EAE466E34A33 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0DE3C35CDEDF8D78B169CCD73F353F2 /* ChaCha20+Foundation.swift */; }; + CC9046D345927C1D4737AF65E3A4C8F0 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBCDE0F2D7072617433CA92E2139172F /* OFB.swift */; }; + CD4DD6BFA55FD50AECF9272789484510 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23572999C6C308CB98D70E8888013E60 /* Bit.swift */; }; + CDA2D5E0EE42C3E39949543B21A6855C /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F9E33D8F1F7CAB653771A85C2BAD89F /* afterlife.swift */; }; + CDC34A7795631B78B36CB8F03F0880FD /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CBD6E2A5A1C37DEF84883C5389E04D /* Int+Extension.swift */; }; + D0281D0F882239EB5CE8985941980B87 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11FD81F504F70DD7F7404FAB1FFA09BE /* Rabbit.swift */; }; + D13DC88A680109BBA97BA1737AD5A519 /* SSLClientCertificate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F101D6CF40D7F4694116ACF526EEB96A /* SSLClientCertificate.swift */; }; + D1533C2141CC7DF53CC9525F97A0BC8E /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = B07AEDC66415BF92E7A4E0DA3AA93846 /* CFB.swift */; }; + D1E4C76F4802483C687862BF57505D43 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67B360708114DFD3CEDA6F6661C38A1C /* CCM.swift */; }; + D259B9ED1508919F7376FD7C91B3A7CA /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D692FCA6198D6487DA18678723BB0E8 /* Data Conversion.swift */; }; + D2879925DB5DED6BC89F5D1B70AEE43A /* CryptoSwift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C7D4A62A15247DB09113F908C5E6B49 /* CryptoSwift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D36BEEFDCF9D62515D4013642B2F06C9 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CCB554E0C3A9A3E2036421C7676816 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D42B65B8CF94D83CB135CCEDB2986D76 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = C7458B47F20786820DFD6E8A561373E3 /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D6427ACF0E9A1A43D35C0E64E0C499EC /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4085E90F59B8EE8025AD442CD9F3311 /* CipherModeWorker.swift */; }; + D715FB15570B64AFD38F100C07B6B3C6 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3F41C2D3B6B20B5DF73C37340343CF4 /* AES.swift */; }; + D73CF65BD924FB93C168F191EFBCFA99 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = F99B3DB488BEB064AB7A9230B18B29EE /* Utils.swift */; }; + D889117CC748F0BE8A7219562B4206A2 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1848530B067E254338210EC8E93984FE /* Bitwise Ops.swift */; }; + D963E527D2BEFA41065D6C5A7C182679 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F01025C6D323D833DF7384CA21560AAE /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DA77ABDD5590E290DBCCEE64C35E98C1 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D12388DAD3F6EC1CF276AF7CF4CA70C /* AnyPromise.m */; }; + DA77F37A28F170FAB624FD4C9597ACE5 /* CryptoSwift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8D94568E75BC0B2DD85C4416156EB4 /* CryptoSwift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DCA9C12CD237B588997C844D7596306D /* Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C67AE49421A3140D2FF135EF89ED5C /* Compression.swift */; }; + DCD7376630E6A626B6F2846AE4988472 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A8A7846779319B5AF7B7FD7678E2F7 /* BlockEncryptor.swift */; }; + DF35715AB3E005727EA339CE57FD6621 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 618C45B65227C5DF2E02229A52E31853 /* Floating Point Conversion.swift */; }; + E032F707673BA0095183B54D772A0D7C /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D82D6E399587DE6ABA2CFDB66E0E7F8 /* NSObject+Promise.swift */; }; + E10DFED84D52BE20CBD188F6D871EC55 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 630BA31F3A958609E3A13E56100BA045 /* Updatable.swift */; }; + E116484DB9CBB9442CB00BD7C40677E1 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99CA87C90C2CE0FD4F5BEB20AFEB1833 /* AEADChaCha20Poly1305.swift */; }; + E1F158AC7C27E978E69A42DBC398AC30 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = AF7856EE7C3C1F5C882290EE961EAE61 /* NSTask+AnyPromise.m */; }; + E2066057CCDBB9941A2E211F94D7F3E8 /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3A22CA727BED8B76A60015627FA7D8 /* Prime Test.swift */; }; + E2FB20ADDB91B166FA66CD414044AC8B /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7586A4611F1EB5FD23A0A8E744A274BD /* BlockDecryptor.swift */; }; + E37A626513E0CE69497A07E089FE9D18 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C2F22368334B7EA12CC2B01163ADE97 /* NSNotificationCenter+AnyPromise.m */; }; + E41654C5FB9DA97E186A7F92A98AF1FB /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF66742E976C83F1C40D0CF4A0D0EC77 /* Utils+Foundation.swift */; }; + E4EE18C02BC4B7C3F8F519C369242C0B /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32423D6FC8955335CA0A685C6202EBD1 /* Subtraction.swift */; }; + E4F8A75CCEE1B138894B11ABE8156454 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99A28CD76DE93484A23853D178955072 /* PKCS5.swift */; }; + E60DF3645176BE0F96A2AD24519F9FED /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BD80036AAC2D4906A6DC4A00686B974 /* Checksum.swift */; }; + E6948825D06148EB1FF119F9A065811F /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = CC5240B4781ACBC6F0CC4CC1D226859E /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E6D119B02C621B2BD7C5B196197048D0 /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = D394066B2E46CE1FEECF341A753FFA6D /* Square Root.swift */; }; + E8780434345972A9AC8E4FAF8EEE26DA /* SSLSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AD2A1D6F4792BB8C25CB35E103E9657 /* SSLSecurity.swift */; }; + E8917FF6C51A4CE3C629E5157B384E91 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC7066B3F5257C3F62F8E9181B71DF23 /* RandomUInt64.swift */; }; + E8BF177E612B04CFEABEF6D7A50B1F31 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAFC664C928E8E144EE2E7881435515 /* StreamEncryptor.swift */; }; + E98EF9413EC55B94F8302E4A56A67F4A /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85249351EFF672E4E8D0C6EB02520237 /* CBCMAC.swift */; }; + E9F84B440851BB1388B3A113124CD3B5 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = B248E0EA0BDC1DBC771D06F08042E3B6 /* Promise.swift */; }; + EAB8456A580E9592A76DEBED4A215719 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB2361281B0541EE92FEDE7A4E0F6EF /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EBF3075934CA04CAF65C03A37FE3053F /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91E499D98A7C49A97B25A5A3DFBD1021 /* CMAC.swift */; }; + ED4925E215527011C217C6CA534E58D7 /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 52D33700E85ACC83CE34BAB5E806BFF8 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ED947B5A28612D07C7856DC07E4C176C /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87B32EE8714C2211CAE250E62DA1B830 /* SHA1.swift */; }; + EDC8743802E001F15321CA581B7D011F /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B879405C58979A9A77A22F1FD72FE04 /* Poly1305.swift */; }; + EE06CB9F5FE216F4A46A8BE1686ECA74 /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 113E0416CF81608D72B59B8F2541027A /* Random.swift */; }; + EE66AB3F1775E876525AC95F81AFF786 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 45F47B1B378E471F86B24A238EE95C40 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EED2C4BE44EEBBA8B27717B3E4B75987 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 467E1C21715DF708BF7D8DF6DA02814E /* Data+Extension.swift */; }; + F06C8B8F8D37D3D1C6385058F2DC78E0 /* SipHash-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 72A1ED5B4495F73DD05A5AA27B169571 /* SipHash-iOS-dummy.m */; }; + F10AC4BB98E4147289E809BEA912B94A /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653EDAB70FA4D1975C3FF6B6AD9965BA /* NSNotificationCenter+Promise.swift */; }; + F1711B9ED3E1786FD75051F3D6A26002 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ECD815A84E46BE4A5F64ABA69183213 /* Authenticator.swift */; }; + F3117ECE93674E9C897BD207733C2E88 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09B0D5FCD0E2E1B27A4E69416D49470 /* NoPadding.swift */; }; + F34889659961411453A64B2DDDE8AB01 /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E20AB170F4A54932380A2FFF476E4D /* UInt128.swift */; }; + F405D47227694325C4BBD14C00BEEDB4 /* secp256k1_swift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 54A0B86EBF5236879EA7DDFE10E4810D /* secp256k1_swift-iOS-dummy.m */; }; + F410FA5E6E9A5837387A74801959D8F6 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = C0F56F179803DB6CBDA31DEB40AAA523 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F416985052D8D64D5A49E2D4E968DB30 /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BD80036AAC2D4906A6DC4A00686B974 /* Checksum.swift */; }; + F41C9ED1404312A1535B38257A98700F /* BigInt-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7468138804EE36C6736709FDE028B1C9 /* BigInt-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F44827E051F015CF4A696D0BD91EB7C3 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23572999C6C308CB98D70E8888013E60 /* Bit.swift */; }; + F4837C8C3C82F4E3A099C7DB3BAD6150 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F95F54AA521C53B06A1B5C47F0CAFEC /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F5362B8B3C767F721BDE9FEE6A72BBE5 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C2F22368334B7EA12CC2B01163ADE97 /* NSNotificationCenter+AnyPromise.m */; }; + F5B5D5150A66B947B9D0635B2D5E8908 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = A88D046EB24F71921D96094E3C23FFA5 /* CompactMap.swift */; }; + F5D3EB7AA0BF1E2FEC8211862AD33BDF /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D2754B07E8E3D474CE75E531696D33 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6BED735A14EA39D6CACA08AAFE2A2D6 /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73128202582D9212ED3EEF1632B8BA1B /* String Conversion.swift */; }; + F7E8ABA0A9C18CC0502EE45C99082884 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 062B593234D703A4C58BC97499AFDE27 /* Configuration.swift */; }; + F806DE741C3D193E72655C7A7F204F60 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 26571C1AD51ADD36B8487457A2DE999E /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F8136D62CB83023841C4CFA76A31B4AE /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 479AB9DD4B3F021BD51C594772FD7A92 /* AEAD.swift */; }; + F8C6BDD134D9787A6CE74E5A91E936DD /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CF6333DFB0F12D60F1E00966621A871 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F8F1F525D9D4FBAEA0E4E190C1E2A795 /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C1BE4E9495FD45A1BAB5EA01EE1B7D4 /* secp256k1.swift */; }; + FA421A2250B47AD522F12E72321EC96D /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 57BA855967F971FEA645E7A12F7D7E12 /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FBD07425641D23B6229B7BD8272CEF5B /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377E1C31250784A37E9224962BCC5FD8 /* BlockModeOptions.swift */; }; + FC9BF28AAC3C6C0248F14F32AB7F3B94 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 17F7E8E519DBACA1290E47FB76AF1673 /* NSURLSession+AnyPromise.m */; }; + FCED3D2B26FEC1C6ACE39F9874ACCBE1 /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8C179B70319D11D98FC38396E9CE78A /* SipHashable.swift */; }; + FDAD17E8F7FB04B57D5E139DBF693924 /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 21307FEC44274F5C58857F4BB7C52FC3 /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE68B248A41B39B45643D96F31EEE19C /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = A89C12D62DCE512AE5FBA7F84A812996 /* Words and Bits.swift */; }; + FED8750F8DB9AA28073C5B3EAB83D84C /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46B77EFA51E3D4B43C25719299ACD7D6 /* UInt8+Extension.swift */; }; + FF04AC0FDA7FF8616B6968E37E14DDC6 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A47EEF6074E91C89042CC4CF9FE790 /* Process+Promise.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -480,117 +442,61 @@ remoteGlobalIDString = BCAE05CF851EE53A209524B024AA6CD3; remoteInfo = "Pods-web3swift-iOS"; }; - 0AA9D376E38410DF31ADC7F2D5670398 /* PBXContainerItemProxy */ = { + 092A0DABC5CA5F20BDAB49A0E6F82B5A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E5027A132BD8BEDEF67AC1A970982AB4; - remoteInfo = "EthereumAddress-macOS"; + remoteGlobalIDString = 218BFCBCA0EA83AEA95CE87303914A04; + remoteInfo = "CryptoSwift-iOS"; }; - 16E1F6E199BD8629EFBBF21A4B6EEBFA /* PBXContainerItemProxy */ = { + 0A683539F553B5A349B0B00549D2E9DE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C03DEEFE4852B4027014EE22FEBAC1A3; - remoteInfo = "SipHash-iOS"; + remoteGlobalIDString = 63F854E532D7CBA393D37B6C84E1F23F; + remoteInfo = "BigInt-macOS"; }; - 25EAC4CC897F3C8A71E750C126581A38 /* PBXContainerItemProxy */ = { + 0D7B4AE28E3DF5FCD77A6890C4929E51 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 94357A3A965B61C3A4DEC1C0240780A9; remoteInfo = "SipHash-macOS"; }; - 261486F4F9A35C6C8333FE9D8303F2E6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D91322818F7EF2905BF914BDDBAA819E; - remoteInfo = "PromiseKit.root-CorePromise-Foundation"; - }; - 2D5F3331A0232F8C3FBA392B0FBA3DC5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; - remoteInfo = PromiseKit; - }; - 364AA8B651F18F2886E24693EF1940D1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 218BFCBCA0EA83AEA95CE87303914A04; - remoteInfo = "CryptoSwift-iOS"; - }; - 4335985C1BB34CB74509F2FC3C46A3B0 /* PBXContainerItemProxy */ = { + 16E1F6E199BD8629EFBBF21A4B6EEBFA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C03DEEFE4852B4027014EE22FEBAC1A3; remoteInfo = "SipHash-iOS"; }; - 46510C5563FB9F85FE139F9F914CAE3E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = EC318E575402922FD9228D8DC970D293; - remoteInfo = "EthereumABI-macOS"; - }; - 503D0E4493A13D3C59C637492A5E0331 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 65CF043BCE2D53116C7B4659477A3E72; - remoteInfo = "CryptoSwift-macOS"; - }; - 60490467D394F1AC55E002E7F8215BE0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 37401ACF771B84D6C3E4480103B94936; - remoteInfo = "secp256k1_swift-macOS"; - }; - 6548304824D8D26BC7B72A5F6593297D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 452B8173099D29664E78F6AD3753D61C; - remoteInfo = "Starscream-iOS"; - }; - 6F27311A3511C8581E05739C865F652D /* PBXContainerItemProxy */ = { + 1A7ACB21DAFF82C7FB2BA9CB6E4B548C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 63F854E532D7CBA393D37B6C84E1F23F; - remoteInfo = "BigInt-macOS"; - }; - 72BFD64578146347897C3A762DE5B045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 218BFCBCA0EA83AEA95CE87303914A04; - remoteInfo = "CryptoSwift-iOS"; + remoteGlobalIDString = 7CC079C3BDE01C7F13C2F0F27E1FA4BE; + remoteInfo = "secp256k1_swift-iOS"; }; - 7300E8D6A098B1D01F1AC4EE94358C6B /* PBXContainerItemProxy */ = { + 3F815C121527F09706A3B10D2F1A9153 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9ACB0E6D78ADA926658D244695ECC164; - remoteInfo = "EthereumABI-iOS"; + remoteGlobalIDString = 889A3C6D0A70D789D17B7BFFE160AD76; + remoteInfo = "BigInt-iOS"; }; - 7CF016ABCF8487BD9D1E13BF6442CC2C /* PBXContainerItemProxy */ = { + 5252C9388F7042FCDC89E92CA1E5C41A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 889A3C6D0A70D789D17B7BFFE160AD76; - remoteInfo = "BigInt-iOS"; + remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; + remoteInfo = PromiseKit; }; - 885DD2864E09A470635E934A27CDDB63 /* PBXContainerItemProxy */ = { + 5BDFC5839C963705E886F6C975D076DC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F48D9463B784559D75B1E6B9A370AE41; - remoteInfo = "EthereumAddress-iOS"; + remoteGlobalIDString = 88F35C8F653FAD94A8ED8126A7FF16AC; + remoteInfo = "Starscream-macOS"; }; 8CBAE56F1D035B13878CB984283ECE8C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -599,20 +505,6 @@ remoteGlobalIDString = 7F80E92F65A51D5A7FA259331F9B7BCC; remoteInfo = "Pods-web3swift-macOS"; }; - 903AD7731F3E7582871680EAE489BF62 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 63F854E532D7CBA393D37B6C84E1F23F; - remoteInfo = "BigInt-macOS"; - }; - 90E69E01A81C77F66C7B4FEA284C6108 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 65CF043BCE2D53116C7B4659477A3E72; - remoteInfo = "CryptoSwift-macOS"; - }; 94DE56AA252603E6ACA2CF389563C98C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -620,447 +512,349 @@ remoteGlobalIDString = 94357A3A965B61C3A4DEC1C0240780A9; remoteInfo = "SipHash-macOS"; }; - A11FE3DBBA5088478433A7CBB0921B19 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C3F2705295C36759D5C023EF4E8E5AD4; - remoteInfo = "SwiftRLP-iOS"; - }; - A987377817F8F7F6771CF88541A91773 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E5027A132BD8BEDEF67AC1A970982AB4; - remoteInfo = "EthereumAddress-macOS"; - }; - B7F15C4A8D5848B25DA7E80029BDC745 /* PBXContainerItemProxy */ = { + B7BB609EAF645A2F2A0A74A60E7578ED /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 889A3C6D0A70D789D17B7BFFE160AD76; - remoteInfo = "BigInt-iOS"; + remoteGlobalIDString = D91322818F7EF2905BF914BDDBAA819E; + remoteInfo = "PromiseKit.root-CorePromise-Foundation"; }; - CAC040BD6A65462774441B87792E738F /* PBXContainerItemProxy */ = { + CC3850DFB801B5DF4057D6E564471FFF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 889A3C6D0A70D789D17B7BFFE160AD76; - remoteInfo = "BigInt-iOS"; + remoteGlobalIDString = C03DEEFE4852B4027014EE22FEBAC1A3; + remoteInfo = "SipHash-iOS"; }; - CC04F411031DDE1D0C21F229649B0FE4 /* PBXContainerItemProxy */ = { + D986E640CF642F312D298AA9FFA97025 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 65CF043BCE2D53116C7B4659477A3E72; remoteInfo = "CryptoSwift-macOS"; }; - D453A1AE9FEB20CDBB1D117FF4E507E9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 083F82DFFF303D03F2F19B6400070295; - remoteInfo = "SwiftRLP-macOS"; - }; - D45EE22AD41D7C4F016DB0E66ACA1D58 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F48D9463B784559D75B1E6B9A370AE41; - remoteInfo = "EthereumAddress-iOS"; - }; - DEA8C09572537F3A359E811F6EA1041B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 88F35C8F653FAD94A8ED8126A7FF16AC; - remoteInfo = "Starscream-macOS"; - }; - E217E652FACA61F10375AA001B85EFE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7CC079C3BDE01C7F13C2F0F27E1FA4BE; - remoteInfo = "secp256k1_swift-iOS"; - }; - F13D2CDD038077A18864D8FBE4A93886 /* PBXContainerItemProxy */ = { + E9430FDDB48F9168FED3991BC1C130A1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 63F854E532D7CBA393D37B6C84E1F23F; - remoteInfo = "BigInt-macOS"; + remoteGlobalIDString = 452B8173099D29664E78F6AD3753D61C; + remoteInfo = "Starscream-iOS"; }; - FD2E2F75CD43EC3CB111B4A398D84FAD /* PBXContainerItemProxy */ = { + FF70944749D8E299E57B72B5FD17D1CE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 218BFCBCA0EA83AEA95CE87303914A04; - remoteInfo = "CryptoSwift-iOS"; + remoteGlobalIDString = 37401ACF771B84D6C3E4480103B94936; + remoteInfo = "secp256k1_swift-macOS"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 000324BCB32A0DC73A29393B4D60B2D6 /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; - 004B658D46146FB1F435C5BA92529902 /* secp256k1_swift-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "secp256k1_swift-macOS.xcconfig"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS.xcconfig"; sourceTree = ""; }; - 01FD97D62B430F3D613355747840CE5D /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; - 028CF3366D14A8473EC19D2276FB883A /* EthereumAddress-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-iOS-umbrella.h"; sourceTree = ""; }; - 034CD824C39CDDB5F1BE5765285EC8DB /* Starscream-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-iOS-umbrella.h"; sourceTree = ""; }; - 0527E6B94F781FC38F1E041D48897CA9 /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; - 05596F76EAC2A61FD7625823DC488551 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = Classes/secp256k1/src/eckey.h; sourceTree = ""; }; - 067B8E36AC70F0A5D2808468761BFF09 /* Starscream-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Starscream-iOS-dummy.m"; sourceTree = ""; }; - 06BEC764D1E8CAABF0542415203CBA68 /* SipHash-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-iOS-dummy.m"; sourceTree = ""; }; - 06CAD11822E804DF5FB8AFB3BC777B67 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; - 073D210D24EBE028D4BAE70A788B2EF5 /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; - 075385814DC186A7C64CAC0A16956314 /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; - 079F924129D8309B5345106A36F994D6 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; - 07B8BEBE25678BD1D1AF1A9FFC737880 /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; + 021D91D81A947FFFD514158BD49D4481 /* CryptoSwift-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-iOS-prefix.pch"; sourceTree = ""; }; + 04F0DD77BBE1D1D0B60E77FC98FE58A8 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; + 05F3218F9C7AEB2A3CD6B49C28F61D42 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; + 062B593234D703A4C58BC97499AFDE27 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; + 072D93E76657AD12862AB0BBB44C5648 /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; + 078C6E55B0F3F832129C4238FE075CB8 /* secp256k1_swift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-iOS-umbrella.h"; sourceTree = ""; }; 08B25221915A6BA07CC3A2F7711BC76D /* Pods-web3swift-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-iOS.release.xcconfig"; sourceTree = ""; }; - 08CA3ADA337C349B5C3CD45ABD7E5736 /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; - 08ED86A5F3A6098AC8193A1412BA0357 /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; - 0918CB6074FD9988D8B8AF6E9933FAAF /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; - 096D76C734D0C860C06F45FC68A87663 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; - 09A060ACCCC97C8C2F9B0CF9AAC05248 /* libStarscream-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libStarscream-macOS.a"; path = "libStarscream-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 09F1816031AF1B0046AEFD2145335206 /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; - 0A215BAB370000F46CA2358716353615 /* BigInt-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "BigInt-iOS.modulemap"; sourceTree = ""; }; - 0A55C092419E19D14C074574C4C62025 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; - 0A75E62EB2CD53DBF3FF57137C12D9E4 /* libEthereumAddress-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumAddress-iOS.a"; path = "libEthereumAddress-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0ABC685610BED914143495E9E29E6B4B /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; - 0B436F98D1DB7929BA58C4C7D8CB1A9E /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; - 0B4E8BF7FC021488E6C32F493D1FCDC7 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; - 0DD140B8B9FB0E42DD7B5405CAD979C8 /* SipHash-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-iOS-prefix.pch"; sourceTree = ""; }; - 0E01CFFDCEDDDCABD59A31B7EB69E9DE /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; - 0E42B40E0BF34EFF848050AA681271DA /* CryptoSwift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-iOS-umbrella.h"; sourceTree = ""; }; - 0ECD101929431D17696D4E479E2191F2 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; - 10273A13B3A29DD80448E4E7B26DDE2E /* EthereumAddress-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "EthereumAddress-macOS.modulemap"; path = "../EthereumAddress-macOS/EthereumAddress-macOS.modulemap"; sourceTree = ""; }; - 1041CA6D2F438B6A5364EE9337F0A3CC /* SwiftRLP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftRLP.h; path = SwiftRLP/SwiftRLP.h; sourceTree = ""; }; - 105BE0A15C5C0D32F1E8A1CB627E65E0 /* SipHash-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "SipHash-iOS.modulemap"; sourceTree = ""; }; - 123D9B5EFB2A4F497CDF42CBFE8B9F9D /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; - 127203DB9162380E9EA1CCD66C9F7BB3 /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; - 14B167377B2F0A618F50B7B7C6806B20 /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; - 15173F566998512BBB9AA1D3ADE4DFAC /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; - 168239DB48F2C0DEB1D2D73295F556AD /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; - 179FDDCE696F59ECE53BD24EB1B13765 /* EthereumABI-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "EthereumABI-iOS.xcconfig"; sourceTree = ""; }; - 17C7F2CD460A6321790F2C068142BD16 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; - 19735BE346FC7332BFE3AC0AFE55A790 /* libCryptoSwift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCryptoSwift-iOS.a"; path = "libCryptoSwift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 19C878797582D0612D89FF481F3A2AF2 /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; - 1A4886516123ECBCE7F5D4635F3EE2BF /* BigInt-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-iOS-prefix.pch"; sourceTree = ""; }; - 1ACA40ED69BA394DFDCD5C96574C2692 /* ABIDecoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIDecoding.swift; path = EthereumABI/Classes/ABIDecoding.swift; sourceTree = ""; }; - 1B84D8BD6AA21608D7C1F367D7A228AD /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; - 1C77233EDBFE88FFF7D996071BFEF9FF /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; - 1DDF3D294089BB0BD9506A83E1115D5D /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; - 1F73FDACA65B2CE9252283FAEFD72902 /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; + 09CD6963326BE02CBDE1C7D5B5BD0282 /* BigInt-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BigInt-macOS-umbrella.h"; path = "../BigInt-macOS/BigInt-macOS-umbrella.h"; sourceTree = ""; }; + 09D758064C979FD9CC7110D72E292C98 /* PromiseKit.root-CorePromise-Foundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PromiseKit.root-CorePromise-Foundation-dummy.m"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-dummy.m"; sourceTree = ""; }; + 0BBE4C77E28D19F47D5A93F5E9F88EB9 /* Starscream-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Starscream-iOS-dummy.m"; sourceTree = ""; }; + 0C1BE4E9495FD45A1BAB5EA01EE1B7D4 /* secp256k1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = secp256k1.swift; path = Classes/secp256k1.swift; sourceTree = ""; }; + 0C1D006D056F887719496BFF0950C603 /* libsecp256k1_swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsecp256k1_swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0C2C0E04798EBB71E7123D512C62369B /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; + 0E809513FBCA61203FE4CAEBDC9F2868 /* BigInt-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-iOS-dummy.m"; sourceTree = ""; }; + 0F2ECBD47C16E84FD7937670288FEC49 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; + 10B225B29D9AAC8E5736C575E8F41AB1 /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; + 113E0416CF81608D72B59B8F2541027A /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; + 115F2E0B1F15AFB9D1B7F053BCF5818A /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; + 11AAB49A993F30F4CE37221A805E2FD3 /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; + 11FD81F504F70DD7F7404FAB1FFA09BE /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; + 1235CA7678CE59512DC38AC0528FC48B /* libPods-web3swift-iOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-iOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 13909D9749BDDAF53BF6F06729ED8378 /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; + 15A0777D7682D89DD4E77BA406EA9F39 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; + 1685174D72AE3061BD5445028C88CE77 /* libStarscream-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libStarscream-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 16C3402B3B1196A6A499C758A336D2A6 /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; + 170A63993058B055F852428188D98351 /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; + 1717A75622645509FF4B58F73811C673 /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; + 17F7E8E519DBACA1290E47FB76AF1673 /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; + 1848530B067E254338210EC8E93984FE /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; + 18B6BD85AD1F3C37FDBC8610C2BBA334 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; + 197EB21FF7C7D3C0D7BDC68E5F1F8E76 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = Classes/secp256k1/src/hash.h; sourceTree = ""; }; + 1A17CB38D45292A19C3559652B2A9857 /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; + 1B0B83EF23BEE1F68C39241C3289717D /* secp256k1_swift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "secp256k1_swift-iOS.modulemap"; sourceTree = ""; }; + 1B991B925F7AE711ACAA8B19741AD685 /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; + 1BA68E7B5C9851779BB8B30EC4075868 /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; + 1C20BF43F08DCC1F7C25483151BA5C94 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; + 1C2F22368334B7EA12CC2B01163ADE97 /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; + 1E0FC3168FD899B4C60D7FACB7716C3E /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; + 1E954888E86E1DB23C4298AC4049B901 /* libPromiseKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPromiseKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 1F378E51A334910200DB16EA3B7513B1 /* libPods-web3swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 1FBDF36A068DC8E0EB80F86C05254653 /* Pods-web3swift-macOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-macOS_Tests.release.xcconfig"; sourceTree = ""; }; - 1FD214E5075DB97C6AE5FDC8129ECEED /* PromiseKit.root-CorePromise-Foundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PromiseKit.root-CorePromise-Foundation-prefix.pch"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch"; sourceTree = ""; }; - 2034666AD58D00ED6CBB99F6582D6D6A /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; - 209E7E0252865966ABF59CF9F7024196 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; - 214DB209A3B8A67A320236844EEB6B6E /* EthereumABI-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumABI-macOS-umbrella.h"; path = "../EthereumABI-macOS/EthereumABI-macOS-umbrella.h"; sourceTree = ""; }; - 2179690C48BF2A485E32EB4DE0188D6E /* libEthereumABI-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumABI-macOS.a"; path = "libEthereumABI-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 21DC9B7712BFC051A8073E5880CC93ED /* SwiftRLP-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftRLP-iOS-dummy.m"; sourceTree = ""; }; - 22276031D3E12A4B4692747F2EED285F /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; - 22A5C841DECB9325536991C63FACE457 /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = Sources/CryptoSwift/Scrypt.swift; sourceTree = ""; }; - 2313F89A5AEB8DD926DBBDFC3D842668 /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; - 2378E9B88E5CD07C799D5E271D8B82B8 /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = Classes/secp256k1/src/group.h; sourceTree = ""; }; - 24C88F05E568BD92F63E83416EB9804C /* Starscream-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-iOS-prefix.pch"; sourceTree = ""; }; - 259BD2FAAD513765CB02BA975A0BA669 /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; + 21307FEC44274F5C58857F4BB7C52FC3 /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; + 21920B2D0558FFA6780A1DE2EA3D38AD /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; + 219E98401E570D07C58CE357630DEB1A /* libBigInt-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libBigInt-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 21F791890BAE04E30787B3BC9FDF624B /* CryptoSwift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "CryptoSwift-macOS.modulemap"; path = "../CryptoSwift-macOS/CryptoSwift-macOS.modulemap"; sourceTree = ""; }; + 22A5785D6E69A8FF8C3F1593B7CFB20D /* SipHash-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SipHash-macOS-prefix.pch"; path = "../SipHash-macOS/SipHash-macOS-prefix.pch"; sourceTree = ""; }; + 22E6C540A70650CFB45BB7C274471E84 /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; + 23572999C6C308CB98D70E8888013E60 /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; + 244F6E3D89452F63EBAC299D0B04B602 /* secp256k1_swift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "secp256k1_swift-macOS.modulemap"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap"; sourceTree = ""; }; + 2561776D348F1427469EB75D1A091837 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; + 259D4B9E3002CB46981373646552C189 /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; 260C01FC85604DDF8E54E6EE38B93CD4 /* Pods-web3swift-iOS_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-iOS_Tests-acknowledgements.plist"; sourceTree = ""; }; - 26735B315AE3BBFC093751F34FF5298A /* secp256k1_swift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1_swift-macOS-umbrella.h"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h"; sourceTree = ""; }; - 28E99B9CFB57C13F2AFD6FEE4E6D506E /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; - 2AB1CD9F14C48B0297A0032E8A240931 /* libsecp256k1_swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libsecp256k1_swift-iOS.a"; path = "libsecp256k1_swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2AEEA5D7B37190F5679847BDDFB197AB /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; - 2B4F9659A0D674401F418C8670C9E64D /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; - 2CB0DEB3D6F4BB4A5D7EB57F2C14F338 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; - 2CFB12AE565519D1D61BBCB575EA4529 /* EthereumAddress-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "EthereumAddress-iOS.modulemap"; sourceTree = ""; }; - 2F801DC94C5AC4679A4E3ED98CE6024D /* CryptoSwift-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CryptoSwift-macOS-prefix.pch"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; sourceTree = ""; }; + 2624E99D931CF25E3BBCCFB51B854672 /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; + 26571C1AD51ADD36B8487457A2DE999E /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = Classes/secp256k1/src/util.h; sourceTree = ""; }; + 27028DD53E5FDD45CB01A8136AAEA87B /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; + 27E05341BFB24F456B02B4AE8D972FF4 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; + 2D82D6E399587DE6ABA2CFDB66E0E7F8 /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; + 2E15EE0FD008952509458F9CB045FDFD /* secp256k1_swift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "secp256k1_swift-macOS-dummy.m"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-dummy.m"; sourceTree = ""; }; + 2E84AAD9A4FDE032017007F9C3A55075 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; + 2F2DF7D68EEC4AF5198919C8128111FC /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; + 2FF8532600A1D47B74F651F43966153E /* libSipHash-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libSipHash-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 30A9D45A3B275B4CE4C9A4B1F189B379 /* Pods-web3swift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-web3swift-macOS.modulemap"; sourceTree = ""; }; - 30E07D7C1A1D0C523F1749CBCBCA85B7 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; - 333F5852A331E94C5A92068FC4D07E60 /* secp256k1_swift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "secp256k1_swift-macOS-dummy.m"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-dummy.m"; sourceTree = ""; }; - 34526A3852A1A5C2F7C458D97A8A900F /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; - 349FEDC79E659427A3A7E4B09E30D9B4 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; - 350BF04878FA44170F1BBEE59F0D7A24 /* ABIEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIEncoding.swift; path = EthereumABI/Classes/ABIEncoding.swift; sourceTree = ""; }; - 35674E85190CB95B6997F482987E6708 /* Starscream-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Starscream-macOS.xcconfig"; path = "../Starscream-macOS/Starscream-macOS.xcconfig"; sourceTree = ""; }; + 32423D6FC8955335CA0A685C6202EBD1 /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; + 3279A426C1F0101503616FAE68E83993 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; + 346901EFC436E45BAB36F063E0AE048F /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; 35A6D37D07E708CB3C6B234DAA181E6D /* Pods-web3swift-macOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-macOS-acknowledgements.markdown"; sourceTree = ""; }; 35CECF0FB74C7C471951889E6A703D92 /* Pods-web3swift-iOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-iOS-acknowledgements.plist"; sourceTree = ""; }; - 361FA6E8F841E7B9BE7AA982EFBC3A90 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = Classes/secp256k1/src/scalar.h; sourceTree = ""; }; - 363536B52D3D69D576EA73073652D568 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; - 3739CAE1052D6D89A6AE9793698C7B47 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; - 3764F8359667BB549CE9192C8A1D3AA0 /* SipHash-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SipHash-iOS.xcconfig"; sourceTree = ""; }; - 3904351C9A8FEDD288B49A46427C5F43 /* EthereumABI-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "EthereumABI-macOS.xcconfig"; path = "../EthereumABI-macOS/EthereumABI-macOS.xcconfig"; sourceTree = ""; }; - 394845A61BA9FA09DEC8647BBA1DCC6C /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; - 3A5F1CE6B4F3A924CE2C7B538CE87C90 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; - 3A7CFA4C3173014EEAC775008867F21D /* CryptoSwift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "CryptoSwift-iOS.modulemap"; sourceTree = ""; }; - 3B6AD7D1CE9AF066C076FC7786A1A513 /* EthereumAddress-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumAddress-macOS-umbrella.h"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h"; sourceTree = ""; }; - 3C1FD176D21CBD655A33F843E356B587 /* UIViewPropertyAnimator+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewPropertyAnimator+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift"; sourceTree = ""; }; - 3D098F96767671EABB2B0DC76CAB4492 /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; - 3E573622FDFDB2E36CBBAEF6D136A2F2 /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; - 3E5792474118A82E0B3F539AD378B14A /* libPods-web3swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-macOS.a"; path = "libPods-web3swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3EF65D377F2BA084BFBC0FE54CF540BC /* EthereumAddress-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "EthereumAddress-iOS.xcconfig"; sourceTree = ""; }; - 3F14B41EF96F500D63E7EB1BC7461785 /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; - 3F1E2B1C1E824F624C378758F6EA7541 /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; - 3F312033A8834428A85A4B806F7045CC /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; - 3F4927ED614A775188589F2827745E7C /* libPromiseKit.root-CorePromise-Foundation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPromiseKit.root-CorePromise-Foundation.a"; path = "libPromiseKit.root-CorePromise-Foundation.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3F58F0D6480F143624938CC304BC9C28 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; - 3FE228EB1CF69DA3A1AD9E255C783A76 /* EthereumABI-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumABI-iOS-umbrella.h"; sourceTree = ""; }; - 404CEB85861C5E34014047653BFDBBCD /* SSLSecurity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLSecurity.swift; path = Sources/Starscream/SSLSecurity.swift; sourceTree = ""; }; - 40F45CD90D924FB79D1098E19C07F029 /* libsecp256k1_swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libsecp256k1_swift-macOS.a"; path = "libsecp256k1_swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 414361595A943984D1687FF235555739 /* SwiftRLP-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-iOS-prefix.pch"; sourceTree = ""; }; + 3633C5CE9E0505026515F5090144AF71 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; + 367FC28408AE4921EA09065CDC5B36AA /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; + 377E1C31250784A37E9224962BCC5FD8 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; + 381EFBC9AE16789B1870BCBE392591EC /* libSipHash-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libSipHash-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3AA4B5350C604E8B4710156DD91F473B /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; + 3C6E98D4DD82B4DACFDF292F5A140767 /* PromiseKit.root-CorePromise-Foundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PromiseKit.root-CorePromise-Foundation-prefix.pch"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch"; sourceTree = ""; }; + 3D69632F535FD98C95190038FC7C87A9 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; + 3E1EB4BAE587092263D57BA8822AF90D /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; + 4027416A1B51568CE8FA17C3316395F8 /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; + 4161E3E976BEFE72E8FF906BBB115AFB /* UIViewPropertyAnimator+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewPropertyAnimator+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift"; sourceTree = ""; }; 41F1F3FA5E84090F019AC6206DEB0658 /* Pods-web3swift-iOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-iOS_Tests.debug.xcconfig"; sourceTree = ""; }; - 422B6EC21F1B1D7C0499CE7FAD719ACE /* EthereumAddress-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "EthereumAddress-macOS.xcconfig"; path = "../EthereumAddress-macOS/EthereumAddress-macOS.xcconfig"; sourceTree = ""; }; - 43DCE273425CD6BB15234A0E86965CCF /* SwiftRLP-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SwiftRLP-iOS.xcconfig"; sourceTree = ""; }; - 43DE4AFA65A55712FB2E22A4D0808552 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = Classes/secp256k1/src/hash.h; sourceTree = ""; }; - 445006314358D6540B8D46B3CDBA187C /* PromiseKit.root-CorePromise-Foundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "PromiseKit.root-CorePromise-Foundation.modulemap"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap"; sourceTree = ""; }; - 446017795D375E95372753EB7E99B3C2 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; + 449513E66567F1278B7C620B88A3835B /* Starscream-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Starscream-macOS-prefix.pch"; path = "../Starscream-macOS/Starscream-macOS-prefix.pch"; sourceTree = ""; }; 44C524F525FB413605261CBD1B6CFCB2 /* Pods-web3swift-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-macOS.debug.xcconfig"; sourceTree = ""; }; - 44E6ECFA16786AD23E928015EFE72D20 /* CryptoSwift-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CryptoSwift-iOS.xcconfig"; sourceTree = ""; }; - 452643BFC330DA77845C5A6609A2075C /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; - 4720B3151FA9FFC928C7EA4CFF52990D /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; + 44EDDB4357C48799A588D2CE4C7A98EF /* Starscream-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-iOS-prefix.pch"; sourceTree = ""; }; + 45F47B1B378E471F86B24A238EE95C40 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; + 467E1C21715DF708BF7D8DF6DA02814E /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; + 46B77EFA51E3D4B43C25719299ACD7D6 /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; + 479AB9DD4B3F021BD51C594772FD7A92 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; 484A4E4133192636DD7D867C210BD768 /* Pods-web3swift-iOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-iOS_Tests.release.xcconfig"; sourceTree = ""; }; - 4932C467CA0B003C3876AE37A7FB8F71 /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumAddress.swift; path = EthereumAddress/Classes/EthereumAddress.swift; sourceTree = ""; }; - 4A228958621D9EEC8D556B8053E56337 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; - 4A3FB1A72B8E12263DEBE540355A86EC /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; - 4B30E2451B217420C1AEEC1B80582E3F /* ABITypeParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABITypeParser.swift; path = EthereumABI/Classes/ABITypeParser.swift; sourceTree = ""; }; - 4C72985B2FBE354A9F9319055F420397 /* libStarscream-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libStarscream-iOS.a"; path = "libStarscream-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4D45CB1CE69B624AF22052E077769AEF /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; - 4D86040A42AE6B2D31485A1D8B40BF07 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; - 4FF6D28B7D45E393BA716CDC226035DC /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; - 50882954044EA934A9C57877220EE29C /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; - 50C16AB2F38379BA2A818AE65B1024B9 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; - 51F90F921EB768BEADEB4297FCFF9E57 /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; - 52BA80B342B58A1F7D98B7CF0298D7AC /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; - 52CB8E691CBC3E972E2F20FD42C8E5E8 /* Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Compression.swift; path = Sources/Starscream/Compression.swift; sourceTree = ""; }; - 52FDD7180222ABB0D7322CEE418D8C9B /* Starscream-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Starscream-iOS.modulemap"; sourceTree = ""; }; - 5391BD602497E51701C1533DE7DFB656 /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; - 53F11487462D0D7A3435C44C6BDBC462 /* SwiftRLP-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "SwiftRLP-macOS.modulemap"; path = "../SwiftRLP-macOS/SwiftRLP-macOS.modulemap"; sourceTree = ""; }; - 5455FAE35B59D48DACC1505D3EF8F287 /* ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABI.swift; path = EthereumABI/Classes/ABI.swift; sourceTree = ""; }; - 54EE61B3E1378B7528157957F6E2A56C /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; - 5510D8887915839BA7438088ADB41801 /* EthereumAddress-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumAddress-macOS-prefix.pch"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; sourceTree = ""; }; - 558814016D6A7FC3319ADE8CEB46E03D /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; - 56373AABD9B04A66DA9258FA5ED41535 /* Starscream-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Starscream-macOS-dummy.m"; path = "../Starscream-macOS/Starscream-macOS-dummy.m"; sourceTree = ""; }; + 4AD2A1D6F4792BB8C25CB35E103E9657 /* SSLSecurity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLSecurity.swift; path = Sources/Starscream/SSLSecurity.swift; sourceTree = ""; }; + 4B879405C58979A9A77A22F1FD72FE04 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; + 4BC7DE613D4096245385E9B7F5E31282 /* SipHash-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-iOS-prefix.pch"; sourceTree = ""; }; + 4C7D4A62A15247DB09113F908C5E6B49 /* CryptoSwift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-iOS-umbrella.h"; sourceTree = ""; }; + 4CE98594CABD142CA5C0741D66F75E7A /* SipHash-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SipHash-iOS.xcconfig"; sourceTree = ""; }; + 4D3CB40708791C1ED4A62EEA676480DC /* Starscream-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Starscream-macOS-dummy.m"; path = "../Starscream-macOS/Starscream-macOS-dummy.m"; sourceTree = ""; }; + 51CD1FF879BA6BC3417C799878DE6F79 /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; + 5256EA5A29BC4C55A003D9247A1A3029 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; + 52D33700E85ACC83CE34BAB5E806BFF8 /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; + 53FA797E0976B9B96348FB82F8DC3DBD /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; + 5478CD6BE0741A6D364C23E9FF1077AC /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; + 54A0B86EBF5236879EA7DDFE10E4810D /* secp256k1_swift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_swift-iOS-dummy.m"; sourceTree = ""; }; 56B5DB97C7F46E50E7332936A9E4F3F4 /* Pods-web3swift-macOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-macOS_Tests.debug.xcconfig"; sourceTree = ""; }; - 56CD10FF531B107D40A576BBB22E0276 /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; - 56FC04DFDECA01D4A3CC74702800B629 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; - 57829B17883880D67DD44DBAC7E201B9 /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; 57A683479F59AE6B0A463F96662C542C /* Pods-web3swift-macOS_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-macOS_Tests-acknowledgements.plist"; sourceTree = ""; }; - 57CC24E601A1A008219ED9568D1960D4 /* CryptoSwift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CryptoSwift-macOS-umbrella.h"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h"; sourceTree = ""; }; - 57EB0C73FF61D37BECDA16782B6CD011 /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; - 589937E90DBD42643A3BB7C0F8E1CB6E /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; - 58B9D7CECB2B5F3EAAA76E1F06CAC439 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; - 59D114BC19FD2727C45A3F54CBF0D2C4 /* EthereumAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumAddress.h; path = EthereumAddress/EthereumAddress.h; sourceTree = ""; }; - 5A2547AB8A3C31DFE2F52096FA37EFBD /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; + 57BA855967F971FEA645E7A12F7D7E12 /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; + 57DB52F3A57484D75B123642B4E82BC8 /* BigInt-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "BigInt-iOS.modulemap"; sourceTree = ""; }; + 5A97E581A98D7DE9A3321EDF1EADB28C /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; + 5BBF5F4FE850C1A6D626DBE3867A76EF /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; + 5C257E1502CFA7F2A46BADBE76577FDD /* WebSocket.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = Sources/Starscream/WebSocket.swift; sourceTree = ""; }; 5C723EEA4D7A91CC72DAEC8D1A480A44 /* Pods-web3swift-macOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-macOS-acknowledgements.plist"; sourceTree = ""; }; - 5E9A1BBB6B856729DAE095907B7CC8A5 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; + 5CAC61EA7401D62DCDB9D19F07E7F962 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; + 5E322677C269EEA7B635AFD5D4206C80 /* SipHash-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SipHash-macOS-umbrella.h"; path = "../SipHash-macOS/SipHash-macOS-umbrella.h"; sourceTree = ""; }; + 5ECD815A84E46BE4A5F64ABA69183213 /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; 5EFB0846AB1E93496D8B2E4BBC4C45D8 /* Pods-web3swift-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-macOS.release.xcconfig"; sourceTree = ""; }; - 5FD052809124761131D26FCAAC8DFE06 /* ABIParameterTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIParameterTypes.swift; path = EthereumABI/Classes/ABIParameterTypes.swift; sourceTree = ""; }; - 61245856493C9C1EC53A726E3CBF97C5 /* libSwiftRLP-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSwiftRLP-macOS.a"; path = "libSwiftRLP-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 61ACBF2F72668E8349A9415D01D85A4D /* secp256k1_swift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-iOS-umbrella.h"; sourceTree = ""; }; - 63530C8FD8A55BD3627FE6173EDF0AC1 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; - 63D387481791D12FD62A9BA2B990CF54 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; - 656D93793AE4808C058F16FFC5A211E0 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; - 657F66F26C28DFF82FF46807563B4E9C /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; - 65A48A732CCD02C41B96B7A7D8839431 /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; - 665234B604E940B526FA200F3100AF41 /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; - 6673E9B32501CA575F3B5F524A6E02C3 /* CryptoSwift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "CryptoSwift-macOS.modulemap"; path = "../CryptoSwift-macOS/CryptoSwift-macOS.modulemap"; sourceTree = ""; }; - 668BF93A8E194EF22FBCC85DFFCB8207 /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; - 6727BE5280045EA814058E5E322E9E7F /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; - 6788ABC80588BB40BF2D1D12AAE66F22 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; - 686E602AE5082CBF2C101ECED65BE99C /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; - 6AF4E5E9BEF07C4BF4F58F75609B6320 /* EthereumABI-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumABI-iOS-dummy.m"; sourceTree = ""; }; - 6B696D5331F11BE5F3C3E5F68D2F3B11 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - 6D0D59FEBAFE71FEF0F232F155DD9036 /* SSLClientCertificate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLClientCertificate.swift; path = Sources/Starscream/SSLClientCertificate.swift; sourceTree = ""; }; - 6D71818FDDBB76986F7A95E01EFE8EFE /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; - 6DB61B4C9C0BB83FB2F7118D8879739F /* libBigInt-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libBigInt-macOS.a"; path = "libBigInt-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 71FC5A5D817B5A6A2E37821A24E1B72C /* CryptoSwift-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "CryptoSwift-macOS.xcconfig"; path = "../CryptoSwift-macOS/CryptoSwift-macOS.xcconfig"; sourceTree = ""; }; - 72A0F3D157B6FF7544997435C8C2653A /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; - 72A80BD6B5AE54F0E7D97C194789E0A5 /* libPromiseKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPromiseKit.a; path = libPromiseKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 757F0523F822A331D6621CE7DD987F30 /* BigInt-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "BigInt-macOS.xcconfig"; path = "../BigInt-macOS/BigInt-macOS.xcconfig"; sourceTree = ""; }; - 7704EE196A8AFC3848D8EB74CCA3CBF6 /* BigInt-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "BigInt-macOS.modulemap"; path = "../BigInt-macOS/BigInt-macOS.modulemap"; sourceTree = ""; }; - 770C082676DEC5562E8B9742FB4DD986 /* CryptoSwift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CryptoSwift-macOS-dummy.m"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-dummy.m"; sourceTree = ""; }; - 795FA48BAA4F836DA1F3F4EEE1497F9D /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; - 7A2A3173F949AEAEC1663790613FC8A9 /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; - 7AB76205BB4AC2F224C001580773B939 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; - 7C57AA209A6E63301C96AC826A79072C /* secp256k1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = secp256k1.swift; path = Classes/secp256k1.swift; sourceTree = ""; }; - 7C74074A3D0203259F85DC852235EF7C /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; - 7D10E1F2DCA2F4839706AD161C30345A /* libBigInt-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libBigInt-iOS.a"; path = "libBigInt-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7D66DCE144E613BF899AF2CC0C89F08E /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; - 7E3337421B6559FCB342E151CD2C9512 /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; - 7E77AB91398628682525840EA48574A3 /* SwiftRLP-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SwiftRLP-macOS-umbrella.h"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h"; sourceTree = ""; }; - 7EC37B098A9AE8541D075182A9F4E648 /* BigInt-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BigInt-macOS-umbrella.h"; path = "../BigInt-macOS/BigInt-macOS-umbrella.h"; sourceTree = ""; }; - 7EC5795AC0B3B95BE65438DD06CE5775 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; - 7F9131F785641C468536589E493F91F6 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - 7FB178190CC33A5491DA22006A2D8421 /* BigInt-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BigInt-macOS-dummy.m"; path = "../BigInt-macOS/BigInt-macOS-dummy.m"; sourceTree = ""; }; - 804FEC4DEDB4A46FEFC6D24D7E65C2E5 /* SipHash-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SipHash-macOS-dummy.m"; path = "../SipHash-macOS/SipHash-macOS-dummy.m"; sourceTree = ""; }; - 81094266A97FA4A09C887251372B098C /* libCryptoSwift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCryptoSwift-macOS.a"; path = "libCryptoSwift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 82312C406689442ADA04A4FDC232ABF8 /* libSipHash-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSipHash-macOS.a"; path = "libSipHash-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 82C9C2F57398B910E4A0089E710BBAD4 /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; - 834A6EFE39EE6A9F2DC04AFA862FA91A /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; - 857EAAD791783A2C48E951BE7AB5CF59 /* SipHash-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SipHash-macOS-umbrella.h"; path = "../SipHash-macOS/SipHash-macOS-umbrella.h"; sourceTree = ""; }; - 869F03EDC2B24D2591CC86A7B5FD56B0 /* EthereumAddress-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-iOS-prefix.pch"; sourceTree = ""; }; - 873856E9190AE5B8652985DAC73FF8EB /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; - 874702FA185AB07E20694BD305534623 /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; - 8C1AE2C7C7CAE48D1076D3FB542DB358 /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; - 8C5DBA3C55976F3557DCEB82573D9BB6 /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; - 8C91D9C0D95A1407D72A9ECA8CF5FE82 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; - 8CA3ECEA3134878CB7A7290522C5150D /* SipHash-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-iOS-umbrella.h"; sourceTree = ""; }; - 8D489E3BD7EFF73F8DFEB5DC16FCCBED /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; + 618C45B65227C5DF2E02229A52E31853 /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; + 62925B4703EE0F25CD5AA9B0E1A697CC /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; + 630BA31F3A958609E3A13E56100BA045 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; + 642B2710251F761DDF9C3680D949C77E /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; + 6495EB11BB0CBD5F66F7C944D63BAD51 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; + 64CBD6E2A5A1C37DEF84883C5389E04D /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; + 653EDAB70FA4D1975C3FF6B6AD9965BA /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; + 66D10DA17CCD420FDD7BEB051B5E7EC9 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lax_der_privatekey_parsing.c; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; + 6764D7EDB7C2CDA1D9EFC2F9481A5A18 /* BigInt-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "BigInt-macOS.modulemap"; path = "../BigInt-macOS/BigInt-macOS.modulemap"; sourceTree = ""; }; + 67B360708114DFD3CEDA6F6661C38A1C /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; + 683B319B3BEC934DC1D090904F2E091A /* libStarscream-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libStarscream-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 69D87B68E67A99002EEC5252514B0D57 /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; + 6B75520BE742B11ACE9049044041CEBF /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; + 6BD80036AAC2D4906A6DC4A00686B974 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; + 6D3AF88C061AB1935F2E62ADB52F75A1 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; + 6DB206432F61D9036031DDB513864739 /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; + 6DF10515FED53A51CB96446E59F7D92A /* Starscream-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "Starscream-macOS.modulemap"; path = "../Starscream-macOS/Starscream-macOS.modulemap"; sourceTree = ""; }; + 6E8A3B02049CE51AE003FB430B2DC45E /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; + 6F95F54AA521C53B06A1B5C47F0CAFEC /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; + 6F9E33D8F1F7CAB653771A85C2BAD89F /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; + 72A1ED5B4495F73DD05A5AA27B169571 /* SipHash-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-iOS-dummy.m"; sourceTree = ""; }; + 73055400CFDDC0D498AED40ED3C4F66E /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = Classes/secp256k1/src/field.h; sourceTree = ""; }; + 73128202582D9212ED3EEF1632B8BA1B /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; + 7468138804EE36C6736709FDE028B1C9 /* BigInt-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-iOS-umbrella.h"; sourceTree = ""; }; + 74CE256ECB743201BB4E5F5025370CF0 /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; + 7586A4611F1EB5FD23A0A8E744A274BD /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; + 7696235BDA83DCE78CA15B9A3E55A1A1 /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; + 771BACECA893F1BB7DA72C1C37C44901 /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; + 78EBDC3D9006AB76A07C35035C8FE073 /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; + 79E6C73212DEA8321EE3C88B94BCB9D0 /* LogEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LogEvent.swift; path = Sources/LogEvent.swift; sourceTree = ""; }; + 7A3828E6D6F986A38840C154D9F00DDF /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; + 7A8D94568E75BC0B2DD85C4416156EB4 /* CryptoSwift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CryptoSwift-macOS-umbrella.h"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h"; sourceTree = ""; }; + 7ACCFC26305C31710462E830012C47F9 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; + 7CFD0D8D06315FCE4E2735F15C4E4576 /* BigInt-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-iOS-prefix.pch"; sourceTree = ""; }; + 7DA2BA56E31B1F804C357D0FCA532B41 /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = Classes/secp256k1/src/scratch.h; sourceTree = ""; }; + 7E4F85197D7BE39E43D18268B09B15E1 /* SipHash-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-iOS-umbrella.h"; sourceTree = ""; }; + 7F236CB40EB7129EFFEED9F5772CAB27 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; + 7F6D2648E7E5BC901A6F3A6C6EE27273 /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; + 81238A89E764F627AEECC1D25B13F568 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; + 81BFE7C860EC43A3D0A1FCD9166CEB49 /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; + 833388A687330F16FC8A34F917B53AA6 /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; + 83CDB5D980A9960D43528A4F958860B6 /* CryptoSwift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "CryptoSwift-iOS.modulemap"; sourceTree = ""; }; + 83CF9FFA86ED8F9A0AEE986500CB7589 /* Starscream-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Starscream-macOS.xcconfig"; path = "../Starscream-macOS/Starscream-macOS.xcconfig"; sourceTree = ""; }; + 83ED950A4869DED9E450F9688529398B /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; + 84D9F4887CFFEE4310D455E977073A4F /* libBigInt-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libBigInt-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 85249351EFF672E4E8D0C6EB02520237 /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; + 85644855873BB775CB3AFB67845C2923 /* secp256k1_swift-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "secp256k1_swift-macOS.xcconfig"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS.xcconfig"; sourceTree = ""; }; + 85E9F4CA2BAEA9F2E443DE34A3848896 /* BigInt-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BigInt-macOS-dummy.m"; path = "../BigInt-macOS/BigInt-macOS-dummy.m"; sourceTree = ""; }; + 86BE57B8F60161BC3E7710811A32B037 /* SipHash-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SipHash-macOS-dummy.m"; path = "../SipHash-macOS/SipHash-macOS-dummy.m"; sourceTree = ""; }; + 8757B059CC71702C833348E0C2B66AED /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = Classes/secp256k1/src/group.h; sourceTree = ""; }; + 877AAAF7B5AB6E1D5F6E9AFE46EECAE1 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = secp256k1.c; path = Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; + 87B32EE8714C2211CAE250E62DA1B830 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; + 887F81E9A3628F15BCDC3711D6179AC6 /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; + 890C8F02CF4AA887B1BDDEBB58153093 /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; + 8A765C09E2790502B46527F61B90C054 /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; + 8D12388DAD3F6EC1CF276AF7CF4CA70C /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; + 8E36E41B931A0607A052B6C64E0179D9 /* PromiseKit.root-CorePromise-Foundation.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "PromiseKit.root-CorePromise-Foundation.xcconfig"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.xcconfig"; sourceTree = ""; }; + 8E52615162EAD94FE296E5B7F2C50D3F /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; + 8E7A46513E450FED264F98BA912BB81B /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; 8E9773490FE3E392A59E69B644513832 /* Pods-web3swift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-iOS-dummy.m"; sourceTree = ""; }; - 8F9FE46BD8AC65F3CF39F89C0D3E30A0 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; + 8F2EFCBA807835B3E69C3BBA665D0832 /* CryptoSwift-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CryptoSwift-iOS.xcconfig"; sourceTree = ""; }; 8FC512BB88EF08D181A1D5340C3EF5A2 /* Pods-web3swift-iOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-iOS-acknowledgements.markdown"; sourceTree = ""; }; - 90A45305369B3DECB692523E56B4F23E /* EthereumABI-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumABI-iOS-prefix.pch"; sourceTree = ""; }; - 90BAEC86C0709CB2166B55DE9A70C099 /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; + 916B26D7C0B39968C903C493B32AF440 /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; + 91B2C1CB3CCA65D8206D68C219428919 /* CryptoSwift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CryptoSwift-macOS-dummy.m"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-dummy.m"; sourceTree = ""; }; + 91E499D98A7C49A97B25A5A3DFBD1021 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; + 92204375C968330E8EFF8AB65E0F7925 /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; + 930F74C7F566FF983C697F22EBFC996E /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; + 931BB4820501F199F978D3C2ADD352A0 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; 97094F93C66747990ACAF33CA0A5A034 /* Pods-web3swift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swift-iOS-umbrella.h"; sourceTree = ""; }; - 977EB9C15469AD0FAC5C4C47DFCA1E44 /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = Classes/secp256k1/src/num.h; sourceTree = ""; }; - 981C052F09397EE9506712DC4B7F2C14 /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; - 98627823FFA064CF7DFF9D20FD59595E /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; - 98D10A3A0BF6FA4534DF828C3950FFA1 /* EthereumABI-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EthereumABI-macOS-dummy.m"; path = "../EthereumABI-macOS/EthereumABI-macOS-dummy.m"; sourceTree = ""; }; - 9959A387FE97F5EE015FF46981A32E87 /* Starscream-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Starscream-iOS.xcconfig"; sourceTree = ""; }; - 998E4267B14D6FCC02485CC22984717A /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; - 9BBD7BCB8DE7F5FD70D5A15359F58F94 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; - 9D5AB068E1914C42B09569231AEB2B4B /* libEthereumAddress-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumAddress-macOS.a"; path = "libEthereumAddress-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9E07D550DE80C5CE390AEDE911947858 /* BigInt-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-iOS-dummy.m"; sourceTree = ""; }; - 9E37727AE5487A48443C301030F61A6D /* SipHash-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SipHash-macOS.xcconfig"; path = "../SipHash-macOS/SipHash-macOS.xcconfig"; sourceTree = ""; }; - 9F57FA7DB572E3F83C8C5DFA6FC1B57A /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; - 9F901BE3FEDA6433846929FD0B9A39B5 /* CryptoSwift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-iOS-dummy.m"; sourceTree = ""; }; - A0E4286FA50E0C4B204B68B307246B1F /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; - A238F5B6F2D22DB74709581576A9D2ED /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; + 97E20AB170F4A54932380A2FFF476E4D /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; + 99A28CD76DE93484A23853D178955072 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; + 99CA87C90C2CE0FD4F5BEB20AFEB1833 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; + 9B959C972252CA017C64A5A8FE37D50F /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; + 9CA248A95357A312A09B0568C297487A /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; + 9CF6333DFB0F12D60F1E00966621A871 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; + 9D692FCA6198D6487DA18678723BB0E8 /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9E13CD510B8B4FFE1C33845B056172F8 /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lax_der_parsing.c; path = Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; + 9F38BA9962689772EDA0506F2A3254E4 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; + A09B0D5FCD0E2E1B27A4E69416D49470 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; + A19028C07CC5114417C5A7D9761EF32F /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; + A193A3A9CAA68869C4DC5357C9177636 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; + A2E5FA56A9EEFC15044BCEC743F89E9E /* libCryptoSwift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libCryptoSwift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A3D70250D3375C1BE5D87EF9527DCEC3 /* Pods-web3swift-iOS_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-iOS_Tests-acknowledgements.markdown"; sourceTree = ""; }; - A657B8DA6662B1DC092AD8211ADC6E9A /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; - A6D1367804F4BB564BD046352AA73051 /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; - A85F30A26655A31C1BF18B20DB1960AB /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; - A92682F12710C31879D2D90258C95F5E /* EthereumABI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumABI.h; path = EthereumABI/EthereumABI.h; sourceTree = ""; }; - A93D2B333FE5DA099A1F18627C6403E7 /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; - A9BAD2F4A3F751D55DF856D0FC83C832 /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; - AA3CA96A1C96C617C6CDC66E3C5CFD15 /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; - AA5B022BA90C1E7F2A1109BB9952114C /* BigInt-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-iOS-umbrella.h"; sourceTree = ""; }; - AB1F32B67BA1C0835300910DAB00B988 /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; - AB5ED8646AD184C3A56823038022EC7F /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = Classes/secp256k1/src/scratch.h; sourceTree = ""; }; - ABDE1423620E7328160252D81BC3CA03 /* Starscream-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Starscream-macOS-prefix.pch"; path = "../Starscream-macOS/Starscream-macOS-prefix.pch"; sourceTree = ""; }; - AC89570C769D238D7D55E8628584BBE4 /* ABIExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIExtensions.swift; path = EthereumABI/Classes/ABIExtensions.swift; sourceTree = ""; }; - AD8CD832FD8B563E6275F7D3E39363CA /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; - ADB725BC454EEFCD74C10F77686A1113 /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; - ADFA8F29970BDFA7BB5A7C2555BCD781 /* secp256k1_swift-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-iOS-prefix.pch"; sourceTree = ""; }; - ADFE39854E55F2A02E8D83EBD7E58254 /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; + A4CD3F94452C7F2EB5C3EC9C7071BCEB /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; + A571169D0C0DC6E60C6C1B152B85B6B7 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; + A73EA60796E2773612856EFBB6FA1C1D /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; + A7CCB554E0C3A9A3E2036421C7676816 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; + A7EC0B885851718878974A7B10FEE4C7 /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; + A88D046EB24F71921D96094E3C23FFA5 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; + A89C12D62DCE512AE5FBA7F84A812996 /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; + A8C67AE49421A3140D2FF135EF89ED5C /* Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Compression.swift; path = Sources/Starscream/Compression.swift; sourceTree = ""; }; + AB1839C3A694AAC21963034A492718BA /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; + AC4323CE892933690661BA7A1161EB00 /* CryptoSwift-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CryptoSwift-macOS-prefix.pch"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; sourceTree = ""; }; + AC63A51025DC620E2A53A12221675AD8 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; + ACA66ED3153B842E99B0EF43957CEE02 /* Starscream-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Starscream-iOS.modulemap"; sourceTree = ""; }; + AED1903AE50239CD3AEBA796CFBC6C00 /* SipHash-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "SipHash-macOS.modulemap"; path = "../SipHash-macOS/SipHash-macOS.modulemap"; sourceTree = ""; }; + AF7856EE7C3C1F5C882290EE961EAE61 /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; + AF9DC97246696CC9791EA7219ED77609 /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; + AFC1C755F5C2F88999DCFF42701D573A /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; + B07AEDC66415BF92E7A4E0DA3AA93846 /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; + B07BD2F31E17F121E34CB8E0ABE07922 /* BigInt-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "BigInt-iOS.xcconfig"; sourceTree = ""; }; B0E783134B8D0D141409C244D06F708F /* Pods-web3swift-iOS_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-iOS_Tests-dummy.m"; sourceTree = ""; }; - B113F7A90CDF5F2B3C198D7A162BCE5B /* secp256k1_swift-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1_swift-macOS-prefix.pch"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; sourceTree = ""; }; - B17DC3F7D16756107DB8B2C742718669 /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; - B19493893227F9EA7DA865FA170BC75F /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; - B2726DFCF39AE67A76395E9DA733E93D /* libsecp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "libsecp256k1-config.h"; path = "Classes/libsecp256k1-config.h"; sourceTree = ""; }; - B414DCA754533B2497E413195353037D /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; - B469FEEFD4DEDA89819045EEEB18538F /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; + B1A8A7846779319B5AF7B7FD7678E2F7 /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; + B248E0EA0BDC1DBC771D06F08042E3B6 /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; + B40E698A102CB11557BE911B8A3C3C35 /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; + B47314191D456625014BBB09321D876F /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; + B5D2754B07E8E3D474CE75E531696D33 /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; + B609FCFC1B164358EC6F6AA0000EE522 /* libPods-web3swift-macOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-macOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B619B89D0FCE9B83778A0D1EE84D252A /* Pods-web3swift-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-iOS.debug.xcconfig"; sourceTree = ""; }; - B6371F5CFF9A16BD324415D744F33531 /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; - B6926D4618AA462E2F5B99E363041692 /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; - B69BDAA9D2AFAF904C0802EED1918D83 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; - B6A5F98902F7066D66657126D0CECF25 /* RLP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RLP.swift; path = Classes/RLP.swift; sourceTree = ""; }; - B6BCF9A48B01832EF9C2384895B10C32 /* WebSocket.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = Sources/Starscream/WebSocket.swift; sourceTree = ""; }; - B709CE33931E0C8E75247B4E76D89D5D /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; - B814FA161C5906F9DF755A65BBC66AEA /* BigInt-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "BigInt-iOS.xcconfig"; sourceTree = ""; }; - B824FF3D1B5984A95C100C08666F2896 /* EthereumAddress-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EthereumAddress-macOS-dummy.m"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-dummy.m"; sourceTree = ""; }; - B84C48CEECDD98F374D9F5616427EB17 /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; - B86C2174B142F67C7A0A5B9F9ADC0C14 /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; - B961DFA6EA054CD31302DED1A6967059 /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; - BA706BD339992057A08F7E53A5147BF8 /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; - BAF00A025FF916C83BCF0E5853AABAFE /* PromiseKit.root-CorePromise-Foundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PromiseKit.root-CorePromise-Foundation-umbrella.h"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h"; sourceTree = ""; }; + B66B81D2CC11A42B29DF35C11CFBF7A7 /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; + BB4ECF518982380D91EAF6F6A8E3422E /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; BB6E1B3EFEB698FADF96BBF004079EB0 /* Pods-web3swift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-macOS-dummy.m"; sourceTree = ""; }; - BC56686BF0218B6C5E011425D8558740 /* libEthereumABI-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumABI-iOS.a"; path = "libEthereumABI-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - BC996D26C0B6C88133784FFF9B0D3535 /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; - BE7617FADACF30EC73DDD5DA3EEA2689 /* SipHash-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SipHash-macOS-prefix.pch"; path = "../SipHash-macOS/SipHash-macOS-prefix.pch"; sourceTree = ""; }; - BF171FEA3655CACF1B6B9C6F85586945 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; - BF231834D762125E63881191D14D68E2 /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; - BF499901EB24B63A873FD3D4CDF092DE /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; - C1326A835DF33C20CE38ABD87049E2E1 /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; - C2B9925CFA50A6F14B49FF67EB875DC1 /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; - C2D9C6231E62A77969C8FEF05E22002A /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; - C2E6B3EC11027F0EEFB3213EF1B0DEE9 /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; - C306FE6A77B894436983FE71A345064D /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; - C513C9170720D38D5EEAB9DE6700A904 /* secp256k1_swift-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "secp256k1_swift-iOS.xcconfig"; sourceTree = ""; }; - C5343C2355FC862E74DB99D600421545 /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; - C5DB48233819C65AF4935AE6E595CEB2 /* secp256k1_swift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "secp256k1_swift-iOS.modulemap"; sourceTree = ""; }; + BBCDE0F2D7072617433CA92E2139172F /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; + BBF326A733AAA3B47C05B5B6B9054A45 /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; + BD9A29069B343985701DF745DF077C1B /* BigInt-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BigInt-macOS-prefix.pch"; path = "../BigInt-macOS/BigInt-macOS-prefix.pch"; sourceTree = ""; }; + BDA93F1AF94CABEC2ABC4A016F78439E /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; + BE83D3F4A88261D1B818A5FEC1D80E2D /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; + BEBF981EA3E9083454CEC5A42DEFA926 /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; + BF66742E976C83F1C40D0CF4A0D0EC77 /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; + BFDD3C72C8D3B43836068099396D69F8 /* CryptoSwift-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "CryptoSwift-macOS.xcconfig"; path = "../CryptoSwift-macOS/CryptoSwift-macOS.xcconfig"; sourceTree = ""; }; + C000A48B6E93B9BB6102E649CD510752 /* Starscream-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-iOS-umbrella.h"; sourceTree = ""; }; + C0C77DD993F7E165460EC0DCE198706F /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; + C0DF4055EC83B4434B270E053E674E85 /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; + C0F56F179803DB6CBDA31DEB40AAA523 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = Classes/secp256k1/src/eckey.h; sourceTree = ""; }; + C1005427FDE289DE86E4FC1FE58E66E7 /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; + C149F16ADBF78E5ED95460B8783C8519 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; + C1EB7C609DEF82CF47B51F78AD1D46F2 /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; + C23B3D828DED4F74CD73C1DAC483E86C /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; + C3F41C2D3B6B20B5DF73C37340343CF4 /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; + C551D6AEFD48F300E5BF895DF2CE0C64 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; + C5D97D113E11DDD7067C70CF4517DAF7 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; C64A45D5899976EB37ADDA682CE0E1B6 /* Pods-web3swift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-web3swift-iOS.modulemap"; sourceTree = ""; }; - C6D15773B216D17D4F691E62FF8CA3EF /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; - C742B85EDF338401A2BBA47FB717ED4D /* SwiftRLP-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-iOS-umbrella.h"; sourceTree = ""; }; - C76CBAF8958BC38DD11D5CAEEDC99155 /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; - C7DBFB0E7F7A154749D8E78C95795D7F /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; - C80600472825A42BC22050F65CAC4B69 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; - C856A3750DB25449B35FB4F2DA792010 /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; - C85CA494E1B45835376DCB1DF09D0AFD /* PromiseKit.root-CorePromise-Foundation.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "PromiseKit.root-CorePromise-Foundation.xcconfig"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.xcconfig"; sourceTree = ""; }; - C8B57AA627BE7FC2E77F5EE8C075A9D8 /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; - C942FD24C16D9A69749A423B486198C4 /* libPods-web3swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-iOS.a"; path = "libPods-web3swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - C9CF0275E8A1D7A2B41F5A774A5F0ED6 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; - C9D54F15860A8B2E652E63AA2D090659 /* CryptoSwift-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-iOS-prefix.pch"; sourceTree = ""; }; - CC7461212125423AEA8ED778FBD5567D /* BigInt-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BigInt-macOS-prefix.pch"; path = "../BigInt-macOS/BigInt-macOS-prefix.pch"; sourceTree = ""; }; - CE81C70D926AE4F7E807EF9555BFDB79 /* libSipHash-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSipHash-iOS.a"; path = "libSipHash-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - CEB68DC5D38C8F56B600BAB0C79FAFBD /* SipHash-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "SipHash-macOS.modulemap"; path = "../SipHash-macOS/SipHash-macOS.modulemap"; sourceTree = ""; }; - CEF6648B4DD0C5CC4CE72794C77BF6BC /* EthereumABI-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumABI-macOS-prefix.pch"; path = "../EthereumABI-macOS/EthereumABI-macOS-prefix.pch"; sourceTree = ""; }; - CEFB3AC9CC56D3115091656B23154192 /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; - CFB8DB629080336526ECA20A84C627D4 /* Starscream-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Starscream-macOS-umbrella.h"; path = "../Starscream-macOS/Starscream-macOS-umbrella.h"; sourceTree = ""; }; - D05135AEC6E4F9A692EB6BDAD910A12F /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; - D183F9D3C06EABCE6D95F208554569D0 /* SwiftRLP-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "SwiftRLP-iOS.modulemap"; sourceTree = ""; }; - D246F10F03D88257A18C3B5758B6ED34 /* EthereumAddress-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumAddress-iOS-dummy.m"; sourceTree = ""; }; - D3B12F7827FEDC820149590DF2F51E63 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; - D478FD26E9B06D4AF421D0A847F05CB7 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; - D62D03C802FE484FA46F8B981FFE7FEC /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; - D6E686544EF4C8C633FE41EF2CEC1826 /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; - D752DC0BF982B73696FF172811AC786B /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; - D7939B57B76F4EC762DDB703A9633C24 /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; - D798937D9F18187B1383DE6A6CBA529A /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; - D803BF15A3E1F518698E5C2D8C4EB795 /* secp256k1_swift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_swift-iOS-dummy.m"; sourceTree = ""; }; - D837D11202B852A34D063D539CC1E3FE /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = EthereumAddress/Classes/Extensions.swift; sourceTree = ""; }; - D8868B1AA7A89468B716687B08EBDC9E /* libSwiftRLP-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSwiftRLP-iOS.a"; path = "libSwiftRLP-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - D9523141DD1B656335F02284D93ED090 /* ABIElements.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIElements.swift; path = EthereumABI/Classes/ABIElements.swift; sourceTree = ""; }; - D9AA784AE92F708FBBB1EC6F903AD81A /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; + C7458B47F20786820DFD6E8A561373E3 /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = Classes/secp256k1/src/num.h; sourceTree = ""; }; + C832CAF6EED818EF0E9207A20BBF7385 /* SipHash-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "SipHash-iOS.modulemap"; sourceTree = ""; }; + C8A47EEF6074E91C89042CC4CF9FE790 /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; + C9FAE30EFA33F0294739AB297F3730CD /* libsecp256k1_swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsecp256k1_swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + CC035554AD40C3F7142AEF0048BEB70E /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; + CC5240B4781ACBC6F0CC4CC1D226859E /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; + CC52705E4A76D1521111C9EE6397FCA0 /* CryptoSwift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-iOS-dummy.m"; sourceTree = ""; }; + CC79EE0DCA4B60DBB457B60C688C207F /* SipHash-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SipHash-macOS.xcconfig"; path = "../SipHash-macOS/SipHash-macOS.xcconfig"; sourceTree = ""; }; + CCACB4DE2A8E1A481DE0EDC3DD135956 /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; + CE0C8D2AC17DB2D5D8738946396BEDC0 /* Starscream-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Starscream-macOS-umbrella.h"; path = "../Starscream-macOS/Starscream-macOS-umbrella.h"; sourceTree = ""; }; + CFDBB39B4192E81DAA1EA5CA82A584A7 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; + D0B783E77D6EB5976452B23E5884B464 /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; + D1BAD2B34BFA26259BEEAF113B7AB672 /* libPromiseKit.root-CorePromise-Foundation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPromiseKit.root-CorePromise-Foundation.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D394066B2E46CE1FEECF341A753FFA6D /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; + D4D5FA08D5CAA0932F363784006A6984 /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; + D66A9F054A063BD046DA3EB26245B11E /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; + D8486D8526A78CFE2EF4EC906F4A0A18 /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; + D8C179B70319D11D98FC38396E9CE78A /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; D9B844AC37A6A6A913DB8D26AAC995C5 /* Pods-web3swift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swift-macOS-umbrella.h"; sourceTree = ""; }; - DA74424254B5E6BA2DAC23538953B3B8 /* PromiseKit.root-CorePromise-Foundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PromiseKit.root-CorePromise-Foundation-dummy.m"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-dummy.m"; sourceTree = ""; }; - DABB16DE6F842BC5F7C1FA8AE65F3C2B /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; - DAE05C0D2A232189FD47CCAA74FCB9E1 /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; - DB8537B1DE0AF0B2EAEBB180E4592606 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; - DBBC706EF59E15A0734C6C32840C4DF8 /* EthereumABI-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "EthereumABI-macOS.modulemap"; path = "../EthereumABI-macOS/EthereumABI-macOS.modulemap"; sourceTree = ""; }; - DBC65E597AF9D5E83BB91E20DA536A2C /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; - DDDC508FCBB5F36808D65C3C674F007A /* SwiftRLP-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SwiftRLP-macOS-prefix.pch"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch"; sourceTree = ""; }; - DDDCC2D78C86E0D3B5D7F386CC02350D /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; - DE3FE1B6E1523279B964529705639B3C /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; - DFA33456BBF3A81EF266736D5EFCD104 /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; - E0594C88C1F35FA748FA6FC94E973FA3 /* EthereumABI-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "EthereumABI-iOS.modulemap"; sourceTree = ""; }; - E0FB31E65F41C13C1EBEE6A9EC943D0C /* SwiftRLP-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SwiftRLP-macOS-dummy.m"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-dummy.m"; sourceTree = ""; }; - E17833B43F970EABB91E7CAFCCC1D9F1 /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; - E1D8C5087E61C7F371B173A450F5ACB2 /* SwiftRLP-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SwiftRLP-macOS.xcconfig"; path = "../SwiftRLP-macOS/SwiftRLP-macOS.xcconfig"; sourceTree = ""; }; - E2C009D2A4A1D0A320D910113F2E8E83 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; - E45A96C016E09A710D203C8CBCA1CC17 /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; - E4707EC7A4D80C89519E38548D90ED30 /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; - E54F5880B3D7EC60B0CDF9C10B012452 /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; - E5669A7EE3FEBAEBFDB1EA9C03E6F26A /* libPods-web3swift-macOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-macOS_Tests.a"; path = "libPods-web3swift-macOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - E5F7881BFABC825DDDAE7BC87CCF2F5A /* ABIParsing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIParsing.swift; path = EthereumABI/Classes/ABIParsing.swift; sourceTree = ""; }; - E5FAEC0C19B3262A6F246B95124C4A99 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; - E64CA6EFE09783E2A721986274EE9ECE /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; + DA0722A278ACD20B9304F4FE7DAA22D5 /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; + DA4B10A7801FFA5184E69E581DD4BDD2 /* libsecp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "libsecp256k1-config.h"; path = "Classes/libsecp256k1-config.h"; sourceTree = ""; }; + DAB11100CBF2C34B0C25F868B02D3E26 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; + DB7266342A9EBC8B7442D5901610483A /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; + DBAFC664C928E8E144EE2E7881435515 /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; + DD3A22CA727BED8B76A60015627FA7D8 /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; + DE1EFB69CC3055F1503CF6B27E7B0BE9 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; + DF45EF3C4580F6BD4DA8649207ADB054 /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; + DF59C2A7C3C356BD27702917CFCA4DA8 /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; + E0DE3C35CDEDF8D78B169CCD73F353F2 /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; + E22380AC7BD1E3273FC9EE2E44BCD08F /* secp256k1_swift-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1_swift-macOS-prefix.pch"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; sourceTree = ""; }; + E59A72B7BDF7D4F8AB5E3A346DA79DE7 /* secp256k1_swift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1_swift-macOS-umbrella.h"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h"; sourceTree = ""; }; E7D99D8968EF613FE8D38FF29AABC097 /* Pods-web3swift-macOS_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-macOS_Tests-dummy.m"; sourceTree = ""; }; - E85A0961ED2B533E0550BFCFDA420BDC /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; - E984EF9D6554D3AEDDC5E172A0E0BD72 /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; - ECF3FA28CBE557FA60588B18EA6AE573 /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; - EFD4227B942CE70ACCC835E6BBEB35CA /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; - F0937B20C1C28BD4A95220D8278C0BAB /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; - F148086957881C86AC004FA762E2DE18 /* secp256k1_swift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "secp256k1_swift-macOS.modulemap"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap"; sourceTree = ""; }; - F1543F15D7A392EF250460DC3BAFB1BB /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; + E831BD47ABF5DC7F071EE5F38159A36F /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; + EAA23D84D0877D4153AFEBFB3FB8D870 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = Classes/secp256k1/src/scalar.h; sourceTree = ""; }; + EAE7EA4ACC152062B41C0E0022105F70 /* libPods-web3swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + EBBF7CB3CEF86D2FCB1F2A756F8D3CE8 /* PromiseKit.root-CorePromise-Foundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "PromiseKit.root-CorePromise-Foundation.modulemap"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap"; sourceTree = ""; }; + EDB1502B2FC1EB700D835A8CCF5CFE21 /* libCryptoSwift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libCryptoSwift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + EEB2361281B0541EE92FEDE7A4E0F6EF /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; + EF4C848FB0F51A14C06D1C7DA3478DFF /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; + EF5CD2317D91CF3B4EE9D9FE536EACEC /* Starscream-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Starscream-iOS.xcconfig"; sourceTree = ""; }; + EF8988CD6D4E89092524AB136974B383 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; + F01025C6D323D833DF7384CA21560AAE /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; + F101D6CF40D7F4694116ACF526EEB96A /* SSLClientCertificate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLClientCertificate.swift; path = Sources/Starscream/SSLClientCertificate.swift; sourceTree = ""; }; + F10B99718BD2A1F01F570CD3A48C92C2 /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; F1C08FC41B8AB863E291DC3E4A321B78 /* Pods-web3swift-macOS_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-macOS_Tests-acknowledgements.markdown"; sourceTree = ""; }; - F2C80E731F6754B9AEF54D249BFCC6C4 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; - F51B31FCC16294985DD51A383F5EEA1C /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = Classes/secp256k1/src/field.h; sourceTree = ""; }; - F61EE5E7CEB295F84F7776DC7334E877 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; - F6E560E43A25FA0AB7E707AE850B504F /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; - F6F5E183E707AD82165C551C7480ABF1 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; - F73C36BE59D8447897AC55092730A868 /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = Classes/secp256k1/src/util.h; sourceTree = ""; }; - F8C6E174E18F006C8EB43EC02A8FE3D8 /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; - F962FBE50972DFDC955EE9A1D6F26D28 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; - FCC8BC5E7A71B1F43B89B3EAA301AED8 /* libPods-web3swift-iOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-iOS_Tests.a"; path = "libPods-web3swift-iOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - FDC94D4670B217F4BF300EE8DF2EDBE4 /* Starscream-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "Starscream-macOS.modulemap"; path = "../Starscream-macOS/Starscream-macOS.modulemap"; sourceTree = ""; }; - FDD5FF297FA7350FDD93F56157E2E2FF /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; + F4085E90F59B8EE8025AD442CD9F3311 /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; + F537264ACA681D6FCAF2DA683CD3175E /* secp256k1_swift-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-iOS-prefix.pch"; sourceTree = ""; }; + F618884500C0A49CA9D9B5658843961F /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; + F6696E50C866E9828090B6178AF3C7CC /* BigInt-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "BigInt-macOS.xcconfig"; path = "../BigInt-macOS/BigInt-macOS.xcconfig"; sourceTree = ""; }; + F79CB0EB6597A6EDC54750BA2A60677A /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; + F99B3DB488BEB064AB7A9230B18B29EE /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; + F9F44FEB52A96A2387B75A25F9D9F2E4 /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = Sources/CryptoSwift/Scrypt.swift; sourceTree = ""; }; + FA67FBCC3656509F23DC76392A853371 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; + FBA95F1E7ACF0161CBC476907408FDEB /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; + FC7066B3F5257C3F62F8E9181B71DF23 /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; + FC8CB0533AA3C4EE8640E3020CD5656A /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; + FCAE87BED1CF20813A9CB30CB5ADE8AF /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; + FD0437C77FB2F98D55AFD1FBDC4B37C0 /* secp256k1_swift-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "secp256k1_swift-iOS.xcconfig"; sourceTree = ""; }; + FDCAFACF0DC261812D322C21C2BAB003 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PromiseKit.root-CorePromise-Foundation-umbrella.h"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 02E2FBA88DABD75BA783291235FB891E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 041878F5A032D6842FD2CE30E9F0BB4F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1096,35 +890,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 3334DFE1F78FB7782C3C594C41AAA008 /* Frameworks */ = { + 297A0939C2D0C2C6BB00683CF67FC1A1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 33E900EB2D311F839B2F2F9E22019B2B /* Frameworks */ = { + 3334DFE1F78FB7782C3C594C41AAA008 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 4D1B1D2D12AAF76C36E9463D20F7C032 /* Frameworks */ = { + 33E900EB2D311F839B2F2F9E22019B2B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 5844E7DD883808D3433316615CF9C012 /* Frameworks */ = { + 377A42523AFCB85BB0530B75F66D286D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 5DD0EE1D9F343F82AC70C610CA215BA8 /* Frameworks */ = { + 4D1B1D2D12AAF76C36E9463D20F7C032 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1145,28 +939,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9D4B54990055702C33164B3DAC711967 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A1C29AA1B0A0655F03EBF68C31357B32 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BF3B4863186DDED81AEC47612F7B2623 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C3B1195598DCC55AFD13F8A4EAEB7FE6 /* Frameworks */ = { + C3E60290D6F71E50D2155B63D5CAE610 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1180,21 +953,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DC5833E9151F76136A6224E15707D305 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E3B3E4B3992B370F5F4CC6A4F747CD9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ED637A867D15BEEBD555E43AB8DC3685 /* Frameworks */ = { + E269B8691503F938463E7DCA530ABDB3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1211,158 +970,96 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 00D2ECAA01AB223680CE3ECE45E3B513 /* secp256k1_swift */ = { - isa = PBXGroup; - children = ( - F962FBE50972DFDC955EE9A1D6F26D28 /* basic-config.h */, - CEFB3AC9CC56D3115091656B23154192 /* ecdsa.h */, - A6D1367804F4BB564BD046352AA73051 /* ecdsa_impl.h */, - 05596F76EAC2A61FD7625823DC488551 /* eckey.h */, - 981C052F09397EE9506712DC4B7F2C14 /* eckey_impl.h */, - 0E01CFFDCEDDDCABD59A31B7EB69E9DE /* ecmult.h */, - DAE05C0D2A232189FD47CCAA74FCB9E1 /* ecmult_const.h */, - ADB725BC454EEFCD74C10F77686A1113 /* ecmult_const_impl.h */, - C2E6B3EC11027F0EEFB3213EF1B0DEE9 /* ecmult_gen.h */, - 259BD2FAAD513765CB02BA975A0BA669 /* ecmult_gen_impl.h */, - 08ED86A5F3A6098AC8193A1412BA0357 /* ecmult_impl.h */, - F51B31FCC16294985DD51A383F5EEA1C /* field.h */, - A238F5B6F2D22DB74709581576A9D2ED /* field_10x26.h */, - 168239DB48F2C0DEB1D2D73295F556AD /* field_10x26_impl.h */, - 50882954044EA934A9C57877220EE29C /* field_5x52.h */, - B19493893227F9EA7DA865FA170BC75F /* field_5x52_asm_impl.h */, - E85A0961ED2B533E0550BFCFDA420BDC /* field_5x52_impl.h */, - 0527E6B94F781FC38F1E041D48897CA9 /* field_5x52_int128_impl.h */, - 873856E9190AE5B8652985DAC73FF8EB /* field_impl.h */, - 2378E9B88E5CD07C799D5E271D8B82B8 /* group.h */, - 8C1AE2C7C7CAE48D1076D3FB542DB358 /* group_impl.h */, - 43DE4AFA65A55712FB2E22A4D0808552 /* hash.h */, - 56FC04DFDECA01D4A3CC74702800B629 /* hash_impl.h */, - 72A0F3D157B6FF7544997435C8C2653A /* lax_der_parsing.c */, - 14B167377B2F0A618F50B7B7C6806B20 /* lax_der_parsing.h */, - 1B84D8BD6AA21608D7C1F367D7A228AD /* lax_der_privatekey_parsing.c */, - 0ECD101929431D17696D4E479E2191F2 /* lax_der_privatekey_parsing.h */, - B2726DFCF39AE67A76395E9DA733E93D /* libsecp256k1-config.h */, - D798937D9F18187B1383DE6A6CBA529A /* main_impl.h */, - C7DBFB0E7F7A154749D8E78C95795D7F /* main_impl.h */, - 977EB9C15469AD0FAC5C4C47DFCA1E44 /* num.h */, - C856A3750DB25449B35FB4F2DA792010 /* num_gmp.h */, - 589937E90DBD42643A3BB7C0F8E1CB6E /* num_gmp_impl.h */, - B84C48CEECDD98F374D9F5616427EB17 /* num_impl.h */, - 361FA6E8F841E7B9BE7AA982EFBC3A90 /* scalar.h */, - 1C77233EDBFE88FFF7D996071BFEF9FF /* scalar_4x64.h */, - ECF3FA28CBE557FA60588B18EA6AE573 /* scalar_4x64_impl.h */, - 56CD10FF531B107D40A576BBB22E0276 /* scalar_8x32.h */, - A0E4286FA50E0C4B204B68B307246B1F /* scalar_8x32_impl.h */, - 19C878797582D0612D89FF481F3A2AF2 /* scalar_impl.h */, - C2B9925CFA50A6F14B49FF67EB875DC1 /* scalar_low.h */, - 2313F89A5AEB8DD926DBBDFC3D842668 /* scalar_low_impl.h */, - AB5ED8646AD184C3A56823038022EC7F /* scratch.h */, - F1543F15D7A392EF250460DC3BAFB1BB /* scratch_impl.h */, - FDD5FF297FA7350FDD93F56157E2E2FF /* secp256k1.c */, - 7EC5795AC0B3B95BE65438DD06CE5775 /* secp256k1.h */, - 7C57AA209A6E63301C96AC826A79072C /* secp256k1.swift */, - 28E99B9CFB57C13F2AFD6FEE4E6D506E /* secp256k1_ecdh.h */, - 4720B3151FA9FFC928C7EA4CFF52990D /* secp256k1_recovery.h */, - F73C36BE59D8447897AC55092730A868 /* util.h */, - 11140B5CF2409376A7AD34881952F554 /* Support Files */, - ); - name = secp256k1_swift; - path = secp256k1_swift; - sourceTree = ""; - }; - 0799DB588221DAD122DB681403471854 /* Support Files */ = { - isa = PBXGroup; - children = ( - 0A215BAB370000F46CA2358716353615 /* BigInt-iOS.modulemap */, - B814FA161C5906F9DF755A65BBC66AEA /* BigInt-iOS.xcconfig */, - 9E07D550DE80C5CE390AEDE911947858 /* BigInt-iOS-dummy.m */, - 1A4886516123ECBCE7F5D4635F3EE2BF /* BigInt-iOS-prefix.pch */, - AA5B022BA90C1E7F2A1109BB9952114C /* BigInt-iOS-umbrella.h */, - 7704EE196A8AFC3848D8EB74CCA3CBF6 /* BigInt-macOS.modulemap */, - 757F0523F822A331D6621CE7DD987F30 /* BigInt-macOS.xcconfig */, - 7FB178190CC33A5491DA22006A2D8421 /* BigInt-macOS-dummy.m */, - CC7461212125423AEA8ED778FBD5567D /* BigInt-macOS-prefix.pch */, - 7EC37B098A9AE8541D075182A9F4E648 /* BigInt-macOS-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/BigInt-iOS"; - sourceTree = ""; - }; - 0BEB8C42C8CD25CBCEC39C7A552E1322 /* Foundation */ = { - isa = PBXGroup; - children = ( - 4FF6D28B7D45E393BA716CDC226035DC /* afterlife.swift */, - 90BAEC86C0709CB2166B55DE9A70C099 /* NSNotificationCenter+AnyPromise.h */, - BC996D26C0B6C88133784FFF9B0D3535 /* NSNotificationCenter+AnyPromise.m */, - 874702FA185AB07E20694BD305534623 /* NSNotificationCenter+Promise.swift */, - AB1F32B67BA1C0835300910DAB00B988 /* NSObject+Promise.swift */, - B709CE33931E0C8E75247B4E76D89D5D /* NSTask+AnyPromise.h */, - 5391BD602497E51701C1533DE7DFB656 /* NSTask+AnyPromise.m */, - B17DC3F7D16756107DB8B2C742718669 /* NSURLSession+AnyPromise.h */, - 1DDF3D294089BB0BD9506A83E1115D5D /* NSURLSession+AnyPromise.m */, - 3F1E2B1C1E824F624C378758F6EA7541 /* NSURLSession+Promise.swift */, - 0ABC685610BED914143495E9E29E6B4B /* PMKFoundation.h */, - C306FE6A77B894436983FE71A345064D /* Process+Promise.swift */, - ); - name = Foundation; - sourceTree = ""; - }; - 11140B5CF2409376A7AD34881952F554 /* Support Files */ = { + 11EC31813703ACA120A075B0DD8C6306 /* Targets Support Files */ = { isa = PBXGroup; children = ( - C5DB48233819C65AF4935AE6E595CEB2 /* secp256k1_swift-iOS.modulemap */, - C513C9170720D38D5EEAB9DE6700A904 /* secp256k1_swift-iOS.xcconfig */, - D803BF15A3E1F518698E5C2D8C4EB795 /* secp256k1_swift-iOS-dummy.m */, - ADFA8F29970BDFA7BB5A7C2555BCD781 /* secp256k1_swift-iOS-prefix.pch */, - 61ACBF2F72668E8349A9415D01D85A4D /* secp256k1_swift-iOS-umbrella.h */, - F148086957881C86AC004FA762E2DE18 /* secp256k1_swift-macOS.modulemap */, - 004B658D46146FB1F435C5BA92529902 /* secp256k1_swift-macOS.xcconfig */, - 333F5852A331E94C5A92068FC4D07E60 /* secp256k1_swift-macOS-dummy.m */, - B113F7A90CDF5F2B3C198D7A162BCE5B /* secp256k1_swift-macOS-prefix.pch */, - 26735B315AE3BBFC093751F34FF5298A /* secp256k1_swift-macOS-umbrella.h */, + E63E148F2AC4DF789ECF5E2C308728FE /* Pods-web3swift-iOS */, + 2A2A989FCDBACD9029E532E34406058C /* Pods-web3swift-iOS_Tests */, + EF07811C1E5A2DA0255EE83C101FD2FC /* Pods-web3swift-macOS */, + 9787646774383EFAF58358A34DF8A1E4 /* Pods-web3swift-macOS_Tests */, ); - name = "Support Files"; - path = "../Target Support Files/secp256k1_swift-iOS"; + name = "Targets Support Files"; sourceTree = ""; }; - 11C1A35B1B0A100461C3BB743EFB5A4F /* Support Files */ = { + 127269934BB075C7DBB1B862FA142AAF /* Starscream */ = { isa = PBXGroup; children = ( - 2CFB12AE565519D1D61BBCB575EA4529 /* EthereumAddress-iOS.modulemap */, - 3EF65D377F2BA084BFBC0FE54CF540BC /* EthereumAddress-iOS.xcconfig */, - D246F10F03D88257A18C3B5758B6ED34 /* EthereumAddress-iOS-dummy.m */, - 869F03EDC2B24D2591CC86A7B5FD56B0 /* EthereumAddress-iOS-prefix.pch */, - 028CF3366D14A8473EC19D2276FB883A /* EthereumAddress-iOS-umbrella.h */, - 10273A13B3A29DD80448E4E7B26DDE2E /* EthereumAddress-macOS.modulemap */, - 422B6EC21F1B1D7C0499CE7FAD719ACE /* EthereumAddress-macOS.xcconfig */, - B824FF3D1B5984A95C100C08666F2896 /* EthereumAddress-macOS-dummy.m */, - 5510D8887915839BA7438088ADB41801 /* EthereumAddress-macOS-prefix.pch */, - 3B6AD7D1CE9AF066C076FC7786A1A513 /* EthereumAddress-macOS-umbrella.h */, + A8C67AE49421A3140D2FF135EF89ED5C /* Compression.swift */, + F101D6CF40D7F4694116ACF526EEB96A /* SSLClientCertificate.swift */, + 4AD2A1D6F4792BB8C25CB35E103E9657 /* SSLSecurity.swift */, + 5C257E1502CFA7F2A46BADBE76577FDD /* WebSocket.swift */, + D3D9731D12910C993F8FAB7A39A9B578 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/EthereumAddress-iOS"; + path = Starscream; sourceTree = ""; }; - 11EC31813703ACA120A075B0DD8C6306 /* Targets Support Files */ = { + 1B215CB886558921B01B743A8C0CC318 /* PromiseKit */ = { isa = PBXGroup; children = ( - E63E148F2AC4DF789ECF5E2C308728FE /* Pods-web3swift-iOS */, - 2A2A989FCDBACD9029E532E34406058C /* Pods-web3swift-iOS_Tests */, - EF07811C1E5A2DA0255EE83C101FD2FC /* Pods-web3swift-macOS */, - 9787646774383EFAF58358A34DF8A1E4 /* Pods-web3swift-macOS_Tests */, + 742B1BBA29DC6944AAE13E575B0DB084 /* CorePromise */, + C7E376558B03A55093417BC716C7A2BE /* Foundation */, + F847738CEF4BE4F4A6B56EB92841560E /* Support Files */, + 3FDCE3B9794FA1AC3D944826C1DE7B81 /* UIKit */, ); - name = "Targets Support Files"; + path = PromiseKit; sourceTree = ""; }; - 242078AD83E79C22A9BD8C7B5CCF7EF3 /* SwiftRLP */ = { + 27BA3D62DEBF86A177BF614862CC8EA6 /* secp256k1_swift */ = { isa = PBXGroup; children = ( - B6A5F98902F7066D66657126D0CECF25 /* RLP.swift */, - 1041CA6D2F438B6A5364EE9337F0A3CC /* SwiftRLP.h */, - EFA9432B34FF98219895E7FF200578B9 /* Support Files */, + AC63A51025DC620E2A53A12221675AD8 /* basic-config.h */, + A4CD3F94452C7F2EB5C3EC9C7071BCEB /* ecdsa.h */, + 51CD1FF879BA6BC3417C799878DE6F79 /* ecdsa_impl.h */, + C0F56F179803DB6CBDA31DEB40AAA523 /* eckey.h */, + F01025C6D323D833DF7384CA21560AAE /* eckey_impl.h */, + 21307FEC44274F5C58857F4BB7C52FC3 /* ecmult.h */, + BB4ECF518982380D91EAF6F6A8E3422E /* ecmult_const.h */, + 916B26D7C0B39968C903C493B32AF440 /* ecmult_const_impl.h */, + 887F81E9A3628F15BCDC3711D6179AC6 /* ecmult_gen.h */, + 6DB206432F61D9036031DDB513864739 /* ecmult_gen_impl.h */, + 6F95F54AA521C53B06A1B5C47F0CAFEC /* ecmult_impl.h */, + 73055400CFDDC0D498AED40ED3C4F66E /* field.h */, + 9F38BA9962689772EDA0506F2A3254E4 /* field_10x26.h */, + 5478CD6BE0741A6D364C23E9FF1077AC /* field_10x26_impl.h */, + 16C3402B3B1196A6A499C758A336D2A6 /* field_5x52.h */, + 5BBF5F4FE850C1A6D626DBE3867A76EF /* field_5x52_asm_impl.h */, + DF59C2A7C3C356BD27702917CFCA4DA8 /* field_5x52_impl.h */, + 930F74C7F566FF983C697F22EBFC996E /* field_5x52_int128_impl.h */, + AF9DC97246696CC9791EA7219ED77609 /* field_impl.h */, + 8757B059CC71702C833348E0C2B66AED /* group.h */, + 0C2C0E04798EBB71E7123D512C62369B /* group_impl.h */, + 197EB21FF7C7D3C0D7BDC68E5F1F8E76 /* hash.h */, + 81238A89E764F627AEECC1D25B13F568 /* hash_impl.h */, + 9E13CD510B8B4FFE1C33845B056172F8 /* lax_der_parsing.c */, + 81BFE7C860EC43A3D0A1FCD9166CEB49 /* lax_der_parsing.h */, + 66D10DA17CCD420FDD7BEB051B5E7EC9 /* lax_der_privatekey_parsing.c */, + A7CCB554E0C3A9A3E2036421C7676816 /* lax_der_privatekey_parsing.h */, + DA4B10A7801FFA5184E69E581DD4BDD2 /* libsecp256k1-config.h */, + EF8988CD6D4E89092524AB136974B383 /* main_impl.h */, + 45F47B1B378E471F86B24A238EE95C40 /* main_impl.h */, + C7458B47F20786820DFD6E8A561373E3 /* num.h */, + 57BA855967F971FEA645E7A12F7D7E12 /* num_gmp.h */, + F10B99718BD2A1F01F570CD3A48C92C2 /* num_gmp_impl.h */, + 13909D9749BDDAF53BF6F06729ED8378 /* num_impl.h */, + EAA23D84D0877D4153AFEBFB3FB8D870 /* scalar.h */, + B40E698A102CB11557BE911B8A3C3C35 /* scalar_4x64.h */, + D4D5FA08D5CAA0932F363784006A6984 /* scalar_4x64_impl.h */, + 52D33700E85ACC83CE34BAB5E806BFF8 /* scalar_8x32.h */, + EEB2361281B0541EE92FEDE7A4E0F6EF /* scalar_8x32_impl.h */, + 2624E99D931CF25E3BBCCFB51B854672 /* scalar_impl.h */, + 3E1EB4BAE587092263D57BA8822AF90D /* scalar_low.h */, + 5A97E581A98D7DE9A3321EDF1EADB28C /* scalar_low_impl.h */, + 7DA2BA56E31B1F804C357D0FCA532B41 /* scratch.h */, + BE83D3F4A88261D1B818A5FEC1D80E2D /* scratch_impl.h */, + 877AAAF7B5AB6E1D5F6E9AFE46EECAE1 /* secp256k1.c */, + 05F3218F9C7AEB2A3CD6B49C28F61D42 /* secp256k1.h */, + 0C1BE4E9495FD45A1BAB5EA01EE1B7D4 /* secp256k1.swift */, + BEBF981EA3E9083454CEC5A42DEFA926 /* secp256k1_ecdh.h */, + 1B991B925F7AE711ACAA8B19741AD685 /* secp256k1_recovery.h */, + 26571C1AD51ADD36B8487457A2DE999E /* util.h */, + 5FDAADD9BAC516701147CFA71962221A /* Support Files */, ); - name = SwiftRLP; - path = SwiftRLP; + path = secp256k1_swift; sourceTree = ""; }; 2A2A989FCDBACD9029E532E34406058C /* Pods-web3swift-iOS_Tests */ = { @@ -1378,182 +1075,212 @@ path = "Target Support Files/Pods-web3swift-iOS_Tests"; sourceTree = ""; }; - 31353C3BF14829C3AFC8FCBC8FAD8A9F /* Starscream */ = { + 3FDCE3B9794FA1AC3D944826C1DE7B81 /* UIKit */ = { isa = PBXGroup; children = ( - 52CB8E691CBC3E972E2F20FD42C8E5E8 /* Compression.swift */, - 6D0D59FEBAFE71FEF0F232F155DD9036 /* SSLClientCertificate.swift */, - 404CEB85861C5E34014047653BFDBBCD /* SSLSecurity.swift */, - B6BCF9A48B01832EF9C2384895B10C32 /* WebSocket.swift */, - 8120E9A2B1F2F1C685F9F97A2DC9974C /* Support Files */, + 1717A75622645509FF4B58F73811C673 /* PMKUIKit.h */, + D8486D8526A78CFE2EF4EC906F4A0A18 /* UIView+AnyPromise.h */, + EF4C848FB0F51A14C06D1C7DA3478DFF /* UIView+AnyPromise.m */, + A7EC0B885851718878974A7B10FEE4C7 /* UIView+Promise.swift */, + C1005427FDE289DE86E4FC1FE58E66E7 /* UIViewController+AnyPromise.h */, + BBF326A733AAA3B47C05B5B6B9054A45 /* UIViewController+AnyPromise.m */, + 4161E3E976BEFE72E8FF906BBB115AFB /* UIViewPropertyAnimator+Promise.swift */, ); - name = Starscream; - path = Starscream; + name = UIKit; sourceTree = ""; }; - 409E98BF2F74C4C88A467A1B34B6C753 /* Support Files */ = { + 4B64B9017EA75E2B57DB3C524D7B8C4E /* Support Files */ = { isa = PBXGroup; children = ( - 3A7CFA4C3173014EEAC775008867F21D /* CryptoSwift-iOS.modulemap */, - 44E6ECFA16786AD23E928015EFE72D20 /* CryptoSwift-iOS.xcconfig */, - 9F901BE3FEDA6433846929FD0B9A39B5 /* CryptoSwift-iOS-dummy.m */, - C9D54F15860A8B2E652E63AA2D090659 /* CryptoSwift-iOS-prefix.pch */, - 0E42B40E0BF34EFF848050AA681271DA /* CryptoSwift-iOS-umbrella.h */, - 6673E9B32501CA575F3B5F524A6E02C3 /* CryptoSwift-macOS.modulemap */, - 71FC5A5D817B5A6A2E37821A24E1B72C /* CryptoSwift-macOS.xcconfig */, - 770C082676DEC5562E8B9742FB4DD986 /* CryptoSwift-macOS-dummy.m */, - 2F801DC94C5AC4679A4E3ED98CE6024D /* CryptoSwift-macOS-prefix.pch */, - 57CC24E601A1A008219ED9568D1960D4 /* CryptoSwift-macOS-umbrella.h */, + 83CDB5D980A9960D43528A4F958860B6 /* CryptoSwift-iOS.modulemap */, + 8F2EFCBA807835B3E69C3BBA665D0832 /* CryptoSwift-iOS.xcconfig */, + CC52705E4A76D1521111C9EE6397FCA0 /* CryptoSwift-iOS-dummy.m */, + 021D91D81A947FFFD514158BD49D4481 /* CryptoSwift-iOS-prefix.pch */, + 4C7D4A62A15247DB09113F908C5E6B49 /* CryptoSwift-iOS-umbrella.h */, + 21F791890BAE04E30787B3BC9FDF624B /* CryptoSwift-macOS.modulemap */, + BFDD3C72C8D3B43836068099396D69F8 /* CryptoSwift-macOS.xcconfig */, + 91B2C1CB3CCA65D8206D68C219428919 /* CryptoSwift-macOS-dummy.m */, + AC4323CE892933690661BA7A1161EB00 /* CryptoSwift-macOS-prefix.pch */, + 7A8D94568E75BC0B2DD85C4416156EB4 /* CryptoSwift-macOS-umbrella.h */, ); name = "Support Files"; path = "../Target Support Files/CryptoSwift-iOS"; sourceTree = ""; }; - 50342F8459BA6A6A0B0E4376BEFB2DA3 /* Support Files */ = { - isa = PBXGroup; - children = ( - 105BE0A15C5C0D32F1E8A1CB627E65E0 /* SipHash-iOS.modulemap */, - 3764F8359667BB549CE9192C8A1D3AA0 /* SipHash-iOS.xcconfig */, - 06BEC764D1E8CAABF0542415203CBA68 /* SipHash-iOS-dummy.m */, - 0DD140B8B9FB0E42DD7B5405CAD979C8 /* SipHash-iOS-prefix.pch */, - 8CA3ECEA3134878CB7A7290522C5150D /* SipHash-iOS-umbrella.h */, - CEB68DC5D38C8F56B600BAB0C79FAFBD /* SipHash-macOS.modulemap */, - 9E37727AE5487A48443C301030F61A6D /* SipHash-macOS.xcconfig */, - 804FEC4DEDB4A46FEFC6D24D7E65C2E5 /* SipHash-macOS-dummy.m */, - BE7617FADACF30EC73DDD5DA3EEA2689 /* SipHash-macOS-prefix.pch */, - 857EAAD791783A2C48E951BE7AB5CF59 /* SipHash-macOS-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SipHash-iOS"; - sourceTree = ""; - }; - 535F9BB03C6F4A63905B491AFA83CBD1 /* UIKit */ = { - isa = PBXGroup; - children = ( - 57EB0C73FF61D37BECDA16782B6CD011 /* PMKUIKit.h */, - DDDCC2D78C86E0D3B5D7F386CC02350D /* UIView+AnyPromise.h */, - A85F30A26655A31C1BF18B20DB1960AB /* UIView+AnyPromise.m */, - E45A96C016E09A710D203C8CBCA1CC17 /* UIView+Promise.swift */, - 5A2547AB8A3C31DFE2F52096FA37EFBD /* UIViewController+AnyPromise.h */, - D6E686544EF4C8C633FE41EF2CEC1826 /* UIViewController+AnyPromise.m */, - 3C1FD176D21CBD655A33F843E356B587 /* UIViewPropertyAnimator+Promise.swift */, - ); - name = UIKit; - sourceTree = ""; - }; - 57F9D77985CB9FC53833830D3556D052 /* CorePromise */ = { + 51E0A21AD430A3FE3DBF823C5BD6DBDB /* CryptoSwift */ = { isa = PBXGroup; children = ( - D478FD26E9B06D4AF421D0A847F05CB7 /* after.m */, - BF171FEA3655CACF1B6B9C6F85586945 /* after.swift */, - 63530C8FD8A55BD3627FE6173EDF0AC1 /* AnyPromise.h */, - 452643BFC330DA77845C5A6609A2075C /* AnyPromise.m */, - 686E602AE5082CBF2C101ECED65BE99C /* AnyPromise.swift */, - 8F9FE46BD8AC65F3CF39F89C0D3E30A0 /* Box.swift */, - C1326A835DF33C20CE38ABD87049E2E1 /* Catchable.swift */, - 349FEDC79E659427A3A7E4B09E30D9B4 /* Configuration.swift */, - BA706BD339992057A08F7E53A5147BF8 /* CustomStringConvertible.swift */, - DABB16DE6F842BC5F7C1FA8AE65F3C2B /* Deprecations.swift */, - 7D66DCE144E613BF899AF2CC0C89F08E /* dispatch_promise.m */, - 7F9131F785641C468536589E493F91F6 /* Error.swift */, - B469FEEFD4DEDA89819045EEEB18538F /* firstly.swift */, - B69BDAA9D2AFAF904C0802EED1918D83 /* fwd.h */, - B86C2174B142F67C7A0A5B9F9ADC0C14 /* Guarantee.swift */, - 15173F566998512BBB9AA1D3ADE4DFAC /* hang.m */, - 09F1816031AF1B0046AEFD2145335206 /* hang.swift */, - 2034666AD58D00ED6CBB99F6582D6D6A /* join.m */, - 57829B17883880D67DD44DBAC7E201B9 /* Promise.swift */, - 22276031D3E12A4B4692747F2EED285F /* PromiseKit.h */, - 3E573622FDFDB2E36CBBAEF6D136A2F2 /* race.m */, - D62D03C802FE484FA46F8B981FFE7FEC /* race.swift */, - 127203DB9162380E9EA1CCD66C9F7BB3 /* Resolver.swift */, - BF231834D762125E63881191D14D68E2 /* Thenable.swift */, - 6B696D5331F11BE5F3C3E5F68D2F3B11 /* when.m */, - 0918CB6074FD9988D8B8AF6E9933FAAF /* when.swift */, + 479AB9DD4B3F021BD51C594772FD7A92 /* AEAD.swift */, + 99CA87C90C2CE0FD4F5BEB20AFEB1833 /* AEADChaCha20Poly1305.swift */, + C3F41C2D3B6B20B5DF73C37340343CF4 /* AES.swift */, + 367FC28408AE4921EA09065CDC5B36AA /* AES+Foundation.swift */, + DF45EF3C4580F6BD4DA8649207ADB054 /* AES.Cryptors.swift */, + 6E8A3B02049CE51AE003FB430B2DC45E /* Array+Extension.swift */, + F618884500C0A49CA9D9B5658843961F /* Array+Foundation.swift */, + 5ECD815A84E46BE4A5F64ABA69183213 /* Authenticator.swift */, + A571169D0C0DC6E60C6C1B152B85B6B7 /* BatchedCollection.swift */, + 23572999C6C308CB98D70E8888013E60 /* Bit.swift */, + 27E05341BFB24F456B02B4AE8D972FF4 /* BlockCipher.swift */, + 7586A4611F1EB5FD23A0A8E744A274BD /* BlockDecryptor.swift */, + B1A8A7846779319B5AF7B7FD7678E2F7 /* BlockEncryptor.swift */, + 3D69632F535FD98C95190038FC7C87A9 /* BlockMode.swift */, + 377E1C31250784A37E9224962BCC5FD8 /* BlockModeOptions.swift */, + 7A3828E6D6F986A38840C154D9F00DDF /* Blowfish.swift */, + 5CAC61EA7401D62DCDB9D19F07E7F962 /* Blowfish+Foundation.swift */, + B47314191D456625014BBB09321D876F /* CBC.swift */, + 85249351EFF672E4E8D0C6EB02520237 /* CBCMAC.swift */, + 67B360708114DFD3CEDA6F6661C38A1C /* CCM.swift */, + B07AEDC66415BF92E7A4E0DA3AA93846 /* CFB.swift */, + 8E52615162EAD94FE296E5B7F2C50D3F /* ChaCha20.swift */, + E0DE3C35CDEDF8D78B169CCD73F353F2 /* ChaCha20+Foundation.swift */, + 6BD80036AAC2D4906A6DC4A00686B974 /* Checksum.swift */, + 6495EB11BB0CBD5F66F7C944D63BAD51 /* Cipher.swift */, + F4085E90F59B8EE8025AD442CD9F3311 /* CipherModeWorker.swift */, + 91E499D98A7C49A97B25A5A3DFBD1021 /* CMAC.swift */, + 10B225B29D9AAC8E5736C575E8F41AB1 /* Collection+Extension.swift */, + A88D046EB24F71921D96094E3C23FFA5 /* CompactMap.swift */, + 1BA68E7B5C9851779BB8B30EC4075868 /* Cryptor.swift */, + DAB11100CBF2C34B0C25F868B02D3E26 /* Cryptors.swift */, + 7F6D2648E7E5BC901A6F3A6C6EE27273 /* CTR.swift */, + 467E1C21715DF708BF7D8DF6DA02814E /* Data+Extension.swift */, + 931BB4820501F199F978D3C2ADD352A0 /* Digest.swift */, + 0F2ECBD47C16E84FD7937670288FEC49 /* DigestType.swift */, + 9CA248A95357A312A09B0568C297487A /* ECB.swift */, + 83ED950A4869DED9E450F9688529398B /* GCM.swift */, + C1EB7C609DEF82CF47B51F78AD1D46F2 /* Generics.swift */, + 833388A687330F16FC8A34F917B53AA6 /* HKDF.swift */, + 4027416A1B51568CE8FA17C3316395F8 /* HMAC.swift */, + D66A9F054A063BD046DA3EB26245B11E /* HMAC+Foundation.swift */, + 64CBD6E2A5A1C37DEF84883C5389E04D /* Int+Extension.swift */, + C551D6AEFD48F300E5BF895DF2CE0C64 /* MD5.swift */, + A09B0D5FCD0E2E1B27A4E69416D49470 /* NoPadding.swift */, + BBCDE0F2D7072617433CA92E2139172F /* OFB.swift */, + C149F16ADBF78E5ED95460B8783C8519 /* Operators.swift */, + 8A765C09E2790502B46527F61B90C054 /* Padding.swift */, + 11AAB49A993F30F4CE37221A805E2FD3 /* PBKDF1.swift */, + 2F2DF7D68EEC4AF5198919C8128111FC /* PBKDF2.swift */, + 92204375C968330E8EFF8AB65E0F7925 /* PCBC.swift */, + 99A28CD76DE93484A23853D178955072 /* PKCS5.swift */, + 5256EA5A29BC4C55A003D9247A1A3029 /* PKCS7.swift */, + 259D4B9E3002CB46981373646552C189 /* PKCS7Padding.swift */, + 4B879405C58979A9A77A22F1FD72FE04 /* Poly1305.swift */, + 11FD81F504F70DD7F7404FAB1FFA09BE /* Rabbit.swift */, + 771BACECA893F1BB7DA72C1C37C44901 /* Rabbit+Foundation.swift */, + FBA95F1E7ACF0161CBC476907408FDEB /* RandomBytesSequence.swift */, + F9F44FEB52A96A2387B75A25F9D9F2E4 /* Scrypt.swift */, + 15A0777D7682D89DD4E77BA406EA9F39 /* SecureBytes.swift */, + 87B32EE8714C2211CAE250E62DA1B830 /* SHA1.swift */, + 1E0FC3168FD899B4C60D7FACB7716C3E /* SHA2.swift */, + DE1EFB69CC3055F1503CF6B27E7B0BE9 /* SHA3.swift */, + 78EBDC3D9006AB76A07C35035C8FE073 /* StreamDecryptor.swift */, + DBAFC664C928E8E144EE2E7881435515 /* StreamEncryptor.swift */, + E831BD47ABF5DC7F071EE5F38159A36F /* String+Extension.swift */, + 18B6BD85AD1F3C37FDBC8610C2BBA334 /* String+FoundationExtension.swift */, + 97E20AB170F4A54932380A2FFF476E4D /* UInt128.swift */, + 7696235BDA83DCE78CA15B9A3E55A1A1 /* UInt16+Extension.swift */, + 3633C5CE9E0505026515F5090144AF71 /* UInt32+Extension.swift */, + B66B81D2CC11A42B29DF35C11CFBF7A7 /* UInt64+Extension.swift */, + 46B77EFA51E3D4B43C25719299ACD7D6 /* UInt8+Extension.swift */, + 630BA31F3A958609E3A13E56100BA045 /* Updatable.swift */, + F99B3DB488BEB064AB7A9230B18B29EE /* Utils.swift */, + BF66742E976C83F1C40D0CF4A0D0EC77 /* Utils+Foundation.swift */, + 9B959C972252CA017C64A5A8FE37D50F /* ZeroPadding.swift */, + 4B64B9017EA75E2B57DB3C524D7B8C4E /* Support Files */, ); - name = CorePromise; + path = CryptoSwift; sourceTree = ""; }; - 6308DB74E1E7C48F887F44974C9EEA12 /* PromiseKit */ = { + 5FDAADD9BAC516701147CFA71962221A /* Support Files */ = { isa = PBXGroup; children = ( - 57F9D77985CB9FC53833830D3556D052 /* CorePromise */, - 0BEB8C42C8CD25CBCEC39C7A552E1322 /* Foundation */, - AE1564508F5CB0F261DBFEDCDC83CA17 /* Support Files */, - 535F9BB03C6F4A63905B491AFA83CBD1 /* UIKit */, + 1B0B83EF23BEE1F68C39241C3289717D /* secp256k1_swift-iOS.modulemap */, + FD0437C77FB2F98D55AFD1FBDC4B37C0 /* secp256k1_swift-iOS.xcconfig */, + 54A0B86EBF5236879EA7DDFE10E4810D /* secp256k1_swift-iOS-dummy.m */, + F537264ACA681D6FCAF2DA683CD3175E /* secp256k1_swift-iOS-prefix.pch */, + 078C6E55B0F3F832129C4238FE075CB8 /* secp256k1_swift-iOS-umbrella.h */, + 244F6E3D89452F63EBAC299D0B04B602 /* secp256k1_swift-macOS.modulemap */, + 85644855873BB775CB3AFB67845C2923 /* secp256k1_swift-macOS.xcconfig */, + 2E15EE0FD008952509458F9CB045FDFD /* secp256k1_swift-macOS-dummy.m */, + E22380AC7BD1E3273FC9EE2E44BCD08F /* secp256k1_swift-macOS-prefix.pch */, + E59A72B7BDF7D4F8AB5E3A346DA79DE7 /* secp256k1_swift-macOS-umbrella.h */, ); - name = PromiseKit; - path = PromiseKit; + name = "Support Files"; + path = "../Target Support Files/secp256k1_swift-iOS"; sourceTree = ""; }; - 780AB1E73E3A3DBB717C28B9F0BB1F51 /* Pods */ = { + 64EBF76DB6D758243BC5CCB5DA42AAAD /* Products */ = { isa = PBXGroup; children = ( - A3D3F756ED3F5935DA9AEDC86C85AED8 /* BigInt */, - C6BC1CC0EBAB666BC55E08E4121C9AB1 /* CryptoSwift */, - 909B9E1D7E729E2D94A6415F71C1159A /* EthereumABI */, - F38E79EB003635B7CDDF128C918F7586 /* EthereumAddress */, - 6308DB74E1E7C48F887F44974C9EEA12 /* PromiseKit */, - 00D2ECAA01AB223680CE3ECE45E3B513 /* secp256k1_swift */, - A91867445D8BF8A285C386F4453B2F89 /* SipHash */, - 31353C3BF14829C3AFC8FCBC8FAD8A9F /* Starscream */, - 242078AD83E79C22A9BD8C7B5CCF7EF3 /* SwiftRLP */, + 84D9F4887CFFEE4310D455E977073A4F /* libBigInt-iOS.a */, + 219E98401E570D07C58CE357630DEB1A /* libBigInt-macOS.a */, + A2E5FA56A9EEFC15044BCEC743F89E9E /* libCryptoSwift-iOS.a */, + EDB1502B2FC1EB700D835A8CCF5CFE21 /* libCryptoSwift-macOS.a */, + 1F378E51A334910200DB16EA3B7513B1 /* libPods-web3swift-iOS.a */, + 1235CA7678CE59512DC38AC0528FC48B /* libPods-web3swift-iOS_Tests.a */, + EAE7EA4ACC152062B41C0E0022105F70 /* libPods-web3swift-macOS.a */, + B609FCFC1B164358EC6F6AA0000EE522 /* libPods-web3swift-macOS_Tests.a */, + 1E954888E86E1DB23C4298AC4049B901 /* libPromiseKit.a */, + D1BAD2B34BFA26259BEEAF113B7AB672 /* libPromiseKit.root-CorePromise-Foundation.a */, + C9FAE30EFA33F0294739AB297F3730CD /* libsecp256k1_swift-iOS.a */, + 0C1D006D056F887719496BFF0950C603 /* libsecp256k1_swift-macOS.a */, + 2FF8532600A1D47B74F651F43966153E /* libSipHash-iOS.a */, + 381EFBC9AE16789B1870BCBE392591EC /* libSipHash-macOS.a */, + 1685174D72AE3061BD5445028C88CE77 /* libStarscream-iOS.a */, + 683B319B3BEC934DC1D090904F2E091A /* libStarscream-macOS.a */, ); - name = Pods; + name = Products; sourceTree = ""; }; - 8120E9A2B1F2F1C685F9F97A2DC9974C /* Support Files */ = { + 742B1BBA29DC6944AAE13E575B0DB084 /* CorePromise */ = { isa = PBXGroup; children = ( - 52FDD7180222ABB0D7322CEE418D8C9B /* Starscream-iOS.modulemap */, - 9959A387FE97F5EE015FF46981A32E87 /* Starscream-iOS.xcconfig */, - 067B8E36AC70F0A5D2808468761BFF09 /* Starscream-iOS-dummy.m */, - 24C88F05E568BD92F63E83416EB9804C /* Starscream-iOS-prefix.pch */, - 034CD824C39CDDB5F1BE5765285EC8DB /* Starscream-iOS-umbrella.h */, - FDC94D4670B217F4BF300EE8DF2EDBE4 /* Starscream-macOS.modulemap */, - 35674E85190CB95B6997F482987E6708 /* Starscream-macOS.xcconfig */, - 56373AABD9B04A66DA9258FA5ED41535 /* Starscream-macOS-dummy.m */, - ABDE1423620E7328160252D81BC3CA03 /* Starscream-macOS-prefix.pch */, - CFB8DB629080336526ECA20A84C627D4 /* Starscream-macOS-umbrella.h */, + C5D97D113E11DDD7067C70CF4517DAF7 /* after.m */, + F79CB0EB6597A6EDC54750BA2A60677A /* after.swift */, + 7F236CB40EB7129EFFEED9F5772CAB27 /* AnyPromise.h */, + 8D12388DAD3F6EC1CF276AF7CF4CA70C /* AnyPromise.m */, + 04F0DD77BBE1D1D0B60E77FC98FE58A8 /* AnyPromise.swift */, + 3279A426C1F0101503616FAE68E83993 /* Box.swift */, + FC8CB0533AA3C4EE8640E3020CD5656A /* Catchable.swift */, + 062B593234D703A4C58BC97499AFDE27 /* Configuration.swift */, + 74CE256ECB743201BB4E5F5025370CF0 /* CustomStringConvertible.swift */, + CC035554AD40C3F7142AEF0048BEB70E /* Deprecations.swift */, + 53FA797E0976B9B96348FB82F8DC3DBD /* dispatch_promise.m */, + FCAE87BED1CF20813A9CB30CB5ADE8AF /* Error.swift */, + 1A17CB38D45292A19C3559652B2A9857 /* firstly.swift */, + 1C20BF43F08DCC1F7C25483151BA5C94 /* fwd.h */, + D0B783E77D6EB5976452B23E5884B464 /* Guarantee.swift */, + 3AA4B5350C604E8B4710156DD91F473B /* hang.m */, + DA0722A278ACD20B9304F4FE7DAA22D5 /* hang.swift */, + 21920B2D0558FFA6780A1DE2EA3D38AD /* join.m */, + 79E6C73212DEA8321EE3C88B94BCB9D0 /* LogEvent.swift */, + B248E0EA0BDC1DBC771D06F08042E3B6 /* Promise.swift */, + 62925B4703EE0F25CD5AA9B0E1A697CC /* PromiseKit.h */, + A73EA60796E2773612856EFBB6FA1C1D /* race.m */, + 7ACCFC26305C31710462E830012C47F9 /* race.swift */, + 115F2E0B1F15AFB9D1B7F053BCF5818A /* Resolver.swift */, + C0DF4055EC83B4434B270E053E674E85 /* Thenable.swift */, + CFDBB39B4192E81DAA1EA5CA82A584A7 /* when.m */, + C0C77DD993F7E165460EC0DCE198706F /* when.swift */, ); - name = "Support Files"; - path = "../Target Support Files/Starscream-iOS"; + name = CorePromise; sourceTree = ""; }; - 87A3E2003FA358D5E9EDF94221E8D73D /* Support Files */ = { + 8B6522697D8A7C165E7E583E64FAC54B /* Support Files */ = { isa = PBXGroup; children = ( - E0594C88C1F35FA748FA6FC94E973FA3 /* EthereumABI-iOS.modulemap */, - 179FDDCE696F59ECE53BD24EB1B13765 /* EthereumABI-iOS.xcconfig */, - 6AF4E5E9BEF07C4BF4F58F75609B6320 /* EthereumABI-iOS-dummy.m */, - 90A45305369B3DECB692523E56B4F23E /* EthereumABI-iOS-prefix.pch */, - 3FE228EB1CF69DA3A1AD9E255C783A76 /* EthereumABI-iOS-umbrella.h */, - DBBC706EF59E15A0734C6C32840C4DF8 /* EthereumABI-macOS.modulemap */, - 3904351C9A8FEDD288B49A46427C5F43 /* EthereumABI-macOS.xcconfig */, - 98D10A3A0BF6FA4534DF828C3950FFA1 /* EthereumABI-macOS-dummy.m */, - CEF6648B4DD0C5CC4CE72794C77BF6BC /* EthereumABI-macOS-prefix.pch */, - 214DB209A3B8A67A320236844EEB6B6E /* EthereumABI-macOS-umbrella.h */, + C832CAF6EED818EF0E9207A20BBF7385 /* SipHash-iOS.modulemap */, + 4CE98594CABD142CA5C0741D66F75E7A /* SipHash-iOS.xcconfig */, + 72A1ED5B4495F73DD05A5AA27B169571 /* SipHash-iOS-dummy.m */, + 4BC7DE613D4096245385E9B7F5E31282 /* SipHash-iOS-prefix.pch */, + 7E4F85197D7BE39E43D18268B09B15E1 /* SipHash-iOS-umbrella.h */, + AED1903AE50239CD3AEBA796CFBC6C00 /* SipHash-macOS.modulemap */, + CC79EE0DCA4B60DBB457B60C688C207F /* SipHash-macOS.xcconfig */, + 86BE57B8F60161BC3E7710811A32B037 /* SipHash-macOS-dummy.m */, + 22A5785D6E69A8FF8C3F1593B7CFB20D /* SipHash-macOS-prefix.pch */, + 5E322677C269EEA7B635AFD5D4206C80 /* SipHash-macOS-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/EthereumABI-iOS"; - sourceTree = ""; - }; - 909B9E1D7E729E2D94A6415F71C1159A /* EthereumABI */ = { - isa = PBXGroup; - children = ( - 5455FAE35B59D48DACC1505D3EF8F287 /* ABI.swift */, - 1ACA40ED69BA394DFDCD5C96574C2692 /* ABIDecoding.swift */, - D9523141DD1B656335F02284D93ED090 /* ABIElements.swift */, - 350BF04878FA44170F1BBEE59F0D7A24 /* ABIEncoding.swift */, - AC89570C769D238D7D55E8628584BBE4 /* ABIExtensions.swift */, - 5FD052809124761131D26FCAAC8DFE06 /* ABIParameterTypes.swift */, - E5F7881BFABC825DDDAE7BC87CCF2F5A /* ABIParsing.swift */, - 4B30E2451B217420C1AEEC1B80582E3F /* ABITypeParser.swift */, - A92682F12710C31879D2D90258C95F5E /* EthereumABI.h */, - 87A3E2003FA358D5E9EDF94221E8D73D /* Support Files */, - ); - name = EthereumABI; - path = EthereumABI; + path = "../Target Support Files/SipHash-iOS"; sourceTree = ""; }; 9787646774383EFAF58358A34DF8A1E4 /* Pods-web3swift-macOS_Tests */ = { @@ -1569,179 +1296,66 @@ path = "Target Support Files/Pods-web3swift-macOS_Tests"; sourceTree = ""; }; - 9EF6A46EE8052ECACF9F964673952BEA /* Products */ = { + 9AB1AAC304A1BFF5A010FB442DCDB48E /* Pods */ = { isa = PBXGroup; children = ( - 7D10E1F2DCA2F4839706AD161C30345A /* libBigInt-iOS.a */, - 6DB61B4C9C0BB83FB2F7118D8879739F /* libBigInt-macOS.a */, - 19735BE346FC7332BFE3AC0AFE55A790 /* libCryptoSwift-iOS.a */, - 81094266A97FA4A09C887251372B098C /* libCryptoSwift-macOS.a */, - BC56686BF0218B6C5E011425D8558740 /* libEthereumABI-iOS.a */, - 2179690C48BF2A485E32EB4DE0188D6E /* libEthereumABI-macOS.a */, - 0A75E62EB2CD53DBF3FF57137C12D9E4 /* libEthereumAddress-iOS.a */, - 9D5AB068E1914C42B09569231AEB2B4B /* libEthereumAddress-macOS.a */, - C942FD24C16D9A69749A423B486198C4 /* libPods-web3swift-iOS.a */, - FCC8BC5E7A71B1F43B89B3EAA301AED8 /* libPods-web3swift-iOS_Tests.a */, - 3E5792474118A82E0B3F539AD378B14A /* libPods-web3swift-macOS.a */, - E5669A7EE3FEBAEBFDB1EA9C03E6F26A /* libPods-web3swift-macOS_Tests.a */, - 72A80BD6B5AE54F0E7D97C194789E0A5 /* libPromiseKit.a */, - 3F4927ED614A775188589F2827745E7C /* libPromiseKit.root-CorePromise-Foundation.a */, - 2AB1CD9F14C48B0297A0032E8A240931 /* libsecp256k1_swift-iOS.a */, - 40F45CD90D924FB79D1098E19C07F029 /* libsecp256k1_swift-macOS.a */, - CE81C70D926AE4F7E807EF9555BFDB79 /* libSipHash-iOS.a */, - 82312C406689442ADA04A4FDC232ABF8 /* libSipHash-macOS.a */, - 4C72985B2FBE354A9F9319055F420397 /* libStarscream-iOS.a */, - 09A060ACCCC97C8C2F9B0CF9AAC05248 /* libStarscream-macOS.a */, - D8868B1AA7A89468B716687B08EBDC9E /* libSwiftRLP-iOS.a */, - 61245856493C9C1EC53A726E3CBF97C5 /* libSwiftRLP-macOS.a */, + FD78FB0781B46C25DEEE32AA501ED9B8 /* BigInt */, + 51E0A21AD430A3FE3DBF823C5BD6DBDB /* CryptoSwift */, + 1B215CB886558921B01B743A8C0CC318 /* PromiseKit */, + 27BA3D62DEBF86A177BF614862CC8EA6 /* secp256k1_swift */, + A594F41688B4B1DA5A5F3F55BDC50B7A /* SipHash */, + 127269934BB075C7DBB1B862FA142AAF /* Starscream */, ); - name = Products; - sourceTree = ""; - }; - A3D3F756ED3F5935DA9AEDC86C85AED8 /* BigInt */ = { - isa = PBXGroup; - children = ( - 01FD97D62B430F3D613355747840CE5D /* Addition.swift */, - 9F57FA7DB572E3F83C8C5DFA6FC1B57A /* BigInt.swift */, - C6D15773B216D17D4F691E62FF8CA3EF /* BigUInt.swift */, - 3F312033A8834428A85A4B806F7045CC /* Bitwise Ops.swift */, - 7AB76205BB4AC2F224C001580773B939 /* Codable.swift */, - DFA33456BBF3A81EF266736D5EFCD104 /* Comparable.swift */, - D7939B57B76F4EC762DDB703A9633C24 /* Data Conversion.swift */, - 1F73FDACA65B2CE9252283FAEFD72902 /* Division.swift */, - 6788ABC80588BB40BF2D1D12AAE66F22 /* Exponentiation.swift */, - 657F66F26C28DFF82FF46807563B4E9C /* Floating Point Conversion.swift */, - D05135AEC6E4F9A692EB6BDAD910A12F /* GCD.swift */, - 363536B52D3D69D576EA73073652D568 /* Hashable.swift */, - EFD4227B942CE70ACCC835E6BBEB35CA /* Integer Conversion.swift */, - 446017795D375E95372753EB7E99B3C2 /* Multiplication.swift */, - 52BA80B342B58A1F7D98B7CF0298D7AC /* Prime Test.swift */, - 5E9A1BBB6B856729DAE095907B7CC8A5 /* Random.swift */, - DBC65E597AF9D5E83BB91E20DA536A2C /* Shifts.swift */, - 7A2A3173F949AEAEC1663790613FC8A9 /* Square Root.swift */, - C76CBAF8958BC38DD11D5CAEEDC99155 /* Strideable.swift */, - A9BAD2F4A3F751D55DF856D0FC83C832 /* String Conversion.swift */, - 82C9C2F57398B910E4A0089E710BBAD4 /* Subtraction.swift */, - 07B8BEBE25678BD1D1AF1A9FFC737880 /* Words and Bits.swift */, - 0799DB588221DAD122DB681403471854 /* Support Files */, - ); - name = BigInt; - path = BigInt; + name = Pods; sourceTree = ""; }; - A91867445D8BF8A285C386F4453B2F89 /* SipHash */ = { + A594F41688B4B1DA5A5F3F55BDC50B7A /* SipHash */ = { isa = PBXGroup; children = ( - ADFE39854E55F2A02E8D83EBD7E58254 /* Primitive Types.swift */, - 65A48A732CCD02C41B96B7A7D8839431 /* RandomUInt64.swift */, - 08CA3ADA337C349B5C3CD45ABD7E5736 /* SipHashable.swift */, - 3F14B41EF96F500D63E7EB1BC7461785 /* SipHasher.swift */, - 50342F8459BA6A6A0B0E4376BEFB2DA3 /* Support Files */, + 890C8F02CF4AA887B1BDDEBB58153093 /* Primitive Types.swift */, + FC7066B3F5257C3F62F8E9181B71DF23 /* RandomUInt64.swift */, + D8C179B70319D11D98FC38396E9CE78A /* SipHashable.swift */, + C23B3D828DED4F74CD73C1DAC483E86C /* SipHasher.swift */, + 8B6522697D8A7C165E7E583E64FAC54B /* Support Files */, ); - name = SipHash; path = SipHash; sourceTree = ""; }; - AE1564508F5CB0F261DBFEDCDC83CA17 /* Support Files */ = { + BCEBA8230D52CD6D3AA10928F9360006 /* Support Files */ = { isa = PBXGroup; children = ( - 58B9D7CECB2B5F3EAAA76E1F06CAC439 /* PromiseKit.modulemap */, - 394845A61BA9FA09DEC8647BBA1DCC6C /* PromiseKit.xcconfig */, - 2B4F9659A0D674401F418C8670C9E64D /* PromiseKit-dummy.m */, - 0A55C092419E19D14C074574C4C62025 /* PromiseKit-prefix.pch */, - 06CAD11822E804DF5FB8AFB3BC777B67 /* PromiseKit-umbrella.h */, - 445006314358D6540B8D46B3CDBA187C /* PromiseKit.root-CorePromise-Foundation.modulemap */, - C85CA494E1B45835376DCB1DF09D0AFD /* PromiseKit.root-CorePromise-Foundation.xcconfig */, - DA74424254B5E6BA2DAC23538953B3B8 /* PromiseKit.root-CorePromise-Foundation-dummy.m */, - 1FD214E5075DB97C6AE5FDC8129ECEED /* PromiseKit.root-CorePromise-Foundation-prefix.pch */, - BAF00A025FF916C83BCF0E5853AABAFE /* PromiseKit.root-CorePromise-Foundation-umbrella.h */, + 57DB52F3A57484D75B123642B4E82BC8 /* BigInt-iOS.modulemap */, + B07BD2F31E17F121E34CB8E0ABE07922 /* BigInt-iOS.xcconfig */, + 0E809513FBCA61203FE4CAEBDC9F2868 /* BigInt-iOS-dummy.m */, + 7CFD0D8D06315FCE4E2735F15C4E4576 /* BigInt-iOS-prefix.pch */, + 7468138804EE36C6736709FDE028B1C9 /* BigInt-iOS-umbrella.h */, + 6764D7EDB7C2CDA1D9EFC2F9481A5A18 /* BigInt-macOS.modulemap */, + F6696E50C866E9828090B6178AF3C7CC /* BigInt-macOS.xcconfig */, + 85E9F4CA2BAEA9F2E443DE34A3848896 /* BigInt-macOS-dummy.m */, + BD9A29069B343985701DF745DF077C1B /* BigInt-macOS-prefix.pch */, + 09CD6963326BE02CBDE1C7D5B5BD0282 /* BigInt-macOS-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/PromiseKit"; + path = "../Target Support Files/BigInt-iOS"; sourceTree = ""; }; - C6BC1CC0EBAB666BC55E08E4121C9AB1 /* CryptoSwift */ = { + C7E376558B03A55093417BC716C7A2BE /* Foundation */ = { isa = PBXGroup; children = ( - 3739CAE1052D6D89A6AE9793698C7B47 /* AEAD.swift */, - 096D76C734D0C860C06F45FC68A87663 /* AEADChaCha20Poly1305.swift */, - 834A6EFE39EE6A9F2DC04AFA862FA91A /* AES.swift */, - E2C009D2A4A1D0A320D910113F2E8E83 /* AES+Foundation.swift */, - 8D489E3BD7EFF73F8DFEB5DC16FCCBED /* AES.Cryptors.swift */, - BF499901EB24B63A873FD3D4CDF092DE /* Array+Extension.swift */, - 665234B604E940B526FA200F3100AF41 /* Array+Foundation.swift */, - E17833B43F970EABB91E7CAFCCC1D9F1 /* Authenticator.swift */, - F6F5E183E707AD82165C551C7480ABF1 /* BatchedCollection.swift */, - B6926D4618AA462E2F5B99E363041692 /* Bit.swift */, - D3B12F7827FEDC820149590DF2F51E63 /* BlockCipher.swift */, - 558814016D6A7FC3319ADE8CEB46E03D /* BlockDecryptor.swift */, - D752DC0BF982B73696FF172811AC786B /* BlockEncryptor.swift */, - 656D93793AE4808C058F16FFC5A211E0 /* BlockMode.swift */, - 0B4E8BF7FC021488E6C32F493D1FCDC7 /* BlockModeOptions.swift */, - 3F58F0D6480F143624938CC304BC9C28 /* Blowfish.swift */, - 54EE61B3E1378B7528157957F6E2A56C /* Blowfish+Foundation.swift */, - F8C6E174E18F006C8EB43EC02A8FE3D8 /* CBC.swift */, - C8B57AA627BE7FC2E77F5EE8C075A9D8 /* CBCMAC.swift */, - 8C5DBA3C55976F3557DCEB82573D9BB6 /* CCM.swift */, - C5343C2355FC862E74DB99D600421545 /* CFB.swift */, - 9BBD7BCB8DE7F5FD70D5A15359F58F94 /* ChaCha20.swift */, - A93D2B333FE5DA099A1F18627C6403E7 /* ChaCha20+Foundation.swift */, - F61EE5E7CEB295F84F7776DC7334E877 /* Checksum.swift */, - 2AEEA5D7B37190F5679847BDDFB197AB /* Cipher.swift */, - 075385814DC186A7C64CAC0A16956314 /* CipherModeWorker.swift */, - C80600472825A42BC22050F65CAC4B69 /* CMAC.swift */, - B6371F5CFF9A16BD324415D744F33531 /* Collection+Extension.swift */, - 30E07D7C1A1D0C523F1749CBCBCA85B7 /* CompactMap.swift */, - F6E560E43A25FA0AB7E707AE850B504F /* Cryptor.swift */, - E5FAEC0C19B3262A6F246B95124C4A99 /* Cryptors.swift */, - 98627823FFA064CF7DFF9D20FD59595E /* CTR.swift */, - 4A228958621D9EEC8D556B8053E56337 /* Data+Extension.swift */, - C2D9C6231E62A77969C8FEF05E22002A /* Digest.swift */, - 795FA48BAA4F836DA1F3F4EEE1497F9D /* DigestType.swift */, - 4A3FB1A72B8E12263DEBE540355A86EC /* ECB.swift */, - 000324BCB32A0DC73A29393B4D60B2D6 /* GCM.swift */, - 6727BE5280045EA814058E5E322E9E7F /* Generics.swift */, - B961DFA6EA054CD31302DED1A6967059 /* HKDF.swift */, - 7E3337421B6559FCB342E151CD2C9512 /* HMAC.swift */, - 123D9B5EFB2A4F497CDF42CBFE8B9F9D /* HMAC+Foundation.swift */, - F0937B20C1C28BD4A95220D8278C0BAB /* Int+Extension.swift */, - C9CF0275E8A1D7A2B41F5A774A5F0ED6 /* MD5.swift */, - 2CB0DEB3D6F4BB4A5D7EB57F2C14F338 /* NoPadding.swift */, - 8C91D9C0D95A1407D72A9ECA8CF5FE82 /* OFB.swift */, - B414DCA754533B2497E413195353037D /* Operators.swift */, - 998E4267B14D6FCC02485CC22984717A /* Padding.swift */, - 073D210D24EBE028D4BAE70A788B2EF5 /* PBKDF1.swift */, - 63D387481791D12FD62A9BA2B990CF54 /* PBKDF2.swift */, - 7C74074A3D0203259F85DC852235EF7C /* PCBC.swift */, - 3A5F1CE6B4F3A924CE2C7B538CE87C90 /* PKCS5.swift */, - 4D86040A42AE6B2D31485A1D8B40BF07 /* PKCS7.swift */, - 3D098F96767671EABB2B0DC76CAB4492 /* PKCS7Padding.swift */, - F2C80E731F6754B9AEF54D249BFCC6C4 /* Poly1305.swift */, - E4707EC7A4D80C89519E38548D90ED30 /* Rabbit.swift */, - 668BF93A8E194EF22FBCC85DFFCB8207 /* Rabbit+Foundation.swift */, - DE3FE1B6E1523279B964529705639B3C /* RandomBytesSequence.swift */, - 22A5C841DECB9325536991C63FACE457 /* Scrypt.swift */, - 50C16AB2F38379BA2A818AE65B1024B9 /* SecureBytes.swift */, - A657B8DA6662B1DC092AD8211ADC6E9A /* SHA1.swift */, - D9AA784AE92F708FBBB1EC6F903AD81A /* SHA2.swift */, - AD8CD832FD8B563E6275F7D3E39363CA /* SHA3.swift */, - E984EF9D6554D3AEDDC5E172A0E0BD72 /* StreamDecryptor.swift */, - E64CA6EFE09783E2A721986274EE9ECE /* StreamEncryptor.swift */, - 079F924129D8309B5345106A36F994D6 /* String+Extension.swift */, - 6D71818FDDBB76986F7A95E01EFE8EFE /* String+FoundationExtension.swift */, - 51F90F921EB768BEADEB4297FCFF9E57 /* UInt128.swift */, - 34526A3852A1A5C2F7C458D97A8A900F /* UInt16+Extension.swift */, - 17C7F2CD460A6321790F2C068142BD16 /* UInt32+Extension.swift */, - E54F5880B3D7EC60B0CDF9C10B012452 /* UInt64+Extension.swift */, - AA3CA96A1C96C617C6CDC66E3C5CFD15 /* UInt8+Extension.swift */, - 209E7E0252865966ABF59CF9F7024196 /* Updatable.swift */, - DB8537B1DE0AF0B2EAEBB180E4592606 /* Utils.swift */, - 0B436F98D1DB7929BA58C4C7D8CB1A9E /* Utils+Foundation.swift */, - 4D45CB1CE69B624AF22052E077769AEF /* ZeroPadding.swift */, - 409E98BF2F74C4C88A467A1B34B6C753 /* Support Files */, - ); - name = CryptoSwift; - path = CryptoSwift; + 6F9E33D8F1F7CAB653771A85C2BAD89F /* afterlife.swift */, + 346901EFC436E45BAB36F063E0AE048F /* NSNotificationCenter+AnyPromise.h */, + 1C2F22368334B7EA12CC2B01163ADE97 /* NSNotificationCenter+AnyPromise.m */, + 653EDAB70FA4D1975C3FF6B6AD9965BA /* NSNotificationCenter+Promise.swift */, + 2D82D6E399587DE6ABA2CFDB66E0E7F8 /* NSObject+Promise.swift */, + CC5240B4781ACBC6F0CC4CC1D226859E /* NSTask+AnyPromise.h */, + AF7856EE7C3C1F5C882290EE961EAE61 /* NSTask+AnyPromise.m */, + B5D2754B07E8E3D474CE75E531696D33 /* NSURLSession+AnyPromise.h */, + 17F7E8E519DBACA1290E47FB76AF1673 /* NSURLSession+AnyPromise.m */, + DB7266342A9EBC8B7442D5901610483A /* NSURLSession+Promise.swift */, + BDA93F1AF94CABEC2ABC4A016F78439E /* PMKFoundation.h */, + C8A47EEF6074E91C89042CC4CF9FE790 /* Process+Promise.swift */, + ); + name = Foundation; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -1749,12 +1363,30 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, - 780AB1E73E3A3DBB717C28B9F0BB1F51 /* Pods */, - 9EF6A46EE8052ECACF9F964673952BEA /* Products */, + 9AB1AAC304A1BFF5A010FB442DCDB48E /* Pods */, + 64EBF76DB6D758243BC5CCB5DA42AAAD /* Products */, 11EC31813703ACA120A075B0DD8C6306 /* Targets Support Files */, ); sourceTree = ""; }; + D3D9731D12910C993F8FAB7A39A9B578 /* Support Files */ = { + isa = PBXGroup; + children = ( + ACA66ED3153B842E99B0EF43957CEE02 /* Starscream-iOS.modulemap */, + EF5CD2317D91CF3B4EE9D9FE536EACEC /* Starscream-iOS.xcconfig */, + 0BBE4C77E28D19F47D5A93F5E9F88EB9 /* Starscream-iOS-dummy.m */, + 44EDDB4357C48799A588D2CE4C7A98EF /* Starscream-iOS-prefix.pch */, + C000A48B6E93B9BB6102E649CD510752 /* Starscream-iOS-umbrella.h */, + 6DF10515FED53A51CB96446E59F7D92A /* Starscream-macOS.modulemap */, + 83CF9FFA86ED8F9A0AEE986500CB7589 /* Starscream-macOS.xcconfig */, + 4D3CB40708791C1ED4A62EEA676480DC /* Starscream-macOS-dummy.m */, + 449513E66567F1278B7C620B88A3835B /* Starscream-macOS-prefix.pch */, + CE0C8D2AC17DB2D5D8738946396BEDC0 /* Starscream-macOS-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Starscream-iOS"; + sourceTree = ""; + }; D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -1792,34 +1424,52 @@ path = "Target Support Files/Pods-web3swift-macOS"; sourceTree = ""; }; - EFA9432B34FF98219895E7FF200578B9 /* Support Files */ = { + F847738CEF4BE4F4A6B56EB92841560E /* Support Files */ = { isa = PBXGroup; children = ( - D183F9D3C06EABCE6D95F208554569D0 /* SwiftRLP-iOS.modulemap */, - 43DCE273425CD6BB15234A0E86965CCF /* SwiftRLP-iOS.xcconfig */, - 21DC9B7712BFC051A8073E5880CC93ED /* SwiftRLP-iOS-dummy.m */, - 414361595A943984D1687FF235555739 /* SwiftRLP-iOS-prefix.pch */, - C742B85EDF338401A2BBA47FB717ED4D /* SwiftRLP-iOS-umbrella.h */, - 53F11487462D0D7A3435C44C6BDBC462 /* SwiftRLP-macOS.modulemap */, - E1D8C5087E61C7F371B173A450F5ACB2 /* SwiftRLP-macOS.xcconfig */, - E0FB31E65F41C13C1EBEE6A9EC943D0C /* SwiftRLP-macOS-dummy.m */, - DDDC508FCBB5F36808D65C3C674F007A /* SwiftRLP-macOS-prefix.pch */, - 7E77AB91398628682525840EA48574A3 /* SwiftRLP-macOS-umbrella.h */, + A19028C07CC5114417C5A7D9761EF32F /* PromiseKit.modulemap */, + 6D3AF88C061AB1935F2E62ADB52F75A1 /* PromiseKit.xcconfig */, + 27028DD53E5FDD45CB01A8136AAEA87B /* PromiseKit-dummy.m */, + A193A3A9CAA68869C4DC5357C9177636 /* PromiseKit-prefix.pch */, + 9CF6333DFB0F12D60F1E00966621A871 /* PromiseKit-umbrella.h */, + EBBF7CB3CEF86D2FCB1F2A756F8D3CE8 /* PromiseKit.root-CorePromise-Foundation.modulemap */, + 8E36E41B931A0607A052B6C64E0179D9 /* PromiseKit.root-CorePromise-Foundation.xcconfig */, + 09D758064C979FD9CC7110D72E292C98 /* PromiseKit.root-CorePromise-Foundation-dummy.m */, + 3C6E98D4DD82B4DACFDF292F5A140767 /* PromiseKit.root-CorePromise-Foundation-prefix.pch */, + FDCAFACF0DC261812D322C21C2BAB003 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/SwiftRLP-iOS"; + path = "../Target Support Files/PromiseKit"; sourceTree = ""; }; - F38E79EB003635B7CDDF128C918F7586 /* EthereumAddress */ = { + FD78FB0781B46C25DEEE32AA501ED9B8 /* BigInt */ = { isa = PBXGroup; children = ( - 59D114BC19FD2727C45A3F54CBF0D2C4 /* EthereumAddress.h */, - 4932C467CA0B003C3876AE37A7FB8F71 /* EthereumAddress.swift */, - D837D11202B852A34D063D539CC1E3FE /* Extensions.swift */, - 11C1A35B1B0A100461C3BB743EFB5A4F /* Support Files */, + 22E6C540A70650CFB45BB7C274471E84 /* Addition.swift */, + AB1839C3A694AAC21963034A492718BA /* BigInt.swift */, + AFC1C755F5C2F88999DCFF42701D573A /* BigUInt.swift */, + 1848530B067E254338210EC8E93984FE /* Bitwise Ops.swift */, + 2E84AAD9A4FDE032017007F9C3A55075 /* Codable.swift */, + 8E7A46513E450FED264F98BA912BB81B /* Comparable.swift */, + 9D692FCA6198D6487DA18678723BB0E8 /* Data Conversion.swift */, + 6B75520BE742B11ACE9049044041CEBF /* Division.swift */, + 642B2710251F761DDF9C3680D949C77E /* Exponentiation.swift */, + 618C45B65227C5DF2E02229A52E31853 /* Floating Point Conversion.swift */, + 170A63993058B055F852428188D98351 /* GCD.swift */, + FA67FBCC3656509F23DC76392A853371 /* Hashable.swift */, + 69D87B68E67A99002EEC5252514B0D57 /* Integer Conversion.swift */, + 2561776D348F1427469EB75D1A091837 /* Multiplication.swift */, + DD3A22CA727BED8B76A60015627FA7D8 /* Prime Test.swift */, + 113E0416CF81608D72B59B8F2541027A /* Random.swift */, + 072D93E76657AD12862AB0BBB44C5648 /* Shifts.swift */, + D394066B2E46CE1FEECF341A753FFA6D /* Square Root.swift */, + CCACB4DE2A8E1A481DE0EDC3DD135956 /* Strideable.swift */, + 73128202582D9212ED3EEF1632B8BA1B /* String Conversion.swift */, + 32423D6FC8955335CA0A685C6202EBD1 /* Subtraction.swift */, + A89C12D62DCE512AE5FBA7F84A812996 /* Words and Bits.swift */, + BCEBA8230D52CD6D3AA10928F9360006 /* Support Files */, ); - name = EthereumAddress; - path = EthereumAddress; + path = BigInt; sourceTree = ""; }; /* End PBXGroup section */ @@ -1832,41 +1482,48 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 237132210F2C948E66AD5A32D0BB7146 /* Headers */ = { + 1645A4CDF3375FA55A9AA5C0AA2DCBB8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6450AB34A45E7F4C948AC1114E1FFDBF /* Pods-web3swift-macOS-umbrella.h in Headers */, + 657E91E8B0EAA72213D558B59C01E78E /* AnyPromise.h in Headers */, + 91B44CF38F03AF81BE21A62720419F4D /* fwd.h in Headers */, + B080F6207B434DEA239861DC62D46FF9 /* NSNotificationCenter+AnyPromise.h in Headers */, + 891A3C83939B073416A453E49A1131E1 /* NSTask+AnyPromise.h in Headers */, + F5D3EB7AA0BF1E2FEC8211862AD33BDF /* NSURLSession+AnyPromise.h in Headers */, + 4C65C4B790C69EC8DC2D6FBD7F5F851B /* PMKFoundation.h in Headers */, + 4843A58391A8603A5E5272279AFA8702 /* PromiseKit.h in Headers */, + ACF8BB802D16D86CE8986340B65881AD /* PromiseKit.root-CorePromise-Foundation-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 264D7EDB0262174A634304C972F7F02B /* Headers */ = { + 1CE186858D1B5D0DC48ECBC1C77D8BA9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 022B431C7C8752440448F1DC6D16F405 /* EthereumABI-macOS-umbrella.h in Headers */, - 8E0AB3AF54DC3A29F923DD589DFF3E33 /* EthereumABI.h in Headers */, + 304651BE6224CA23CC6BD71163073C4B /* AnyPromise.h in Headers */, + 34948B04B578AF2A5E8D9DC4EEC0B7CB /* fwd.h in Headers */, + 766D21DEDBC977F2D33E2E7338509A84 /* NSNotificationCenter+AnyPromise.h in Headers */, + E6948825D06148EB1FF119F9A065811F /* NSTask+AnyPromise.h in Headers */, + 6E45AA7244786B9D7136EB5B030A0128 /* NSURLSession+AnyPromise.h in Headers */, + 3F783FE463C608D221126CDCFCB514DA /* PMKFoundation.h in Headers */, + 6CFAAA2C8EF6B62424909332721954C6 /* PMKUIKit.h in Headers */, + F8C6BDD134D9787A6CE74E5A91E936DD /* PromiseKit-umbrella.h in Headers */, + 3295DF8AB7A6899EDC42A076A1485506 /* PromiseKit.h in Headers */, + 90E744BEA37B1A3FC3338DC09038F47B /* UIView+AnyPromise.h in Headers */, + 9894FF579A3BFBB26D353D4D09FCBD7D /* UIViewController+AnyPromise.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2CC7C4F3A184AF0FCF75F03EE2B8AF05 /* Headers */ = { + 49EF5F799A482D55C4BDD890158569D3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4DA86A75F12D7351502421DCBBAB12AD /* SwiftRLP-iOS-umbrella.h in Headers */, - 8B0219EB2CD48D2CE7F1B08FCA5A3672 /* SwiftRLP.h in Headers */, + D2879925DB5DED6BC89F5D1B70AEE43A /* CryptoSwift-iOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 49EF5F799A482D55C4BDD890158569D3 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - D2879925DB5DED6BC89F5D1B70AEE43A /* CryptoSwift-iOS-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 52BEA97FB7AF6CB1E04CEB12C6D12CC3 /* Headers */ = { + 52BEA97FB7AF6CB1E04CEB12C6D12CC3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( @@ -1874,24 +1531,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5409E52F16BE98F4EB25ED8F6E4B5487 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 6B8162913CB7353C205542A736AC2C7F /* AnyPromise.h in Headers */, - E9C0674C53DC69A15E24F9F3687A76EB /* fwd.h in Headers */, - DE6460A21AC62DC6D7D8EF8A01A5D9F5 /* NSNotificationCenter+AnyPromise.h in Headers */, - BD84CDFF4634B525655ADF54807F37C1 /* NSTask+AnyPromise.h in Headers */, - ED20A073CA36541637AB25821B687255 /* NSURLSession+AnyPromise.h in Headers */, - C1644D9EBBBC6A8B88BA522200B7B84F /* PMKFoundation.h in Headers */, - 35350BBB406679583EA6863DAA8140EC /* PMKUIKit.h in Headers */, - 7093965F04EEE34C346E5A5BF9C625D1 /* PromiseKit-umbrella.h in Headers */, - 5ED3A0F5F11EA960F868E2902448B37A /* PromiseKit.h in Headers */, - 7BA7DBEA99267F9E13F9602C747880F0 /* UIView+AnyPromise.h in Headers */, - 14E030347AC858068E3B0504B303E206 /* UIViewController+AnyPromise.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 5AEA086BC85747FFF6DA10E9B2A12D53 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1907,15 +1546,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6F324F9DD7DC33D67BFBCFA9C29D7407 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0D56FC0A02CFA67CED7FABF1E43993BE /* SwiftRLP-macOS-umbrella.h in Headers */, - 20E3C2E2A103F5ED5D4271DAC1CD0C97 /* SwiftRLP.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 6F86DEC4BFBEF39853B81B9577B9A429 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1970,15 +1600,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 77FF0B472FF3A522D7470C169C0EA0E9 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 7BBA56BB7C2B36C35DCA69AA819EE420 /* EthereumAddress-iOS-umbrella.h in Headers */, - A657A6E9DE6140BF8BA79A0CF9F252A0 /* EthereumAddress.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 79E82AD12B5CE9E28BE525EBFB14FF27 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1987,11 +1608,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8B364E94AEFAB3188DC1D4D706E1131C /* Headers */ = { + 89D0122112719D9D2734A3261B45B9C7 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 82626C83F45250C4A261F5A3B02482EC /* Pods-web3swift-iOS-umbrella.h in Headers */, + 2423F5718779EC89EE406DD8C7477A55 /* Pods-web3swift-iOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2003,12 +1624,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9F11258F48174939EECCAE7DB5E9C58C /* Headers */ = { + A21BDFD15E310B83C361191B09119E76 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 327A3E34451AB394BFDD5FA1B8B1DDC7 /* EthereumABI-iOS-umbrella.h in Headers */, - 03B650E8237CC0BEB4D7FC9A63BC4812 /* EthereumABI.h in Headers */, + 357CDA76E6576377BCE35DA6755434EE /* Pods-web3swift-macOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2066,30 +1686,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - AD10303F3B8E938D41A9D33275458ED9 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - A5685B3CA4541CDC053EE98DD1734DBA /* AnyPromise.h in Headers */, - D86529EF30A9336CA2FE2661178F99F6 /* fwd.h in Headers */, - 7B85E57B03B837929B123B57101D48A8 /* NSNotificationCenter+AnyPromise.h in Headers */, - 9E55A3B7859FEA3051F3326C2248C952 /* NSTask+AnyPromise.h in Headers */, - 76F4A20BAD96F7259D203DEF2A064AB4 /* NSURLSession+AnyPromise.h in Headers */, - BC32A402F5C0847534109B54424388E4 /* PMKFoundation.h in Headers */, - 363E097BF6A01F967F2CC088DD7DDE05 /* PromiseKit.h in Headers */, - FC7E1B49FBCCC67212409B2770452886 /* PromiseKit.root-CorePromise-Foundation-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AE5A26FE182A594B564E859E36C90035 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B7F7E027B8890BE15103551EDD73731 /* EthereumAddress-macOS-umbrella.h in Headers */, - 4522DBA7A0DEBD2D76EB7148B78F0FA7 /* EthereumAddress.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; C2763EAD50198AF2377106A477FD6709 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2117,25 +1713,6 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 083F82DFFF303D03F2F19B6400070295 /* SwiftRLP-macOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 235D8A83CE355A53C7777869565816FE /* Build configuration list for PBXNativeTarget "SwiftRLP-macOS" */; - buildPhases = ( - 6F324F9DD7DC33D67BFBCFA9C29D7407 /* Headers */, - C453824A3A7A2AAF37C0871B59D00249 /* Sources */, - 5DD0EE1D9F343F82AC70C610CA215BA8 /* Frameworks */, - 2A9463469A9F08A0BE356B4CDBA50DF0 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - DFE6BEFD40A118F5206E8AD2314AC600 /* PBXTargetDependency */, - ); - name = "SwiftRLP-macOS"; - productName = "SwiftRLP-macOS"; - productReference = 61245856493C9C1EC53A726E3CBF97C5 /* libSwiftRLP-macOS.a */; - productType = "com.apple.product-type.library.static"; - }; 1A7ACF23DD7469DD2E30A7CFD00B82E1 /* Pods-web3swift-macOS_Tests */ = { isa = PBXNativeTarget; buildConfigurationList = C1E472055DC8A1A6A182554C8FAEC44B /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS_Tests" */; @@ -2151,7 +1728,7 @@ ); name = "Pods-web3swift-macOS_Tests"; productName = "Pods-web3swift-macOS_Tests"; - productReference = E5669A7EE3FEBAEBFDB1EA9C03E6F26A /* libPods-web3swift-macOS_Tests.a */; + productReference = B609FCFC1B164358EC6F6AA0000EE522 /* libPods-web3swift-macOS_Tests.a */; productType = "com.apple.product-type.library.static"; }; 218BFCBCA0EA83AEA95CE87303914A04 /* CryptoSwift-iOS */ = { @@ -2169,7 +1746,7 @@ ); name = "CryptoSwift-iOS"; productName = "CryptoSwift-iOS"; - productReference = 19735BE346FC7332BFE3AC0AFE55A790 /* libCryptoSwift-iOS.a */; + productReference = A2E5FA56A9EEFC15044BCEC743F89E9E /* libCryptoSwift-iOS.a */; productType = "com.apple.product-type.library.static"; }; 37401ACF771B84D6C3E4480103B94936 /* secp256k1_swift-macOS */ = { @@ -2187,7 +1764,7 @@ ); name = "secp256k1_swift-macOS"; productName = "secp256k1_swift-macOS"; - productReference = 40F45CD90D924FB79D1098E19C07F029 /* libsecp256k1_swift-macOS.a */; + productReference = 0C1D006D056F887719496BFF0950C603 /* libsecp256k1_swift-macOS.a */; productType = "com.apple.product-type.library.static"; }; 452B8173099D29664E78F6AD3753D61C /* Starscream-iOS */ = { @@ -2205,7 +1782,7 @@ ); name = "Starscream-iOS"; productName = "Starscream-iOS"; - productReference = 4C72985B2FBE354A9F9319055F420397 /* libStarscream-iOS.a */; + productReference = 1685174D72AE3061BD5445028C88CE77 /* libStarscream-iOS.a */; productType = "com.apple.product-type.library.static"; }; 63F854E532D7CBA393D37B6C84E1F23F /* BigInt-macOS */ = { @@ -2224,7 +1801,7 @@ ); name = "BigInt-macOS"; productName = "BigInt-macOS"; - productReference = 6DB61B4C9C0BB83FB2F7118D8879739F /* libBigInt-macOS.a */; + productReference = 219E98401E570D07C58CE357630DEB1A /* libBigInt-macOS.a */; productType = "com.apple.product-type.library.static"; }; 65CF043BCE2D53116C7B4659477A3E72 /* CryptoSwift-macOS */ = { @@ -2242,17 +1819,17 @@ ); name = "CryptoSwift-macOS"; productName = "CryptoSwift-macOS"; - productReference = 81094266A97FA4A09C887251372B098C /* libCryptoSwift-macOS.a */; + productReference = EDB1502B2FC1EB700D835A8CCF5CFE21 /* libCryptoSwift-macOS.a */; productType = "com.apple.product-type.library.static"; }; 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */ = { isa = PBXNativeTarget; - buildConfigurationList = C074E161185A339E8820EF78741CBF49 /* Build configuration list for PBXNativeTarget "PromiseKit" */; + buildConfigurationList = 9AC7F2E96A95C0CA51BCBB553D5D9B89 /* Build configuration list for PBXNativeTarget "PromiseKit" */; buildPhases = ( - 5409E52F16BE98F4EB25ED8F6E4B5487 /* Headers */, - B82A3ADF2796A4989254E9E2F7A76A9C /* Sources */, - ED637A867D15BEEBD555E43AB8DC3685 /* Frameworks */, - C6349964D25473F92E3AD95F648E764E /* Copy generated compatibility header */, + 1CE186858D1B5D0DC48ECBC1C77D8BA9 /* Headers */, + 004133DDEBB412B95EA027CFF94E37FE /* Sources */, + E269B8691503F938463E7DCA530ABDB3 /* Frameworks */, + 9527E74E111381B2296BED3B441A1AA7 /* Copy generated compatibility header */, ); buildRules = ( ); @@ -2260,7 +1837,7 @@ ); name = PromiseKit; productName = PromiseKit; - productReference = 72A80BD6B5AE54F0E7D97C194789E0A5 /* libPromiseKit.a */; + productReference = 1E954888E86E1DB23C4298AC4049B901 /* libPromiseKit.a */; productType = "com.apple.product-type.library.static"; }; 7CC079C3BDE01C7F13C2F0F27E1FA4BE /* secp256k1_swift-iOS */ = { @@ -2278,33 +1855,30 @@ ); name = "secp256k1_swift-iOS"; productName = "secp256k1_swift-iOS"; - productReference = 2AB1CD9F14C48B0297A0032E8A240931 /* libsecp256k1_swift-iOS.a */; + productReference = C9FAE30EFA33F0294739AB297F3730CD /* libsecp256k1_swift-iOS.a */; productType = "com.apple.product-type.library.static"; }; 7F80E92F65A51D5A7FA259331F9B7BCC /* Pods-web3swift-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 41A64937BF8615E126715A471EA9F57D /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS" */; + buildConfigurationList = CE0288CBC18ADCB4A97A0F135351A676 /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS" */; buildPhases = ( - 237132210F2C948E66AD5A32D0BB7146 /* Headers */, - 2EA342AFD7B98305547E2079E16B854B /* Sources */, - 9D4B54990055702C33164B3DAC711967 /* Frameworks */, + A21BDFD15E310B83C361191B09119E76 /* Headers */, + 68FCE778BF4430B1F389A62D564BD8A8 /* Sources */, + C3E60290D6F71E50D2155B63D5CAE610 /* Frameworks */, ); buildRules = ( ); dependencies = ( - E7980468BE8F71A4EC7A7317F922F9B5 /* PBXTargetDependency */, - 3246A8EC5DA3DCF14106C6EC033D6667 /* PBXTargetDependency */, - BFEBD4328DDB0651B8C038B1BB713851 /* PBXTargetDependency */, - CB064A4E092B54AC8D57278C2D13733B /* PBXTargetDependency */, - 92B6C692B03ED902705EBBDF33CC6231 /* PBXTargetDependency */, - 81B96727F61CF6440E08AFD48B15E074 /* PBXTargetDependency */, - 9643FF74CC989168C7247E5552DA8FA2 /* PBXTargetDependency */, - 789F96C8335C801055A44DC1A5D95F99 /* PBXTargetDependency */, - 4FD26074CAACDD92161E237E2D7127D2 /* PBXTargetDependency */, + 8264D6EB9B3F6E1D89518A7542F35084 /* PBXTargetDependency */, + 10650FEE720977642BBAA54A4EB9F94A /* PBXTargetDependency */, + 0F5CD71A5B7927AB53141A0B39D34F82 /* PBXTargetDependency */, + 321D3B61EE0B3FEC37F43090F958A3A7 /* PBXTargetDependency */, + 40F4FBE064B793412FB6DBF7D4186281 /* PBXTargetDependency */, + F07869AD8F97E4BCF4B0096F471EBF03 /* PBXTargetDependency */, ); name = "Pods-web3swift-macOS"; productName = "Pods-web3swift-macOS"; - productReference = 3E5792474118A82E0B3F539AD378B14A /* libPods-web3swift-macOS.a */; + productReference = EAE7EA4ACC152062B41C0E0022105F70 /* libPods-web3swift-macOS.a */; productType = "com.apple.product-type.library.static"; }; 889A3C6D0A70D789D17B7BFFE160AD76 /* BigInt-iOS */ = { @@ -2323,7 +1897,7 @@ ); name = "BigInt-iOS"; productName = "BigInt-iOS"; - productReference = 7D10E1F2DCA2F4839706AD161C30345A /* libBigInt-iOS.a */; + productReference = 84D9F4887CFFEE4310D455E977073A4F /* libBigInt-iOS.a */; productType = "com.apple.product-type.library.static"; }; 88F35C8F653FAD94A8ED8126A7FF16AC /* Starscream-macOS */ = { @@ -2341,7 +1915,7 @@ ); name = "Starscream-macOS"; productName = "Starscream-macOS"; - productReference = 09A060ACCCC97C8C2F9B0CF9AAC05248 /* libStarscream-macOS.a */; + productReference = 683B319B3BEC934DC1D090904F2E091A /* libStarscream-macOS.a */; productType = "com.apple.product-type.library.static"; }; 94357A3A965B61C3A4DEC1C0240780A9 /* SipHash-macOS */ = { @@ -2359,54 +1933,30 @@ ); name = "SipHash-macOS"; productName = "SipHash-macOS"; - productReference = 82312C406689442ADA04A4FDC232ABF8 /* libSipHash-macOS.a */; - productType = "com.apple.product-type.library.static"; - }; - 9ACB0E6D78ADA926658D244695ECC164 /* EthereumABI-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 142DB58B9F87D2DBAF25171E397B246B /* Build configuration list for PBXNativeTarget "EthereumABI-iOS" */; - buildPhases = ( - 9F11258F48174939EECCAE7DB5E9C58C /* Headers */, - 322C5A6F8FC6199FB1553BF9C719B00F /* Sources */, - E3B3E4B3992B370F5F4CC6A4F747CD9A /* Frameworks */, - 82F39463DFA53C25F231A903CB3DD488 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - 7D033B15CD16534F27116EFA191FEB12 /* PBXTargetDependency */, - 5DCB12F51A2EB92BA621DA1450EC1252 /* PBXTargetDependency */, - 20E5B9F864B754FD3CADCE6FBDC52F7B /* PBXTargetDependency */, - ); - name = "EthereumABI-iOS"; - productName = "EthereumABI-iOS"; - productReference = BC56686BF0218B6C5E011425D8558740 /* libEthereumABI-iOS.a */; + productReference = 381EFBC9AE16789B1870BCBE392591EC /* libSipHash-macOS.a */; productType = "com.apple.product-type.library.static"; }; BCAE05CF851EE53A209524B024AA6CD3 /* Pods-web3swift-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 3B393364628B66280810FC22FF55C46D /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS" */; + buildConfigurationList = 73F67D8E70C98542E1A16CF25BD13F23 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS" */; buildPhases = ( - 8B364E94AEFAB3188DC1D4D706E1131C /* Headers */, - 291F49956A8AF61A00F4CFB5C712042F /* Sources */, - BF3B4863186DDED81AEC47612F7B2623 /* Frameworks */, + 89D0122112719D9D2734A3261B45B9C7 /* Headers */, + 2A7EDDC002251997797FEA3F8200F88F /* Sources */, + 377A42523AFCB85BB0530B75F66D286D /* Frameworks */, ); buildRules = ( ); dependencies = ( - 037CD6CBDE374FAD8ABB625CDDECDF68 /* PBXTargetDependency */, - C7A2067126EFB8E6FE5C6CC59E65E86F /* PBXTargetDependency */, - 30953C7E4B9525FE3357794230993360 /* PBXTargetDependency */, - 5FDCC8C7160E37932C15C20777FF70CB /* PBXTargetDependency */, - C28C3EAEF1D65C4051451C528B2C3227 /* PBXTargetDependency */, - F8E0F6A87FB2B1FCF32BED5EC2374510 /* PBXTargetDependency */, - 31C5D2784B1E20200C28F085D8D6D9F1 /* PBXTargetDependency */, - B66596529348E376B607D13222A8FD66 /* PBXTargetDependency */, - C401524AAC0ABD7D688FFDD04DB8A503 /* PBXTargetDependency */, + 89EA1032567346F64D1556A33530BF15 /* PBXTargetDependency */, + B11FA0DEEB0017FCAFE47A617D1B4FA6 /* PBXTargetDependency */, + D51EFC43CFDA7179D9ED4F640353C01F /* PBXTargetDependency */, + 84B08A092F240A2C763CD669B5202D93 /* PBXTargetDependency */, + D2C56517624E1FE4E0A186244E2C7044 /* PBXTargetDependency */, + 7FF153C63A92B724AFCF56892EBB4DFA /* PBXTargetDependency */, ); name = "Pods-web3swift-iOS"; productName = "Pods-web3swift-iOS"; - productReference = C942FD24C16D9A69749A423B486198C4 /* libPods-web3swift-iOS.a */; + productReference = 1F378E51A334910200DB16EA3B7513B1 /* libPods-web3swift-iOS.a */; productType = "com.apple.product-type.library.static"; }; C03DEEFE4852B4027014EE22FEBAC1A3 /* SipHash-iOS */ = { @@ -2424,36 +1974,17 @@ ); name = "SipHash-iOS"; productName = "SipHash-iOS"; - productReference = CE81C70D926AE4F7E807EF9555BFDB79 /* libSipHash-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - C3F2705295C36759D5C023EF4E8E5AD4 /* SwiftRLP-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = DC1288B1B04A76EBD7BB230C986DCA59 /* Build configuration list for PBXNativeTarget "SwiftRLP-iOS" */; - buildPhases = ( - 2CC7C4F3A184AF0FCF75F03EE2B8AF05 /* Headers */, - 92F348D8B92461738F51F39073CF6D1B /* Sources */, - C3B1195598DCC55AFD13F8A4EAEB7FE6 /* Frameworks */, - 41B2C9DA31C7FC712CAFBEE7E614CA0D /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - 363FB340609F1E3F98A165212E6078AA /* PBXTargetDependency */, - ); - name = "SwiftRLP-iOS"; - productName = "SwiftRLP-iOS"; - productReference = D8868B1AA7A89468B716687B08EBDC9E /* libSwiftRLP-iOS.a */; + productReference = 2FF8532600A1D47B74F651F43966153E /* libSipHash-iOS.a */; productType = "com.apple.product-type.library.static"; }; D91322818F7EF2905BF914BDDBAA819E /* PromiseKit.root-CorePromise-Foundation */ = { isa = PBXNativeTarget; - buildConfigurationList = 1ADFC6A31A487D87EE2E371ADD088F16 /* Build configuration list for PBXNativeTarget "PromiseKit.root-CorePromise-Foundation" */; + buildConfigurationList = 27BA07F740069FE03AF21BBAAEF060AE /* Build configuration list for PBXNativeTarget "PromiseKit.root-CorePromise-Foundation" */; buildPhases = ( - AD10303F3B8E938D41A9D33275458ED9 /* Headers */, - 187579815D9B43C9A348D99F6340C766 /* Sources */, - 5844E7DD883808D3433316615CF9C012 /* Frameworks */, - DC65B71E4B3E6DFBEA5BF8B4321A8ABA /* Copy generated compatibility header */, + 1645A4CDF3375FA55A9AA5C0AA2DCBB8 /* Headers */, + DD028625CCEF5638B25FC1C5E52BCDAB /* Sources */, + 297A0939C2D0C2C6BB00683CF67FC1A1 /* Frameworks */, + E4702AAEB1CD36136AE94DA533375287 /* Copy generated compatibility header */, ); buildRules = ( ); @@ -2461,66 +1992,7 @@ ); name = "PromiseKit.root-CorePromise-Foundation"; productName = "PromiseKit.root-CorePromise-Foundation"; - productReference = 3F4927ED614A775188589F2827745E7C /* libPromiseKit.root-CorePromise-Foundation.a */; - productType = "com.apple.product-type.library.static"; - }; - E5027A132BD8BEDEF67AC1A970982AB4 /* EthereumAddress-macOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4D5FBB0546A0B000C22A79317913D9B2 /* Build configuration list for PBXNativeTarget "EthereumAddress-macOS" */; - buildPhases = ( - AE5A26FE182A594B564E859E36C90035 /* Headers */, - BE878AB5F77741758CEA5E9C4FD05B5F /* Sources */, - DC5833E9151F76136A6224E15707D305 /* Frameworks */, - 46BF1876F0B7253124293BA9166E041F /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - FEF06C956F28FF4750FD5E074B519447 /* PBXTargetDependency */, - ); - name = "EthereumAddress-macOS"; - productName = "EthereumAddress-macOS"; - productReference = 9D5AB068E1914C42B09569231AEB2B4B /* libEthereumAddress-macOS.a */; - productType = "com.apple.product-type.library.static"; - }; - EC318E575402922FD9228D8DC970D293 /* EthereumABI-macOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = C81D59105640469B38DF58B0E45BE834 /* Build configuration list for PBXNativeTarget "EthereumABI-macOS" */; - buildPhases = ( - 264D7EDB0262174A634304C972F7F02B /* Headers */, - 51C938BAE18755447E9658ECE44D2046 /* Sources */, - 02E2FBA88DABD75BA783291235FB891E /* Frameworks */, - 3D6C572BBA18AC306006D515D355A3D5 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - 8CE40DBD74AE8894A44FFEDFB8E2C39F /* PBXTargetDependency */, - A7729B939DEA543F8C45E1AE6EA2D55A /* PBXTargetDependency */, - 8240056CD06B5F5A05DA302283ABE543 /* PBXTargetDependency */, - ); - name = "EthereumABI-macOS"; - productName = "EthereumABI-macOS"; - productReference = 2179690C48BF2A485E32EB4DE0188D6E /* libEthereumABI-macOS.a */; - productType = "com.apple.product-type.library.static"; - }; - F48D9463B784559D75B1E6B9A370AE41 /* EthereumAddress-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1C38B120063EAAA45E94EED1E54A39DD /* Build configuration list for PBXNativeTarget "EthereumAddress-iOS" */; - buildPhases = ( - 77FF0B472FF3A522D7470C169C0EA0E9 /* Headers */, - C46637250722AF90C1DE5F472827C917 /* Sources */, - A1C29AA1B0A0655F03EBF68C31357B32 /* Frameworks */, - B20267FE1FC7F02612ECA1BFAB6C0CAE /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - 84612B4B3B05210404A62FB9E5C05616 /* PBXTargetDependency */, - ); - name = "EthereumAddress-iOS"; - productName = "EthereumAddress-iOS"; - productReference = 0A75E62EB2CD53DBF3FF57137C12D9E4 /* libEthereumAddress-iOS.a */; + productReference = D1BAD2B34BFA26259BEEAF113B7AB672 /* libPromiseKit.root-CorePromise-Foundation.a */; productType = "com.apple.product-type.library.static"; }; F61ADAB653ED0D1D71496A5F7DE2E34D /* Pods-web3swift-iOS_Tests */ = { @@ -2538,7 +2010,7 @@ ); name = "Pods-web3swift-iOS_Tests"; productName = "Pods-web3swift-iOS_Tests"; - productReference = FCC8BC5E7A71B1F43B89B3EAA301AED8 /* libPods-web3swift-iOS_Tests.a */; + productReference = 1235CA7678CE59512DC38AC0528FC48B /* libPods-web3swift-iOS_Tests.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -2548,17 +2020,23 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1020; + TargetAttributes = { + 7CC079C3BDE01C7F13C2F0F27E1FA4BE = { + LastSwiftMigration = 1020; + }; + }; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 8.0"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 9EF6A46EE8052ECACF9F964673952BEA /* Products */; + productRefGroup = 64EBF76DB6D758243BC5CCB5DA42AAAD /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -2566,10 +2044,6 @@ 63F854E532D7CBA393D37B6C84E1F23F /* BigInt-macOS */, 218BFCBCA0EA83AEA95CE87303914A04 /* CryptoSwift-iOS */, 65CF043BCE2D53116C7B4659477A3E72 /* CryptoSwift-macOS */, - 9ACB0E6D78ADA926658D244695ECC164 /* EthereumABI-iOS */, - EC318E575402922FD9228D8DC970D293 /* EthereumABI-macOS */, - F48D9463B784559D75B1E6B9A370AE41 /* EthereumAddress-iOS */, - E5027A132BD8BEDEF67AC1A970982AB4 /* EthereumAddress-macOS */, BCAE05CF851EE53A209524B024AA6CD3 /* Pods-web3swift-iOS */, F61ADAB653ED0D1D71496A5F7DE2E34D /* Pods-web3swift-iOS_Tests */, 7F80E92F65A51D5A7FA259331F9B7BCC /* Pods-web3swift-macOS */, @@ -2582,8 +2056,6 @@ 94357A3A965B61C3A4DEC1C0240780A9 /* SipHash-macOS */, 452B8173099D29664E78F6AD3753D61C /* Starscream-iOS */, 88F35C8F653FAD94A8ED8126A7FF16AC /* Starscream-macOS */, - C3F2705295C36759D5C023EF4E8E5AD4 /* SwiftRLP-iOS */, - 083F82DFFF303D03F2F19B6400070295 /* SwiftRLP-macOS */, ); }; /* End PBXProject section */ @@ -2661,102 +2133,6 @@ shellPath = /bin/sh; shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - 2A9463469A9F08A0BE356B4CDBA50DF0 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap", - "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SwiftRLP-macOS-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 3D6C572BBA18AC306006D515D355A3D5 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap", - "${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/EthereumABI-macOS-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 41B2C9DA31C7FC712CAFBEE7E614CA0D /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SwiftRLP-iOS-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 46BF1876F0B7253124293BA9166E041F /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap", - "${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/EthereumAddress-macOS-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; 7086262844B0F6ECDA9CB5F752536494 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -2781,30 +2157,6 @@ shellPath = /bin/sh; shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SipHash/SipHash-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SipHash/SipHash-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - 82F39463DFA53C25F231A903CB3DD488 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/EthereumABI-iOS-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; 8BCC12D7EBE7D6D51D0325F117D2507E /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -2853,7 +2205,7 @@ shellPath = /bin/sh; shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - B20267FE1FC7F02612ECA1BFAB6C0CAE /* Copy generated compatibility header */ = { + 9527E74E111381B2296BED3B441A1AA7 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2862,20 +2214,20 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.modulemap", + "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/EthereumAddress-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/PromiseKit-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; BDFFD1A9D066371C8B44AD98CC3918DF /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; @@ -2901,30 +2253,6 @@ shellPath = /bin/sh; shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - C6349964D25473F92E3AD95F648E764E /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.modulemap", - "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/PromiseKit-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; CE3CF38525DCE08112A80588851E9029 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -2949,7 +2277,7 @@ shellPath = /bin/sh; shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/BigInt/BigInt-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/BigInt/BigInt-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - DC65B71E4B3E6DFBEA5BF8B4321A8ABA /* Copy generated compatibility header */ = { + E4702AAEB1CD36136AE94DA533375287 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -3024,50 +2352,55 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 187579815D9B43C9A348D99F6340C766 /* Sources */ = { + 004133DDEBB412B95EA027CFF94E37FE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 37D4FDB5780A501363399C76C3F8A0E1 /* after.m in Sources */, - 6E388FC4286DC27751ACF8C9D4DEF166 /* after.swift in Sources */, - C78B4C9CF0EB91851ED4F92F5D7BCCC1 /* afterlife.swift in Sources */, - 07B52D11465AFADDA0922C296F3C962F /* AnyPromise.m in Sources */, - CF2A494719432135F30077A9668F76E5 /* AnyPromise.swift in Sources */, - C26DB6720DEA38021DF68C24F30EE35D /* Box.swift in Sources */, - D3EE9B2E801716B1289CC61093A53A74 /* Catchable.swift in Sources */, - 3AFB09BA89E8209E5860153952A5F633 /* Configuration.swift in Sources */, - D5B9081856F86BB27F099D58204FC8F3 /* CustomStringConvertible.swift in Sources */, - 4CF3AB5953980F1BE7AACF4BFCDBBF47 /* Deprecations.swift in Sources */, - 88C757D0524E0DD15E6AE2D961FBF67E /* dispatch_promise.m in Sources */, - 3559A7A8E7B191D2BB3A6FFE39969474 /* Error.swift in Sources */, - 180706F21BF426F0D3D1B99B0C9477EF /* firstly.swift in Sources */, - 0911D55A0B09055D6CF157BE168BC52D /* Guarantee.swift in Sources */, - 9A08E6873A1EB47CAAE76D90F9021F9A /* hang.m in Sources */, - 0FA99484039A8BEB2423C0E701C05DA1 /* hang.swift in Sources */, - 4465B572B209EAB6564086249F3DBDD0 /* join.m in Sources */, - 1B613212C785996AF8EB7231C256F79E /* NSNotificationCenter+AnyPromise.m in Sources */, - C7914EDD8576F0557E5EEA29F0F66F41 /* NSNotificationCenter+Promise.swift in Sources */, - AE87CB774A606D36D5D323DF7B347B85 /* NSObject+Promise.swift in Sources */, - E0C5DD62FCC9C2A41533A44DF8BC3539 /* NSTask+AnyPromise.m in Sources */, - 72AEC165C95549FCB1D95984BFAD43EB /* NSURLSession+AnyPromise.m in Sources */, - 70665101427F9CA2B3919E12AA56CFB6 /* NSURLSession+Promise.swift in Sources */, - 28EE037EE765815C85B1864FDA289DBE /* Process+Promise.swift in Sources */, - D2BDF82C0FD6D55EC7B617C3C312C8C0 /* Promise.swift in Sources */, - 4123A2F2BEB523206CDB002F90969932 /* PromiseKit.root-CorePromise-Foundation-dummy.m in Sources */, - 218252986F3FE334E9419BAE32CA0C16 /* race.m in Sources */, - 9CD54DF0F23BEAD0E2001FCE912585B1 /* race.swift in Sources */, - C91817F3F22292D445C4AFAAABA9DFD8 /* Resolver.swift in Sources */, - 8CFF981E7C467CED9E37F0376F5202A2 /* Thenable.swift in Sources */, - 5CF8A73123657D5E589251C7C5A2DFF4 /* when.m in Sources */, - FC1C6F6D2B8F14E51FABF33D5D4A4CBA /* when.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 291F49956A8AF61A00F4CFB5C712042F /* Sources */ = { + 3CA57F4C1F693AF624BC81A47558FD53 /* after.m in Sources */, + AC2B039EA1755C11BC9E2F9B44DEF013 /* after.swift in Sources */, + CDA2D5E0EE42C3E39949543B21A6855C /* afterlife.swift in Sources */, + 731F6AF4B9003474A7F483ACA792CEF9 /* AnyPromise.m in Sources */, + 16AB332EAE742445CC3FB8EBF34AF2B2 /* AnyPromise.swift in Sources */, + 8FF058D4B8878CC3A0C319D324301698 /* Box.swift in Sources */, + 7AD014CF13E6DF9AC5096CD658320505 /* Catchable.swift in Sources */, + 21C45164BA9D0172A286ADE8715116A4 /* Configuration.swift in Sources */, + 6BF85113793B3B550B80C836C5331B53 /* CustomStringConvertible.swift in Sources */, + BB167AC671BEA02181B4BA97D487DBF1 /* Deprecations.swift in Sources */, + 4BE4B09F5BAFDF39618C39FA1670B4A1 /* dispatch_promise.m in Sources */, + 6C6C69C52B9B5BF2B3EA1435E7368EAC /* Error.swift in Sources */, + 06A8D45D409443986F839D317B2F66E9 /* firstly.swift in Sources */, + 9D102E71957D46C0B7235115A0E05CDB /* Guarantee.swift in Sources */, + 30EDA872902E4E7F8DB7D4C265754432 /* hang.m in Sources */, + 2478AE9F55B081C003329434D8A2FFDE /* hang.swift in Sources */, + 2F8A56B4A6507A38B1B84EDDBEEFDFF1 /* join.m in Sources */, + 8DA53E0490329F9745892A0550FB64DA /* LogEvent.swift in Sources */, + E37A626513E0CE69497A07E089FE9D18 /* NSNotificationCenter+AnyPromise.m in Sources */, + F10AC4BB98E4147289E809BEA912B94A /* NSNotificationCenter+Promise.swift in Sources */, + E032F707673BA0095183B54D772A0D7C /* NSObject+Promise.swift in Sources */, + 58DADEFEFC3D99EC0302255C0B0120C7 /* NSTask+AnyPromise.m in Sources */, + AB284EA2F9102F9624BFB1724735E71B /* NSURLSession+AnyPromise.m in Sources */, + 3F933408D15C84E0D05F643BEC1C506D /* NSURLSession+Promise.swift in Sources */, + C00F3BA3A1EAA206A9163135DC003F73 /* Process+Promise.swift in Sources */, + E9F84B440851BB1388B3A113124CD3B5 /* Promise.swift in Sources */, + 043AC05F23E9C59CC1A7F48E3FC477DE /* PromiseKit-dummy.m in Sources */, + C26DF13E91E61B8E44BF3CABA6600A7B /* race.m in Sources */, + 79FF366B10CB8D8565BB0AA73DBEBF1B /* race.swift in Sources */, + 79C57833CA884F11C921D5BB68611C53 /* Resolver.swift in Sources */, + 982565212122020ECAD005CA91F4C71C /* Thenable.swift in Sources */, + 31488A9BA10F4EA61B7AE5AE427BB97A /* UIView+AnyPromise.m in Sources */, + 1AF9930C8AD9068C23C077EFE8E47D8E /* UIView+Promise.swift in Sources */, + 29163DCCA96C5BB244A4A2A4B4258DB8 /* UIViewController+AnyPromise.m in Sources */, + 761ADAE7763EA204F95443E634971F84 /* UIViewPropertyAnimator+Promise.swift in Sources */, + 50CB47BF15C56A30425F61BF4F5A210F /* when.m in Sources */, + 79C465A5657F6D9F45DE6735F574BA2C /* when.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2A7EDDC002251997797FEA3F8200F88F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9C49C8F33E594D2C6DACB93CCF4402E2 /* Pods-web3swift-iOS-dummy.m in Sources */, + B1BEF29FE9B4CEED40EAC1865720E105 /* Pods-web3swift-iOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3083,30 +2416,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2EA342AFD7B98305547E2079E16B854B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 053F83151425C8B2CBE1DEDDF5E4113F /* Pods-web3swift-macOS-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 322C5A6F8FC6199FB1553BF9C719B00F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 51D7430F23144EFB2A36FDE351A6D996 /* ABI.swift in Sources */, - 8343E0CD704DDF33F0DA4CE7AB8A54E9 /* ABIDecoding.swift in Sources */, - F192B9AA41CE18FAABE09EBE04223176 /* ABIElements.swift in Sources */, - FB9173AB116AC0E3A81C6D45598D0664 /* ABIEncoding.swift in Sources */, - 73B1A9F3331D799BF30DEC8A10506007 /* ABIExtensions.swift in Sources */, - 8AD02821DA12985D2761C78526F2EBC8 /* ABIParameterTypes.swift in Sources */, - 334E6BEBF2CAA31BB2E7F88BE0957F35 /* ABIParsing.swift in Sources */, - B8430DD99BFA0E77648CB58FA8703792 /* ABITypeParser.swift in Sources */, - 97492EE70DC6A2BB2F2A2D79FD0C1FBA /* EthereumABI-iOS-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 3B8A11C9B51F842CC04890FC9288A9E1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3131,35 +2440,27 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 51C938BAE18755447E9658ECE44D2046 /* Sources */ = { + 599841B1239AE833928D7E250055187C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - ACA246ADC243516B958514961ADFA448 /* ABI.swift in Sources */, - EC847E84AB56C7495E6C5757626DD9B2 /* ABIDecoding.swift in Sources */, - 5D1489AF420BA86ED7267F073472FFFD /* ABIElements.swift in Sources */, - CF1B3D883A771890014357974079E79F /* ABIEncoding.swift in Sources */, - C2A34B9C5DC6B5BA9515632AFCB3B696 /* ABIExtensions.swift in Sources */, - 10717F8A2457487A4D4C18F24CFBCC86 /* ABIParameterTypes.swift in Sources */, - 0F9C3AAB096E8C0FE8DF2F59168EEBF3 /* ABIParsing.swift in Sources */, - 8C2E921986CBD898E3CB198E565A1B4F /* ABITypeParser.swift in Sources */, - A598C6767AF38F053748123382282A95 /* EthereumABI-macOS-dummy.m in Sources */, + 09B6BC2DBE49E7A8C1A7EABA34ACE318 /* Pods-web3swift-macOS_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 599841B1239AE833928D7E250055187C /* Sources */ = { + 61027DBF7F22B307C05DA33E80C5AC45 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 09B6BC2DBE49E7A8C1A7EABA34ACE318 /* Pods-web3swift-macOS_Tests-dummy.m in Sources */, + 644892D4646BB52B39011A418EA6B185 /* Pods-web3swift-iOS_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 61027DBF7F22B307C05DA33E80C5AC45 /* Sources */ = { + 68FCE778BF4430B1F389A62D564BD8A8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 644892D4646BB52B39011A418EA6B185 /* Pods-web3swift-iOS_Tests-dummy.m in Sources */, + BC4C7EE9D0694A3A0F98C92EF3197633 /* Pods-web3swift-macOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3223,15 +2524,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 92F348D8B92461738F51F39073CF6D1B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A2844278FFC10E7E29A67DA4CF61DE80 /* RLP.swift in Sources */, - 6E7911B920C62CD0A6550093A52D92A3 /* SwiftRLP-iOS-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9686218BE13C2277AE4C631D1D55D9B1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3327,103 +2619,71 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B82A3ADF2796A4989254E9E2F7A76A9C /* Sources */ = { + C92AABEEF697F813BAF19D60FCE6BA15 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - AE9F6FC5A380873A4B54271F7D01A6D7 /* after.m in Sources */, - 888725383CEEF37B79262C123C0D513B /* after.swift in Sources */, - B1B9CE5F743A2D03D29B5C096EB8A7F1 /* afterlife.swift in Sources */, - 9C31F988DC3F2591930BA87DC99B2221 /* AnyPromise.m in Sources */, - 91B9EA48A8FFB719CB7D3E225C90C633 /* AnyPromise.swift in Sources */, - 70A8CA84F69DF2609568FFC38B46A493 /* Box.swift in Sources */, - 1320F17FFDF4C4CB83653EBF7F399161 /* Catchable.swift in Sources */, - F1A9E5F1FEE7FD9EEA9E895D9F3EE587 /* Configuration.swift in Sources */, - DB77DEACF299419A6A05E14F47C2FFE9 /* CustomStringConvertible.swift in Sources */, - 3A97BEE7E6EE85BE7466F516701AD584 /* Deprecations.swift in Sources */, - F123ACE93DB4C3AEFD66D668B46BA596 /* dispatch_promise.m in Sources */, - B58F649D46DD71537FFEA90899931995 /* Error.swift in Sources */, - 00439D5A6E9D67F769DF04A760CF8797 /* firstly.swift in Sources */, - 7EF7EDC5A9512B104FA6932359D822CF /* Guarantee.swift in Sources */, - 3CD56CB53F54C1F00A71586EEF1F9DB2 /* hang.m in Sources */, - CFB4CA7AD695DBE17EEB5F25AEE6422D /* hang.swift in Sources */, - A2BC5AF6DAC36AF7DD4326F9297F620C /* join.m in Sources */, - 025F981D5C4500BB8AA021194FE47EA7 /* NSNotificationCenter+AnyPromise.m in Sources */, - 0E660F023671ED9ABFBE4F2240F427C1 /* NSNotificationCenter+Promise.swift in Sources */, - 28097ED8B451F07ED5BD6CEE9FDC2CD8 /* NSObject+Promise.swift in Sources */, - EE7F0D9078BF98724F7CF01C12863445 /* NSTask+AnyPromise.m in Sources */, - 6C04F8CDD5800CD80CB5262438959201 /* NSURLSession+AnyPromise.m in Sources */, - 26EBB50E8669E2A1A897A1EB40A9D62C /* NSURLSession+Promise.swift in Sources */, - C5F9AC1F1BB19449C5E3D34DBDFEFC9B /* Process+Promise.swift in Sources */, - 70BAD0FC6AC6BF76FD335BB23951B517 /* Promise.swift in Sources */, - CA105E74AB52BD015F1B00044E4F2619 /* PromiseKit-dummy.m in Sources */, - FE10E047A66CE9F5414FCE13F86AB49A /* race.m in Sources */, - 53A69006D3A783CD2C9CF4494D9EBEA6 /* race.swift in Sources */, - 219D30A27DA74C0F4A8F93AD7F1A0B2E /* Resolver.swift in Sources */, - 0F4004B3B9FB60B20C17CD2D36515902 /* Thenable.swift in Sources */, - BCC9373F6BF7E0C0CC9066E9213BDB3B /* UIView+AnyPromise.m in Sources */, - 10F47D3D1F33B3C138B20176C31F37E6 /* UIView+Promise.swift in Sources */, - 8A8E7D8E38DB414BBD5A34A384E88401 /* UIViewController+AnyPromise.m in Sources */, - 16611430E3EF5802C894F95F267D5AC0 /* UIViewPropertyAnimator+Promise.swift in Sources */, - FD35B9677AD23EEE86E243875D90BA36 /* when.m in Sources */, - 7059F1C6F46F4180F3A2449A405AAA04 /* when.swift in Sources */, + BA7F8FBCB34F37FCB0F7AB8A81FB6963 /* Primitive Types.swift in Sources */, + 15F0FADACFCD4E6B4B0617D2ABD80054 /* RandomUInt64.swift in Sources */, + C7C90FA95B6DAFF96CE15A39386DEC3D /* SipHash-macOS-dummy.m in Sources */, + FCED3D2B26FEC1C6ACE39F9874ACCBE1 /* SipHashable.swift in Sources */, + 186425A9A842EBE5930B4D8F8E636BE4 /* SipHasher.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BE878AB5F77741758CEA5E9C4FD05B5F /* Sources */ = { + DD028625CCEF5638B25FC1C5E52BCDAB /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BF71667304EB972435866625431CB601 /* EthereumAddress-macOS-dummy.m in Sources */, - 0EFABDDC8436ECF2E3AD5DB3AF265EE9 /* EthereumAddress.swift in Sources */, - 9EF152B069063FA3057A27297B32A3A7 /* Extensions.swift in Sources */, + 1E6488AD243EB09B2BAD090507946B76 /* after.m in Sources */, + 029FACF28D637ADA219E3F1E8993B779 /* after.swift in Sources */, + 7128821B4B4A04B8F0F34481BB5307CA /* afterlife.swift in Sources */, + DA77ABDD5590E290DBCCEE64C35E98C1 /* AnyPromise.m in Sources */, + C7FE62180C9EE782C45023AAA6380AC4 /* AnyPromise.swift in Sources */, + 05087E21C624085D72241A62B2D4454B /* Box.swift in Sources */, + 20AD8745CED423283F99706D3E5A4341 /* Catchable.swift in Sources */, + F7E8ABA0A9C18CC0502EE45C99082884 /* Configuration.swift in Sources */, + 71ED40E9913C5AA92EE372845B7EEB1F /* CustomStringConvertible.swift in Sources */, + 922351BE179C58257E39FBE0262F55D2 /* Deprecations.swift in Sources */, + 576FAC97DD811A0980916A1547033E6E /* dispatch_promise.m in Sources */, + 002AAAA880DEFFCA9459A26E9E92E0D9 /* Error.swift in Sources */, + 432568FDF525064342C9336384C3BD8C /* firstly.swift in Sources */, + 8CB8F04DF92349F2D48F7DB33C767F4D /* Guarantee.swift in Sources */, + 12B58DE32E4A642BE42B5DD7F5D3EED0 /* hang.m in Sources */, + 067E808B1D32B4D77117162FF41BB64A /* hang.swift in Sources */, + 2359DFA400D532F3555052AE96E9F3D2 /* join.m in Sources */, + 8A9529EBEDF0322240B3B3BA7298D381 /* LogEvent.swift in Sources */, + F5362B8B3C767F721BDE9FEE6A72BBE5 /* NSNotificationCenter+AnyPromise.m in Sources */, + 03E798430E62F56509146CD18AF60B0C /* NSNotificationCenter+Promise.swift in Sources */, + 9D21860789F5A8A18697DF5C401DD1BE /* NSObject+Promise.swift in Sources */, + E1F158AC7C27E978E69A42DBC398AC30 /* NSTask+AnyPromise.m in Sources */, + FC9BF28AAC3C6C0248F14F32AB7F3B94 /* NSURLSession+AnyPromise.m in Sources */, + 1B765C25585B150AE631EBBC31CC7A4D /* NSURLSession+Promise.swift in Sources */, + FF04AC0FDA7FF8616B6968E37E14DDC6 /* Process+Promise.swift in Sources */, + 9603B30DCB477CEC6627FFBD9E8A57A5 /* Promise.swift in Sources */, + 75DF6653EA1B1382A2E577E28DD50313 /* PromiseKit.root-CorePromise-Foundation-dummy.m in Sources */, + 1EEF0AC9C285DB3CA73F0D9058DF4E71 /* race.m in Sources */, + 64F6BE43BAE3FB36CD067BAEB7892028 /* race.swift in Sources */, + 0A5CF83078426B2D139A8139077C87C9 /* Resolver.swift in Sources */, + A246E373D0B908626F26E7723E0620A6 /* Thenable.swift in Sources */, + 6561010C453130D52D5A2578876746FB /* when.m in Sources */, + 25381F983F3E46B46BB6F2D60583E315 /* when.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C453824A3A7A2AAF37C0871B59D00249 /* Sources */ = { + F59541F37C79EAED2DAE90984496ADF2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D2C25C5A803997A40C4EBD4E39B3C173 /* RLP.swift in Sources */, - 15402A6097DF6978559A905F3A65AC92 /* SwiftRLP-macOS-dummy.m in Sources */, + 53A746CE242B39FD6B76FDF660A57DF3 /* lax_der_parsing.c in Sources */, + 0DDBEBBC35E7006100CCD67DAA2EB959 /* lax_der_privatekey_parsing.c in Sources */, + 1BA549783B4D28E606671796489C4E90 /* secp256k1.c in Sources */, + F8F1F525D9D4FBAEA0E4E190C1E2A795 /* secp256k1.swift in Sources */, + F405D47227694325C4BBD14C00BEEDB4 /* secp256k1_swift-iOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C46637250722AF90C1DE5F472827C917 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 837D71381EBFC606C0D9140EB1EF68A3 /* EthereumAddress-iOS-dummy.m in Sources */, - 27F978D548FE9CB3CCA5C6780758B9B1 /* EthereumAddress.swift in Sources */, - DCB170C0CA0D0E9979EA07BF7A17D33D /* Extensions.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C92AABEEF697F813BAF19D60FCE6BA15 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - BA7F8FBCB34F37FCB0F7AB8A81FB6963 /* Primitive Types.swift in Sources */, - 15F0FADACFCD4E6B4B0617D2ABD80054 /* RandomUInt64.swift in Sources */, - C7C90FA95B6DAFF96CE15A39386DEC3D /* SipHash-macOS-dummy.m in Sources */, - FCED3D2B26FEC1C6ACE39F9874ACCBE1 /* SipHashable.swift in Sources */, - 186425A9A842EBE5930B4D8F8E636BE4 /* SipHasher.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F59541F37C79EAED2DAE90984496ADF2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 53A746CE242B39FD6B76FDF660A57DF3 /* lax_der_parsing.c in Sources */, - 0DDBEBBC35E7006100CCD67DAA2EB959 /* lax_der_privatekey_parsing.c in Sources */, - 1BA549783B4D28E606671796489C4E90 /* secp256k1.c in Sources */, - F8F1F525D9D4FBAEA0E4E190C1E2A795 /* secp256k1.swift in Sources */, - F405D47227694325C4BBD14C00BEEDB4 /* secp256k1_swift-iOS-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FCCDAB4F08D44F01983FD91AA4CCE6EF /* Sources */ = { + FCCDAB4F08D44F01983FD91AA4CCE6EF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -3509,11 +2769,17 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 037CD6CBDE374FAD8ABB625CDDECDF68 /* PBXTargetDependency */ = { + 0F5CD71A5B7927AB53141A0B39D34F82 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "BigInt-iOS"; - target = 889A3C6D0A70D789D17B7BFFE160AD76 /* BigInt-iOS */; - targetProxy = 7CF016ABCF8487BD9D1E13BF6442CC2C /* PBXContainerItemProxy */; + name = "PromiseKit.root-CorePromise-Foundation"; + target = D91322818F7EF2905BF914BDDBAA819E /* PromiseKit.root-CorePromise-Foundation */; + targetProxy = B7BB609EAF645A2F2A0A74A60E7578ED /* PBXContainerItemProxy */; + }; + 10650FEE720977642BBAA54A4EB9F94A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "CryptoSwift-macOS"; + target = 65CF043BCE2D53116C7B4659477A3E72 /* CryptoSwift-macOS */; + targetProxy = D986E640CF642F312D298AA9FFA97025 /* PBXContainerItemProxy */; }; 1E5076AEFED13C88E19389347A9A44E0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -3521,59 +2787,23 @@ target = C03DEEFE4852B4027014EE22FEBAC1A3 /* SipHash-iOS */; targetProxy = 16E1F6E199BD8629EFBBF21A4B6EEBFA /* PBXContainerItemProxy */; }; - 20E5B9F864B754FD3CADCE6FBDC52F7B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "EthereumAddress-iOS"; - target = F48D9463B784559D75B1E6B9A370AE41 /* EthereumAddress-iOS */; - targetProxy = 885DD2864E09A470635E934A27CDDB63 /* PBXContainerItemProxy */; - }; 27876C6F36B5B81CC0BE7D09C423B7BB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-web3swift-iOS"; target = BCAE05CF851EE53A209524B024AA6CD3 /* Pods-web3swift-iOS */; targetProxy = 04BB9F3AA9CEA201B0312466E0A34491 /* PBXContainerItemProxy */; }; - 30953C7E4B9525FE3357794230993360 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "EthereumABI-iOS"; - target = 9ACB0E6D78ADA926658D244695ECC164 /* EthereumABI-iOS */; - targetProxy = 7300E8D6A098B1D01F1AC4EE94358C6B /* PBXContainerItemProxy */; - }; - 31C5D2784B1E20200C28F085D8D6D9F1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Starscream-iOS"; - target = 452B8173099D29664E78F6AD3753D61C /* Starscream-iOS */; - targetProxy = 6548304824D8D26BC7B72A5F6593297D /* PBXContainerItemProxy */; - }; - 3246A8EC5DA3DCF14106C6EC033D6667 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "CryptoSwift-macOS"; - target = 65CF043BCE2D53116C7B4659477A3E72 /* CryptoSwift-macOS */; - targetProxy = CC04F411031DDE1D0C21F229649B0FE4 /* PBXContainerItemProxy */; - }; - 363FB340609F1E3F98A165212E6078AA /* PBXTargetDependency */ = { + 321D3B61EE0B3FEC37F43090F958A3A7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "BigInt-iOS"; - target = 889A3C6D0A70D789D17B7BFFE160AD76 /* BigInt-iOS */; - targetProxy = CAC040BD6A65462774441B87792E738F /* PBXContainerItemProxy */; - }; - 4FD26074CAACDD92161E237E2D7127D2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "secp256k1_swift-macOS"; - target = 37401ACF771B84D6C3E4480103B94936 /* secp256k1_swift-macOS */; - targetProxy = 60490467D394F1AC55E002E7F8215BE0 /* PBXContainerItemProxy */; - }; - 5DCB12F51A2EB92BA621DA1450EC1252 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "CryptoSwift-iOS"; - target = 218BFCBCA0EA83AEA95CE87303914A04 /* CryptoSwift-iOS */; - targetProxy = 364AA8B651F18F2886E24693EF1940D1 /* PBXContainerItemProxy */; + name = "SipHash-macOS"; + target = 94357A3A965B61C3A4DEC1C0240780A9 /* SipHash-macOS */; + targetProxy = 0D7B4AE28E3DF5FCD77A6890C4929E51 /* PBXContainerItemProxy */; }; - 5FDCC8C7160E37932C15C20777FF70CB /* PBXTargetDependency */ = { + 40F4FBE064B793412FB6DBF7D4186281 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "EthereumAddress-iOS"; - target = F48D9463B784559D75B1E6B9A370AE41 /* EthereumAddress-iOS */; - targetProxy = D45EE22AD41D7C4F016DB0E66ACA1D58 /* PBXContainerItemProxy */; + name = "Starscream-macOS"; + target = 88F35C8F653FAD94A8ED8126A7FF16AC /* Starscream-macOS */; + targetProxy = 5BDFC5839C963705E886F6C975D076DC /* PBXContainerItemProxy */; }; 63EDC69CABDBAFBD5853A5A04223AB7E /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -3581,53 +2811,29 @@ target = 7F80E92F65A51D5A7FA259331F9B7BCC /* Pods-web3swift-macOS */; targetProxy = 8CBAE56F1D035B13878CB984283ECE8C /* PBXContainerItemProxy */; }; - 789F96C8335C801055A44DC1A5D95F99 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SwiftRLP-macOS"; - target = 083F82DFFF303D03F2F19B6400070295 /* SwiftRLP-macOS */; - targetProxy = D453A1AE9FEB20CDBB1D117FF4E507E9 /* PBXContainerItemProxy */; - }; - 7D033B15CD16534F27116EFA191FEB12 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "BigInt-iOS"; - target = 889A3C6D0A70D789D17B7BFFE160AD76 /* BigInt-iOS */; - targetProxy = B7F15C4A8D5848B25DA7E80029BDC745 /* PBXContainerItemProxy */; - }; - 81B96727F61CF6440E08AFD48B15E074 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SipHash-macOS"; - target = 94357A3A965B61C3A4DEC1C0240780A9 /* SipHash-macOS */; - targetProxy = 25EAC4CC897F3C8A71E750C126581A38 /* PBXContainerItemProxy */; - }; - 8240056CD06B5F5A05DA302283ABE543 /* PBXTargetDependency */ = { + 7FF153C63A92B724AFCF56892EBB4DFA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "EthereumAddress-macOS"; - target = E5027A132BD8BEDEF67AC1A970982AB4 /* EthereumAddress-macOS */; - targetProxy = 0AA9D376E38410DF31ADC7F2D5670398 /* PBXContainerItemProxy */; - }; - 84612B4B3B05210404A62FB9E5C05616 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "CryptoSwift-iOS"; - target = 218BFCBCA0EA83AEA95CE87303914A04 /* CryptoSwift-iOS */; - targetProxy = 72BFD64578146347897C3A762DE5B045 /* PBXContainerItemProxy */; + name = "secp256k1_swift-iOS"; + target = 7CC079C3BDE01C7F13C2F0F27E1FA4BE /* secp256k1_swift-iOS */; + targetProxy = 1A7ACB21DAFF82C7FB2BA9CB6E4B548C /* PBXContainerItemProxy */; }; - 8CE40DBD74AE8894A44FFEDFB8E2C39F /* PBXTargetDependency */ = { + 8264D6EB9B3F6E1D89518A7542F35084 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "BigInt-macOS"; target = 63F854E532D7CBA393D37B6C84E1F23F /* BigInt-macOS */; - targetProxy = 6F27311A3511C8581E05739C865F652D /* PBXContainerItemProxy */; + targetProxy = 0A683539F553B5A349B0B00549D2E9DE /* PBXContainerItemProxy */; }; - 92B6C692B03ED902705EBBDF33CC6231 /* PBXTargetDependency */ = { + 84B08A092F240A2C763CD669B5202D93 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "PromiseKit.root-CorePromise-Foundation"; - target = D91322818F7EF2905BF914BDDBAA819E /* PromiseKit.root-CorePromise-Foundation */; - targetProxy = 261486F4F9A35C6C8333FE9D8303F2E6 /* PBXContainerItemProxy */; + name = "SipHash-iOS"; + target = C03DEEFE4852B4027014EE22FEBAC1A3 /* SipHash-iOS */; + targetProxy = CC3850DFB801B5DF4057D6E564471FFF /* PBXContainerItemProxy */; }; - 9643FF74CC989168C7247E5552DA8FA2 /* PBXTargetDependency */ = { + 89EA1032567346F64D1556A33530BF15 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Starscream-macOS"; - target = 88F35C8F653FAD94A8ED8126A7FF16AC /* Starscream-macOS */; - targetProxy = DEA8C09572537F3A359E811F6EA1041B /* PBXContainerItemProxy */; + name = "BigInt-iOS"; + target = 889A3C6D0A70D789D17B7BFFE160AD76 /* BigInt-iOS */; + targetProxy = 3F815C121527F09706A3B10D2F1A9153 /* PBXContainerItemProxy */; }; 9F850DD927617187175614392C8D6DFA /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -3635,80 +2841,60 @@ target = 94357A3A965B61C3A4DEC1C0240780A9 /* SipHash-macOS */; targetProxy = 94DE56AA252603E6ACA2CF389563C98C /* PBXContainerItemProxy */; }; - A7729B939DEA543F8C45E1AE6EA2D55A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "CryptoSwift-macOS"; - target = 65CF043BCE2D53116C7B4659477A3E72 /* CryptoSwift-macOS */; - targetProxy = 90E69E01A81C77F66C7B4FEA284C6108 /* PBXContainerItemProxy */; - }; - B66596529348E376B607D13222A8FD66 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SwiftRLP-iOS"; - target = C3F2705295C36759D5C023EF4E8E5AD4 /* SwiftRLP-iOS */; - targetProxy = A11FE3DBBA5088478433A7CBB0921B19 /* PBXContainerItemProxy */; - }; - BFEBD4328DDB0651B8C038B1BB713851 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "EthereumABI-macOS"; - target = EC318E575402922FD9228D8DC970D293 /* EthereumABI-macOS */; - targetProxy = 46510C5563FB9F85FE139F9F914CAE3E /* PBXContainerItemProxy */; - }; - C28C3EAEF1D65C4051451C528B2C3227 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PromiseKit; - target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; - targetProxy = 2D5F3331A0232F8C3FBA392B0FBA3DC5 /* PBXContainerItemProxy */; - }; - C401524AAC0ABD7D688FFDD04DB8A503 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "secp256k1_swift-iOS"; - target = 7CC079C3BDE01C7F13C2F0F27E1FA4BE /* secp256k1_swift-iOS */; - targetProxy = E217E652FACA61F10375AA001B85EFE5 /* PBXContainerItemProxy */; - }; - C7A2067126EFB8E6FE5C6CC59E65E86F /* PBXTargetDependency */ = { + B11FA0DEEB0017FCAFE47A617D1B4FA6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "CryptoSwift-iOS"; target = 218BFCBCA0EA83AEA95CE87303914A04 /* CryptoSwift-iOS */; - targetProxy = FD2E2F75CD43EC3CB111B4A398D84FAD /* PBXContainerItemProxy */; + targetProxy = 092A0DABC5CA5F20BDAB49A0E6F82B5A /* PBXContainerItemProxy */; }; - CB064A4E092B54AC8D57278C2D13733B /* PBXTargetDependency */ = { + D2C56517624E1FE4E0A186244E2C7044 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "EthereumAddress-macOS"; - target = E5027A132BD8BEDEF67AC1A970982AB4 /* EthereumAddress-macOS */; - targetProxy = A987377817F8F7F6771CF88541A91773 /* PBXContainerItemProxy */; - }; - DFE6BEFD40A118F5206E8AD2314AC600 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "BigInt-macOS"; - target = 63F854E532D7CBA393D37B6C84E1F23F /* BigInt-macOS */; - targetProxy = F13D2CDD038077A18864D8FBE4A93886 /* PBXContainerItemProxy */; - }; - E7980468BE8F71A4EC7A7317F922F9B5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "BigInt-macOS"; - target = 63F854E532D7CBA393D37B6C84E1F23F /* BigInt-macOS */; - targetProxy = 903AD7731F3E7582871680EAE489BF62 /* PBXContainerItemProxy */; + name = "Starscream-iOS"; + target = 452B8173099D29664E78F6AD3753D61C /* Starscream-iOS */; + targetProxy = E9430FDDB48F9168FED3991BC1C130A1 /* PBXContainerItemProxy */; }; - F8E0F6A87FB2B1FCF32BED5EC2374510 /* PBXTargetDependency */ = { + D51EFC43CFDA7179D9ED4F640353C01F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "SipHash-iOS"; - target = C03DEEFE4852B4027014EE22FEBAC1A3 /* SipHash-iOS */; - targetProxy = 4335985C1BB34CB74509F2FC3C46A3B0 /* PBXContainerItemProxy */; + name = PromiseKit; + target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; + targetProxy = 5252C9388F7042FCDC89E92CA1E5C41A /* PBXContainerItemProxy */; }; - FEF06C956F28FF4750FD5E074B519447 /* PBXTargetDependency */ = { + F07869AD8F97E4BCF4B0096F471EBF03 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "CryptoSwift-macOS"; - target = 65CF043BCE2D53116C7B4659477A3E72 /* CryptoSwift-macOS */; - targetProxy = 503D0E4493A13D3C59C637492A5E0331 /* PBXContainerItemProxy */; + name = "secp256k1_swift-macOS"; + target = 37401ACF771B84D6C3E4480103B94936 /* secp256k1_swift-macOS */; + targetProxy = FF70944749D8E299E57B72B5FD17D1CE /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 02EB7D46D3D6B4CF76E677C689C98955 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44C524F525FB413605261CBD1B6CFCB2 /* Pods-web3swift-macOS.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + EXECUTABLE_PREFIX = lib; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Debug; + }; 068E1E9EDCDECB31E221F726AC129A52 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9E37727AE5487A48443C301030F61A6D /* SipHash-macOS.xcconfig */; + baseConfigurationReference = CC79EE0DCA4B60DBB457B60C688C207F /* SipHash-macOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3732,7 +2918,7 @@ }; 0A0AE6DBE6A097E4172B1F00095A0424 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3764F8359667BB549CE9192C8A1D3AA0 /* SipHash-iOS.xcconfig */; + baseConfigurationReference = 4CE98594CABD142CA5C0741D66F75E7A /* SipHash-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3755,87 +2941,10 @@ }; name = Debug; }; - 0DD76219FE62010583869C7371CEDCB3 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E1D8C5087E61C7F371B173A450F5ACB2 /* SwiftRLP-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = "SwiftRLP-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - }; - name = Release; - }; - 1191252229870572D60D6032F91FB00F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B619B89D0FCE9B83778A0D1EE84D252A /* Pods-web3swift-iOS.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 12A710140C98E425F2DC0C7493F11AD5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C85CA494E1B45835376DCB1DF09D0AFD /* PromiseKit.root-CorePromise-Foundation.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MODULEMAP_FILE = "Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = "PromiseKit.root-CorePromise-Foundation"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; - }; - name = Release; - }; 27363A7E28FB2AE6330E81F827638BC9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35674E85190CB95B6997F482987E6708 /* Starscream-macOS.xcconfig */; + baseConfigurationReference = 83CF9FFA86ED8F9A0AEE986500CB7589 /* Starscream-macOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3860,7 +2969,7 @@ }; 27421C8A06B618FBA32213E5DC590A5D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B814FA161C5906F9DF755A65BBC66AEA /* BigInt-iOS.xcconfig */; + baseConfigurationReference = B07BD2F31E17F121E34CB8E0ABE07922 /* BigInt-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3883,61 +2992,9 @@ }; name = Debug; }; - 2A032B453367C0A57ACB78576E3D173E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 44E6ECFA16786AD23E928015EFE72D20 /* CryptoSwift-iOS.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = "CryptoSwift-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 3072F8F804E6FE3A8FEA3557832FAEFF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3904351C9A8FEDD288B49A46427C5F43 /* EthereumABI-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/EthereumABI/EthereumABI-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumABI; - PRODUCT_NAME = "EthereumABI-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - }; - name = Release; - }; 33B4DF79E0BD2377248EA1EDE24F60EF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9959A387FE97F5EE015FF46981A32E87 /* Starscream-iOS.xcconfig */; + baseConfigurationReference = EF5CD2317D91CF3B4EE9D9FE536EACEC /* Starscream-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3961,36 +3018,34 @@ }; name = Release; }; - 33D4AD1698081AEE2DA134EDCF0CB87F /* Debug */ = { + 343E399852B768F7AF8034F7C245C5C9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 422B6EC21F1B1D7C0499CE7FAD719ACE /* EthereumAddress-macOS.xcconfig */; + baseConfigurationReference = 8F2EFCBA807835B3E69C3BBA665D0832 /* CryptoSwift-iOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = "EthereumAddress-macOS"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = "CryptoSwift-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; + SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 374F288C2AA99F34074AD5C2C15B67BC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C513C9170720D38D5EEAB9DE6700A904 /* secp256k1_swift-iOS.xcconfig */; + baseConfigurationReference = FD0437C77FB2F98D55AFD1FBDC4B37C0 /* secp256k1_swift-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4016,7 +3071,7 @@ }; 385FB4CBFEE06A88F99B2802530F9327 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C513C9170720D38D5EEAB9DE6700A904 /* secp256k1_swift-iOS.xcconfig */; + baseConfigurationReference = FD0437C77FB2F98D55AFD1FBDC4B37C0 /* secp256k1_swift-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4039,37 +3094,33 @@ }; name = Debug; }; - 3EC1EFA82D967E98AEAC3CDAEC031719 /* Release */ = { + 3B69ACCDDA786F84FFD5A8A30B304AB4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EF65D377F2BA084BFBC0FE54CF540BC /* EthereumAddress-iOS.xcconfig */; + baseConfigurationReference = 5EFB0846AB1E93496D8B2E4BBC4C45D8 /* Pods-web3swift-macOS.release.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap"; + EXECUTABLE_PREFIX = lib; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = "EthereumAddress-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = macosx; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; name = Release; }; 47E47E54F82491E7F378DC766E7F0E64 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 757F0523F822A331D6621CE7DD987F30 /* BigInt-macOS.xcconfig */; + baseConfigurationReference = F6696E50C866E9828090B6178AF3C7CC /* BigInt-macOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4091,84 +3142,11 @@ }; name = Release; }; - 485540AFC59AA897EFFD1235F9D904D4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3EF65D377F2BA084BFBC0FE54CF540BC /* EthereumAddress-iOS.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = "EthereumAddress-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 4C50CDAB5840FB5C4FED1A07A3295FCB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5EFB0846AB1E93496D8B2E4BBC4C45D8 /* Pods-web3swift-macOS.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - }; - name = Release; - }; 4D006D8297D2F2157523D54427B00382 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 56B5DB97C7F46E50E7332936A9E4F3F4 /* Pods-web3swift-macOS_Tests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.11; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 541927462DC6D08218836FAE62A569F4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 44C524F525FB413605261CBD1B6CFCB2 /* Pods-web3swift-macOS.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4177,7 +3155,6 @@ EXECUTABLE_PREFIX = lib; MACH_O_TYPE = staticlib; MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -4187,60 +3164,37 @@ }; name = Debug; }; - 569973477117B9D3915414F5EDAA92D0 /* Release */ = { + 5C49AF2AA51F5419A4BB5EFAF98B261E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08B25221915A6BA07CC3A2F7711BC76D /* Pods-web3swift-iOS.release.xcconfig */; + baseConfigurationReference = 8F2EFCBA807835B3E69C3BBA665D0832 /* CryptoSwift-iOS.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 5D6537AC3C57BCCF4F90869A9B58575B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 71FC5A5D817B5A6A2E37821A24E1B72C /* CryptoSwift-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = "CryptoSwift-macOS"; + PRODUCT_NAME = "CryptoSwift-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; + SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; 5DC6E7B20C065185E9059AE3232798B8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -4291,175 +3245,68 @@ MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; - name = Release; - }; - 61B41A8C448A62A40F257AD7128B9DCE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 004B658D46146FB1F435C5BA92529902 /* secp256k1_swift-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = secp256k1_swift; - PRODUCT_NAME = "secp256k1_swift-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; - }; - name = Debug; - }; - 6300C4CBE1FABFB13877CB780FF19662 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 179FDDCE696F59ECE53BD24EB1B13765 /* EthereumABI-iOS.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/EthereumABI/EthereumABI-iOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumABI; - PRODUCT_NAME = "EthereumABI-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 64F8BE9EBD64E8F9C5B1488BBEC8A515 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 394845A61BA9FA09DEC8647BBA1DCC6C /* PromiseKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = Headers/Public/PromiseKit/PromiseKit.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 72ED51C6AE0C201415B1EE4126A28A61 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 35674E85190CB95B6997F482987E6708 /* Starscream-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/Starscream-macOS/Starscream-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MODULEMAP_FILE = "Headers/Public/Starscream/Starscream-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Starscream; - PRODUCT_NAME = "Starscream-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - }; - name = Debug; + name = Release; }; - 804D7EC0985D020630D326134F179448 /* Release */ = { + 61B41A8C448A62A40F257AD7128B9DCE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 44E6ECFA16786AD23E928015EFE72D20 /* CryptoSwift-iOS.xcconfig */; + baseConfigurationReference = 85644855873BB775CB3AFB67845C2923 /* secp256k1_swift-macOS.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap"; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = "CryptoSwift-iOS"; + PRODUCT_MODULE_NAME = secp256k1_swift; + PRODUCT_NAME = "secp256k1_swift-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; + SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; + SWIFT_VERSION = 4.0; }; - name = Release; + name = Debug; }; - 82A7AA33E971694F27F030F0799973D4 /* Debug */ = { + 72ED51C6AE0C201415B1EE4126A28A61 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3904351C9A8FEDD288B49A46427C5F43 /* EthereumABI-macOS.xcconfig */; + baseConfigurationReference = 83CF9FFA86ED8F9A0AEE986500CB7589 /* Starscream-macOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/EthereumABI/EthereumABI-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/Starscream-macOS/Starscream-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Headers/Public/Starscream/Starscream-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumABI; - PRODUCT_NAME = "EthereumABI-macOS"; + PRODUCT_MODULE_NAME = Starscream; + PRODUCT_NAME = "Starscream-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 5.0; }; name = Debug; }; 98D327446547560308C38F819F660BEB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9E37727AE5487A48443C301030F61A6D /* SipHash-macOS.xcconfig */; + baseConfigurationReference = CC79EE0DCA4B60DBB457B60C688C207F /* SipHash-macOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4485,6 +3332,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -4546,54 +3394,54 @@ }; name = Debug; }; - 9DDE826DCDC996926F83BC3566E1E003 /* Debug */ = { + 9BBD18A46E06AB12A6D17252F9551DE0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 757F0523F822A331D6621CE7DD987F30 /* BigInt-macOS.xcconfig */; + baseConfigurationReference = BFDD3C72C8D3B43836068099396D69F8 /* CryptoSwift-macOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.9; - MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = "BigInt-macOS"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = "CryptoSwift-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; }; - name = Debug; + name = Release; }; - A01A5B78C4E412ACA3B4AD939E5AA680 /* Debug */ = { + 9DDE826DCDC996926F83BC3566E1E003 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 43DCE273425CD6BB15234A0E86965CCF /* SwiftRLP-iOS.xcconfig */; + baseConfigurationReference = F6696E50C866E9828090B6178AF3C7CC /* BigInt-macOS.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap"; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = "SwiftRLP-iOS"; + PRODUCT_MODULE_NAME = BigInt; + PRODUCT_NAME = "BigInt-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; + SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -4618,36 +3466,35 @@ }; name = Debug; }; - B152FA5C74B795D17806D2322F06DA0A /* Debug */ = { + B29ED86BF41873CEB8D0592AE75B8FD7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E1D8C5087E61C7F371B173A450F5ACB2 /* SwiftRLP-macOS.xcconfig */; + baseConfigurationReference = 6D3AF88C061AB1935F2E62ADB52F75A1 /* PromiseKit.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = Headers/Public/PromiseKit/PromiseKit.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = "SwiftRLP-macOS"; + PRODUCT_MODULE_NAME = PromiseKit; + PRODUCT_NAME = PromiseKit; PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; + SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; B3BBF5E9D056E4465107B4B2034C5996 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B814FA161C5906F9DF755A65BBC66AEA /* BigInt-iOS.xcconfig */; + baseConfigurationReference = B07BD2F31E17F121E34CB8E0ABE07922 /* BigInt-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4671,65 +3518,33 @@ }; name = Release; }; - B3DA8C147466DD65943C54CB27723D33 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 422B6EC21F1B1D7C0499CE7FAD719ACE /* EthereumAddress-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = "EthereumAddress-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; - }; - name = Release; - }; - BB0C333D1A4130FA46DCEB99FADB2188 /* Release */ = { + B95BD127A07C364C9B06275E94CB6E15 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 43DCE273425CD6BB15234A0E86965CCF /* SwiftRLP-iOS.xcconfig */; + baseConfigurationReference = B619B89D0FCE9B83778A0D1EE84D252A /* Pods-web3swift-iOS.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = "SwiftRLP-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; BC3DDED69C5AF875D0B49250E3AF4D28 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1FBDF36A068DC8E0EB80F86C05254653 /* Pods-web3swift-macOS_Tests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4747,9 +3562,35 @@ }; name = Release; }; + BDE8D8B3DA3C7F1128D790E5C9629233 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8E36E41B931A0607A052B6C64E0179D9 /* PromiseKit.root-CorePromise-Foundation.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = PromiseKit; + PRODUCT_NAME = "PromiseKit.root-CorePromise-Foundation"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; BE736F0D333A3BAC7C8C2E1CCAE09871 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3764F8359667BB549CE9192C8A1D3AA0 /* SipHash-iOS.xcconfig */; + baseConfigurationReference = 4CE98594CABD142CA5C0741D66F75E7A /* SipHash-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4797,9 +3638,8 @@ }; C232BAB06517085FD2136FCE0EA43B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 004B658D46146FB1F435C5BA92529902 /* secp256k1_swift-macOS.xcconfig */; + baseConfigurationReference = 85644855873BB775CB3AFB67845C2923 /* secp256k1_swift-macOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4822,11 +3662,10 @@ }; name = Release; }; - CED8A0BB78276F4DBFD9C2C146717BEE /* Debug */ = { + D0E36774A2DC19C70C07485FFE2DF816 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C85CA494E1B45835376DCB1DF09D0AFD /* PromiseKit.root-CorePromise-Foundation.xcconfig */; + baseConfigurationReference = 8E36E41B931A0607A052B6C64E0179D9 /* PromiseKit.root-CorePromise-Foundation.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4845,40 +3684,13 @@ SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; - }; - name = Debug; - }; - D04D3F98A6DDB30920917F7443994264 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 71FC5A5D817B5A6A2E37821A24E1B72C /* CryptoSwift-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = "CryptoSwift-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Release; }; D79A821D19CA873F0DA01768F9ECEEDA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9959A387FE97F5EE015FF46981A32E87 /* Starscream-iOS.xcconfig */; + baseConfigurationReference = EF5CD2317D91CF3B4EE9D9FE536EACEC /* Starscream-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4901,9 +3713,9 @@ }; name = Debug; }; - F970760BB76772D6E1A5CCB7E7AD242F /* Release */ = { + DC7CC89026E5D1874DC45B84E8F77337 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 394845A61BA9FA09DEC8647BBA1DCC6C /* PromiseKit.xcconfig */; + baseConfigurationReference = 6D3AF88C061AB1935F2E62ADB52F75A1 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4921,33 +3733,55 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - FE780CFA2B3868DA8E3F790947B48983 /* Release */ = { + E49F9D2E59CEB3181A55DCEE1E332841 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 179FDDCE696F59ECE53BD24EB1B13765 /* EthereumABI-iOS.xcconfig */; + baseConfigurationReference = BFDD3C72C8D3B43836068099396D69F8 /* CryptoSwift-macOS.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/EthereumABI/EthereumABI-iOS.modulemap"; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumABI; - PRODUCT_NAME = "EthereumABI-iOS"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = "CryptoSwift-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; + SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + F508E689D0527678F4D9D1FD9B5BDC72 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 08B25221915A6BA07CC3A2F7711BC76D /* Pods-web3swift-iOS.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -4968,44 +3802,8 @@ 12E1B99EB03D3EBFA7A4D9E2357FF07C /* Build configuration list for PBXNativeTarget "CryptoSwift-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5D6537AC3C57BCCF4F90869A9B58575B /* Debug */, - D04D3F98A6DDB30920917F7443994264 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 142DB58B9F87D2DBAF25171E397B246B /* Build configuration list for PBXNativeTarget "EthereumABI-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6300C4CBE1FABFB13877CB780FF19662 /* Debug */, - FE780CFA2B3868DA8E3F790947B48983 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1ADFC6A31A487D87EE2E371ADD088F16 /* Build configuration list for PBXNativeTarget "PromiseKit.root-CorePromise-Foundation" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CED8A0BB78276F4DBFD9C2C146717BEE /* Debug */, - 12A710140C98E425F2DC0C7493F11AD5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1C38B120063EAAA45E94EED1E54A39DD /* Build configuration list for PBXNativeTarget "EthereumAddress-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 485540AFC59AA897EFFD1235F9D904D4 /* Debug */, - 3EC1EFA82D967E98AEAC3CDAEC031719 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 235D8A83CE355A53C7777869565816FE /* Build configuration list for PBXNativeTarget "SwiftRLP-macOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B152FA5C74B795D17806D2322F06DA0A /* Debug */, - 0DD76219FE62010583869C7371CEDCB3 /* Release */, + E49F9D2E59CEB3181A55DCEE1E332841 /* Debug */, + 9BBD18A46E06AB12A6D17252F9551DE0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5013,17 +3811,17 @@ 256F16869912FE5AA53A42E72A825E45 /* Build configuration list for PBXNativeTarget "CryptoSwift-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2A032B453367C0A57ACB78576E3D173E /* Debug */, - 804D7EC0985D020630D326134F179448 /* Release */, + 343E399852B768F7AF8034F7C245C5C9 /* Debug */, + 5C49AF2AA51F5419A4BB5EFAF98B261E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3B393364628B66280810FC22FF55C46D /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS" */ = { + 27BA07F740069FE03AF21BBAAEF060AE /* Build configuration list for PBXNativeTarget "PromiseKit.root-CorePromise-Foundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1191252229870572D60D6032F91FB00F /* Debug */, - 569973477117B9D3915414F5EDAA92D0 /* Release */, + BDE8D8B3DA3C7F1128D790E5C9629233 /* Debug */, + D0E36774A2DC19C70C07485FFE2DF816 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5037,15 +3835,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 41A64937BF8615E126715A471EA9F57D /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 541927462DC6D08218836FAE62A569F4 /* Debug */, - 4C50CDAB5840FB5C4FED1A07A3295FCB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5055,15 +3844,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4D5FBB0546A0B000C22A79317913D9B2 /* Build configuration list for PBXNativeTarget "EthereumAddress-macOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33D4AD1698081AEE2DA134EDCF0CB87F /* Debug */, - B3DA8C147466DD65943C54CB27723D33 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 5070BFFDB262A9C738502EF4BE8A9944 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5091,65 +3871,65 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 912B25F0D3E13E6B69F3D9ED2DA0115C /* Build configuration list for PBXNativeTarget "Starscream-iOS" */ = { + 73F67D8E70C98542E1A16CF25BD13F23 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - D79A821D19CA873F0DA01768F9ECEEDA /* Debug */, - 33B4DF79E0BD2377248EA1EDE24F60EF /* Release */, + B95BD127A07C364C9B06275E94CB6E15 /* Debug */, + F508E689D0527678F4D9D1FD9B5BDC72 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9B4541E12170C55E2F3423E202352402 /* Build configuration list for PBXNativeTarget "BigInt-iOS" */ = { + 912B25F0D3E13E6B69F3D9ED2DA0115C /* Build configuration list for PBXNativeTarget "Starscream-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 27421C8A06B618FBA32213E5DC590A5D /* Debug */, - B3BBF5E9D056E4465107B4B2034C5996 /* Release */, + D79A821D19CA873F0DA01768F9ECEEDA /* Debug */, + 33B4DF79E0BD2377248EA1EDE24F60EF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AC9E1931A748E546B992DA96A0569F7D /* Build configuration list for PBXNativeTarget "SipHash-macOS" */ = { + 9AC7F2E96A95C0CA51BCBB553D5D9B89 /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 068E1E9EDCDECB31E221F726AC129A52 /* Debug */, - 98D327446547560308C38F819F660BEB /* Release */, + DC7CC89026E5D1874DC45B84E8F77337 /* Debug */, + B29ED86BF41873CEB8D0592AE75B8FD7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C074E161185A339E8820EF78741CBF49 /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { + 9B4541E12170C55E2F3423E202352402 /* Build configuration list for PBXNativeTarget "BigInt-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 64F8BE9EBD64E8F9C5B1488BBEC8A515 /* Debug */, - F970760BB76772D6E1A5CCB7E7AD242F /* Release */, + 27421C8A06B618FBA32213E5DC590A5D /* Debug */, + B3BBF5E9D056E4465107B4B2034C5996 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C1E472055DC8A1A6A182554C8FAEC44B /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS_Tests" */ = { + AC9E1931A748E546B992DA96A0569F7D /* Build configuration list for PBXNativeTarget "SipHash-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4D006D8297D2F2157523D54427B00382 /* Debug */, - BC3DDED69C5AF875D0B49250E3AF4D28 /* Release */, + 068E1E9EDCDECB31E221F726AC129A52 /* Debug */, + 98D327446547560308C38F819F660BEB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C81D59105640469B38DF58B0E45BE834 /* Build configuration list for PBXNativeTarget "EthereumABI-macOS" */ = { + C1E472055DC8A1A6A182554C8FAEC44B /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 82A7AA33E971694F27F030F0799973D4 /* Debug */, - 3072F8F804E6FE3A8FEA3557832FAEFF /* Release */, + 4D006D8297D2F2157523D54427B00382 /* Debug */, + BC3DDED69C5AF875D0B49250E3AF4D28 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DC1288B1B04A76EBD7BB230C986DCA59 /* Build configuration list for PBXNativeTarget "SwiftRLP-iOS" */ = { + CE0288CBC18ADCB4A97A0F135351A676 /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - A01A5B78C4E412ACA3B4AD939E5AA680 /* Debug */, - BB0C333D1A4130FA46DCEB99FADB2188 /* Release */, + 02EB7D46D3D6B4CF76E677C689C98955 /* Debug */, + 3B69ACCDDA786F84FFD5A8A30B304AB4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h b/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m b/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m old mode 100755 new mode 100644 index bfabd6157..beae27758 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m +++ b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m @@ -37,7 +37,20 @@ - (AnyPromise *)promise { resolve([NSError errorWithDomain:PMKErrorDomain code:PMKTaskError userInfo:info]); } }; - [self launch]; + + #if __clang_major__ >= 9 + if (@available(macOS 10.13, *)) { + NSError *error = nil; + + if (![self launchAndReturnError:&error]) { + resolve(error); + } + } else { + [self launch]; + } + #else + [self launch]; // might @throw + #endif }]; } diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift old mode 100755 new mode 100644 index 926eadf07..13259a0c0 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift +++ b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift @@ -183,12 +183,14 @@ public enum PMKHTTPError: Error, LocalizedError, CustomStringConvertible { } } +#if swift(>=4.0) public func decodeResponse(_ t: T.Type, decoder: JSONDecoder = JSONDecoder()) -> T? { switch self { case .badStatusCode(_, let data, _): return try? decoder.decode(t, from: data) } } +#endif //TODO rename responseJSON public var jsonDictionary: Any? { diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h b/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift old mode 100755 new mode 100644 index 044847514..03cab3cfe --- a/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift +++ b/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift @@ -72,20 +72,64 @@ extension Process { self.waitUntilExit() guard self.terminationReason == .exit, self.terminationStatus == 0 else { - return seal.reject(PMKError.execution(self)) + let stdoutData = try? self.readDataFromPipe(stdout) + let stderrData = try? self.readDataFromPipe(stderr) + + let stdoutString = stdoutData.flatMap { (data: Data) -> String? in String(data: data, encoding: .utf8) } + let stderrString = stderrData.flatMap { (data: Data) -> String? in String(data: data, encoding: .utf8) } + + return seal.reject(PMKError.execution(process: self, standardOutput: stdoutString, standardError: stderrString)) } seal.fulfill((stdout, stderr)) } } } + private func readDataFromPipe(_ pipe: Pipe) throws -> Data { + let handle = pipe.fileHandleForReading + defer { handle.closeFile() } + + // Someday, NSFileHandle will probably be updated with throwing equivalents to its read and write methods, + // as NSTask has, to avoid raising exceptions and crashing the app. + // Unfortunately that day has not yet come, so use the underlying BSD calls for now. + + let fd = handle.fileDescriptor + + let bufsize = 1024 * 8 + let buf = UnsafeMutablePointer.allocate(capacity: bufsize) + + #if swift(>=4.1) + defer { buf.deallocate() } + #else + defer { buf.deallocate(capacity: bufsize) } + #endif + + var data = Data() + + while true { + let bytesRead = read(fd, buf, bufsize) + + if bytesRead == 0 { + break + } + + if bytesRead < 0 { + throw POSIXError.Code(rawValue: errno).map { POSIXError($0) } ?? CocoaError(.fileReadUnknown) + } + + data.append(buf, count: bytesRead) + } + + return data + } + /** The error generated by PromiseKit’s `Process` extension */ public enum PMKError { /// NOT AVAILABLE ON 10.13 and above because Apple provide this error handling themselves case notExecutable(String?) - case execution(Process) + case execution(process: Process, standardOutput: String?, standardError: String?) } } @@ -97,7 +141,7 @@ extension Process.PMKError: LocalizedError { return "File not executable: \(path)" case .notExecutable(nil): return "No launch path specified" - case .execution(let task): + case .execution(process: let task, standardOutput: _, standardError: _): return "Failed executing: `\(task)` (\(task.terminationStatus))." } } diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/PMKUIKit.h b/Pods/PromiseKit/Extensions/UIKit/Sources/PMKUIKit.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.h b/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.m b/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+Promise.swift b/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+Promise.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.h b/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.m b/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift b/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/LICENSE b/Pods/PromiseKit/LICENSE old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/README.md b/Pods/PromiseKit/README.md old mode 100755 new mode 100644 index 5e6128fc7..c06b464fb --- a/Pods/PromiseKit/README.md +++ b/Pods/PromiseKit/README.md @@ -1,6 +1,6 @@ -![PromiseKit](http://promisekit.org/public/img/logo-tight.png) +![PromiseKit](../gh-pages/public/img/logo-tight.png) -![badge-pod] ![badge-languages] ![badge-pms] ![badge-platforms] [![Build Status](https://travis-ci.org/mxcl/PromiseKit.svg?branch=master)](https://travis-ci.org/mxcl/PromiseKit) +[![badge-pod][]][cocoapods] ![badge-languages][] ![badge-pms][] ![badge-platforms][] [![badge-travis][]][travis] --- @@ -33,9 +33,14 @@ pod used in many of the most popular apps in the world. [![codecov](https://codecov.io/gh/mxcl/PromiseKit/branch/master/graph/badge.svg)](https://codecov.io/gh/mxcl/PromiseKit) -# PromiseKit 6 Released +# PromiseKit 7 Alpha -PromiseKit 6 has been released; [read the release notes and migration guide][PMK6]. +We are testing PromiseKit 7 alpha, it is Swift 5 only. It is tagged and thus +importable in all package managers. + +# PromiseKit 6 + +[Release notes and migration guide][PMK6]. # Quick Start @@ -45,17 +50,44 @@ In your [Podfile]: use_frameworks! target "Change Me!" do - pod "PromiseKit", "~> 6.0" + pod "PromiseKit", "~> 6.8" end ``` +> The above gives an Xcode warning? See our [Installation Guide]. + PromiseKit 6, 5 and 4 support Xcode 8.3, 9.x and 10.0; Swift 3.1, -3.2, 3.3, 3.4, 4.0, 4.1 and 4.2; iOS, macOS, tvOS, watchOS, Linux and Android; CocoaPods, -Carthage and SwiftPM; ([CI Matrix](https://travis-ci.org/mxcl/PromiseKit)). +3.2, 3.3, 3.4, 4.0, 4.1, 4.2, 4.3 and 5.0 (development snapshots); iOS, macOS, +tvOS, watchOS, Linux and Android; CocoaPods, Carthage and SwiftPM; +([CI Matrix](https://travis-ci.org/mxcl/PromiseKit)). + +For Carthage, SwiftPM, Accio, etc., or for instructions when using older Swifts or Xcodes, see our [Installation Guide]. We recommend +[Carthage](https://github.com/Carthage/Carthage) or +[Accio](https://github.com/JamitLabs/Accio). + +# Professionally Supported PromiseKit is Now Available + +TideLift gives software development teams a single source for purchasing +and maintaining their software, with professional grade assurances from +the experts who know it best, while seamlessly integrating with existing +tools. + +[Get Professional Support for PromiseKit with TideLift](https://tidelift.com/subscription/pkg/cocoapods-promisekit?utm_source=cocoapods-promisekit&utm_medium=referral&utm_campaign=readme). + +# PromiseKit is Thousands of Hours of Work + +Hey there, I’m Max Howell. I’m a prolific producer of open source software and +probably you already use some of it (I created [`brew`]). I work full-time on +open source and it’s hard; currently *I earn less than minimum wage*. Please +help me continue my work, I appreciate it 🙏🏻 + + + + + +[Other ways to say thanks](http://mxcl.dev/#donate). -For Carthage, SwiftPM, etc., or for instructions when using older Swifts or -Xcodes, see our [Installation Guide](Documentation/Installation.md). We -recommend [Carthage](https://github.com/Carthage/Carthage). +[`brew`]: https://brew.sh # Documentation @@ -68,7 +100,7 @@ recommend [Carthage](https://github.com/Carthage/Carthage). * [Objective-C Guide](Documentation/ObjectiveC.md) * [Troubleshooting](Documentation/Troubleshooting.md) (e.g., solutions to common compile errors) * [Appendix](Documentation/Appendix.md) -* [API Reference](https://promisekit.org/reference/) +* [API Reference](https://mxcl.dev/PromiseKit/reference/v6/Classes/Promise.html) # Extensions @@ -90,7 +122,7 @@ All our extensions are separate repositories at the [PromiseKit organization]. Then don’t have them: ```ruby -pod "PromiseKit/CorePromise", "~> 6.0" +pod "PromiseKit/CorePromise", "~> 6.8" ``` > *Note:* Carthage installations come with no extensions by default. @@ -145,11 +177,11 @@ Nowadays, considering that: * We almost always POST JSON * We now have `JSONDecoder` * PromiseKit now has `map` and other functional primitives -* PromiseKit (like Alamofire, but not raw-URLSession) also defaults to having callbacks go to the main thread +* PromiseKit (like Alamofire, but not raw-`URLSession`) also defaults to having + callbacks go to the main thread -We recommend vanilla `URLSession`. It uses fewer black boxes and sticks closer to the -metal. Alamofire was essential until the three bulletpoints above became true, -but nowadays it isn’t really necessary. +We recommend vanilla `URLSession`. It uses fewer black boxes and sticks closer to the metal. Alamofire was essential until the three bullet points above +became true, but nowadays it isn’t really necessary. # Support @@ -158,7 +190,7 @@ if after that you still have a question, ask at our [Gitter chat channel] or on [badge-pod]: https://img.shields.io/cocoapods/v/PromiseKit.svg?label=version -[badge-pms]: https://img.shields.io/badge/supports-CocoaPods%20%7C%20Carthage%20%7C%20SwiftPM-green.svg +[badge-pms]: https://img.shields.io/badge/supports-CocoaPods%20%7C%20Carthage%20%7C%20Accio%20%7C%20SwiftPM-green.svg [badge-languages]: https://img.shields.io/badge/languages-Swift%20%7C%20ObjC-orange.svg [badge-platforms]: https://img.shields.io/badge/platforms-macOS%20%7C%20iOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-lightgrey.svg [badge-mit]: https://img.shields.io/badge/license-MIT-blue.svg @@ -168,4 +200,8 @@ if after that you still have a question, ask at our [Gitter chat channel] or on [Gitter chat channel]: https://gitter.im/mxcl/PromiseKit [our bug tracker]: https://github.com/mxcl/PromiseKit/issues/new [Podfile]: https://guides.cocoapods.org/syntax/podfile.html -[PMK6]: http://promisekit.org/news/2018/02/PromiseKit-6.0-Released/ +[PMK6]: http://mxcl.dev/PromiseKit/news/2018/02/PromiseKit-6.0-Released/ +[Installation Guide]: Documentation/Installation.md +[badge-travis]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=master +[travis]: https://travis-ci.org/mxcl/PromiseKit +[cocoapods]: https://cocoapods.org/pods/PromiseKit diff --git a/Pods/PromiseKit/Sources/AnyPromise+Private.h b/Pods/PromiseKit/Sources/AnyPromise+Private.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/AnyPromise.h b/Pods/PromiseKit/Sources/AnyPromise.h old mode 100755 new mode 100644 index cd625d9ef..fd1ad3a9b --- a/Pods/PromiseKit/Sources/AnyPromise.h +++ b/Pods/PromiseKit/Sources/AnyPromise.h @@ -28,8 +28,8 @@ typedef void (^PMKResolver)(id __nullable) NS_REFINED_FOR_SWIFT; - Parameter block: The provided block is immediately executed, inside the block call `resolve` to resolve this promise and cause any attached handlers to execute. If you are wrapping a delegate-based system, we recommend instead to use: initWithResolver: - Returns: A new promise. - Warning: Resolving a promise with `nil` fulfills it. - - SeeAlso: http://promisekit.org/sealing-your-own-promises/ - - SeeAlso: http://promisekit.org/wrapping-delegation/ + - SeeAlso: https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md#making-promises + - SeeAlso: https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#wrapping-delegate-systems */ + (instancetype __nonnull)promiseWithResolverBlock:(void (^ __nonnull)(__nonnull PMKResolver))resolveBlock NS_REFINED_FOR_SWIFT; @@ -232,7 +232,7 @@ typedef void (^PMKBooleanAdapter)(BOOL, NSError * __nullable) NS_REFINED_FOR_SWI @warning *Important* If both parameters are nil, the promise fulfills, if both are non-nil the promise rejects. This is per the convention. - @see http://promisekit.org/sealing-your-own-promises/ + @see https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md#making-promises */ + (instancetype __nonnull)promiseWithAdapterBlock:(void (^ __nonnull)(PMKAdapter __nonnull adapter))block NS_REFINED_FOR_SWIFT; diff --git a/Pods/PromiseKit/Sources/AnyPromise.m b/Pods/PromiseKit/Sources/AnyPromise.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/AnyPromise.swift b/Pods/PromiseKit/Sources/AnyPromise.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/Box.swift b/Pods/PromiseKit/Sources/Box.swift old mode 100755 new mode 100644 index 3bf7ecd7a..43cd3d1b0 --- a/Pods/PromiseKit/Sources/Box.swift +++ b/Pods/PromiseKit/Sources/Box.swift @@ -5,7 +5,7 @@ enum Sealant { case resolved(R) } -class Handlers { +final class Handlers { var bodies: [(R) -> Void] = [] func append(_ item: @escaping(R) -> Void) { bodies.append(item) } } @@ -17,7 +17,7 @@ class Box { func seal(_: T) {} } -class SealedBox: Box { +final class SealedBox: Box { let value: T init(value: T) { diff --git a/Pods/PromiseKit/Sources/Catchable.swift b/Pods/PromiseKit/Sources/Catchable.swift old mode 100755 new mode 100644 index 41ec7277e..596abdcba --- a/Pods/PromiseKit/Sources/Catchable.swift +++ b/Pods/PromiseKit/Sources/Catchable.swift @@ -18,7 +18,7 @@ public extension CatchMixin { - Parameter policy: The default policy does not execute your handler for cancellation errors. - Parameter execute: The handler to execute if this promise is rejected. - Returns: A promise finalizer. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ @discardableResult func `catch`(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) -> Void) -> PMKFinalizer { @@ -70,7 +70,7 @@ public extension CatchMixin { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> U) -> Promise where U.T == T { let rp = Promise(.pending) @@ -103,7 +103,7 @@ public extension CatchMixin { - Note it is logically impossible for this to take a `catchPolicy`, thus `allErrors` are handled. - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ @discardableResult func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Error) -> Guarantee) -> Guarantee { @@ -188,7 +188,7 @@ public extension CatchMixin { @discardableResult func cauterize() -> PMKFinalizer { return self.catch { - Swift.print("PromiseKit:cauterized-error:", $0) + conf.logHandler(.cauterized($0)) } } } @@ -203,7 +203,7 @@ public extension CatchMixin where T == Void { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ @discardableResult func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Error) -> Void) -> Guarantee { @@ -229,7 +229,7 @@ public extension CatchMixin where T == Void { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) */ func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> Void) -> Promise { let rg = Promise(.pending) diff --git a/Pods/PromiseKit/Sources/Configuration.swift b/Pods/PromiseKit/Sources/Configuration.swift old mode 100755 new mode 100644 index 4891c45e8..9d4fc22fb --- a/Pods/PromiseKit/Sources/Configuration.swift +++ b/Pods/PromiseKit/Sources/Configuration.swift @@ -1,12 +1,34 @@ import Dispatch -/// PromiseKit’s configurable parameters +/** + PromiseKit’s configurable parameters. + + Do not change these after any Promise machinery executes as the configuration object is not thread-safe. + + We would like it to be, but sadly `Swift` does not expose `dispatch_once` et al. which is what we used to use in order to make the configuration immutable once first used. +*/ public struct PMKConfiguration { /// The default queues that promises handlers dispatch to public var Q: (map: DispatchQueue?, return: DispatchQueue?) = (map: DispatchQueue.main, return: DispatchQueue.main) /// The default catch-policy for all `catch` and `resolve` public var catchPolicy = CatchPolicy.allErrorsExceptCancellation + + /// The closure used to log PromiseKit events. + /// Not thread safe; change before processing any promises. + /// - Note: The default handler calls `print()` + public var logHandler: (LogEvent) -> () = { event in + switch event { + case .waitOnMainThread: + print("PromiseKit: warning: `wait()` called on main thread!") + case .pendingPromiseDeallocated: + print("PromiseKit: warning: pending promise deallocated") + case .pendingGuaranteeDeallocated: + print("PromiseKit: warning: pending guarantee deallocated") + case .cauterized (let error): + print("PromiseKit:cauterized-error: \(error)") + } + } } /// Modify this as soon as possible in your application’s lifetime diff --git a/Pods/PromiseKit/Sources/CustomStringConvertible.swift b/Pods/PromiseKit/Sources/CustomStringConvertible.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/Deprecations.swift b/Pods/PromiseKit/Sources/Deprecations.swift old mode 100755 new mode 100644 index ac4eb364b..a837dcb8d --- a/Pods/PromiseKit/Sources/Deprecations.swift +++ b/Pods/PromiseKit/Sources/Deprecations.swift @@ -37,7 +37,7 @@ public func wrap(_ body: (@escaping (T) -> Void) throws -> Void) -> Promise Void) -> Promise { + func always(on q: DispatchQueue = .main, execute body: @escaping () -> Void) -> Promise { return ensure(on: q, body) } } @@ -45,7 +45,7 @@ public extension Promise { public extension Thenable { #if PMKFullDeprecations /// disabled due to ambiguity with the other `.flatMap` - @available(*, deprecated: 6.1, message: "See: `compactMap`") + @available(*, deprecated, message: "See: `compactMap`") func flatMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T) throws -> U?) -> Promise { return compactMap(on: on, transform) } diff --git a/Pods/PromiseKit/Sources/Error.swift b/Pods/PromiseKit/Sources/Error.swift old mode 100755 new mode 100644 index 3249e3f44..7229e6f49 --- a/Pods/PromiseKit/Sources/Error.swift +++ b/Pods/PromiseKit/Sources/Error.swift @@ -83,7 +83,12 @@ extension Error { } catch CocoaError.userCancelled { return true } catch { + #if os(macOS) || os(iOS) || os(tvOS) + let pair = { ($0.domain, $0.code) }(error as NSError) + return ("SKErrorDomain", 2) == pair + #else return false + #endif } } } diff --git a/Pods/PromiseKit/Sources/Guarantee.swift b/Pods/PromiseKit/Sources/Guarantee.swift old mode 100755 new mode 100644 index 300759973..b87fad189 --- a/Pods/PromiseKit/Sources/Guarantee.swift +++ b/Pods/PromiseKit/Sources/Guarantee.swift @@ -5,8 +5,8 @@ import Dispatch A `Guarantee` is a functional abstraction around an asynchronous operation that cannot error. - See: `Thenable` */ -public class Guarantee: Thenable { - let box: Box +public final class Guarantee: Thenable { + let box: PromiseKit.Box fileprivate init(box: SealedBox) { self.box = box @@ -19,7 +19,7 @@ public class Guarantee: Thenable { /// Returns a pending `Guarantee` that can be resolved with the provided closure’s parameter. public init(resolver body: (@escaping(T) -> Void) -> Void) { - box = EmptyBox() + box = Box() body(box.seal) } @@ -54,8 +54,19 @@ public class Guarantee: Thenable { } } + final private class Box: EmptyBox { + deinit { + switch inspect() { + case .pending: + PromiseKit.conf.logHandler(.pendingGuaranteeDeallocated) + case .resolved: + break + } + } + } + init(_: PMKUnambiguousInitializer) { - box = EmptyBox() + box = Box() } /// Returns a tuple of a pending `Guarantee` and a function that resolves it. @@ -105,7 +116,7 @@ public extension Guarantee { return rg } - public func asVoid() -> Guarantee { + func asVoid() -> Guarantee { return map(on: nil) { _ in } } @@ -113,10 +124,10 @@ public extension Guarantee { Blocks this thread, so you know, don’t call this on a serial thread that any part of your chain may use. Like the main thread for example. */ - public func wait() -> T { + func wait() -> T { if Thread.isMainThread { - print("PromiseKit: warning: `wait()` called on main thread!") + conf.logHandler(.waitOnMainThread) } var result = value diff --git a/Pods/PromiseKit/Sources/LogEvent.swift b/Pods/PromiseKit/Sources/LogEvent.swift new file mode 100644 index 000000000..99683bdb6 --- /dev/null +++ b/Pods/PromiseKit/Sources/LogEvent.swift @@ -0,0 +1,30 @@ +/** + The PromiseKit events which may be logged. + + ```` + /// A promise or guarantee has blocked the main thread + case waitOnMainThread + + /// A promise has been deallocated without being resolved + case pendingPromiseDeallocated + + /// An error which occurred while fulfilling a promise was swallowed + case cauterized(Error) + + /// Errors which give a string error message + case misc (String) + ```` +*/ +public enum LogEvent { + /// A promise or guarantee has blocked the main thread + case waitOnMainThread + + /// A promise has been deallocated without being resolved + case pendingPromiseDeallocated + + /// A guarantee has been deallocated without being resolved + case pendingGuaranteeDeallocated + + /// An error which occurred while resolving a promise was swallowed + case cauterized(Error) +} diff --git a/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m b/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m b/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/Promise.swift b/Pods/PromiseKit/Sources/Promise.swift old mode 100755 new mode 100644 index c78ae8532..da9f6aa2b --- a/Pods/PromiseKit/Sources/Promise.swift +++ b/Pods/PromiseKit/Sources/Promise.swift @@ -5,7 +5,7 @@ import Dispatch A `Promise` is a functional abstraction around a failable asynchronous operation. - See: `Thenable` */ -public class Promise: Thenable, CatchMixin { +public final class Promise: Thenable, CatchMixin { let box: Box> fileprivate init(box: SealedBox>) { @@ -109,7 +109,7 @@ public extension Promise { func wait() throws -> T { if Thread.isMainThread { - Swift.print("PromiseKit: warning: `wait()` called on main thread!") + conf.logHandler(LogEvent.waitOnMainThread) } var result = self.result diff --git a/Pods/PromiseKit/Sources/PromiseKit.h b/Pods/PromiseKit/Sources/PromiseKit.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/Resolver.swift b/Pods/PromiseKit/Sources/Resolver.swift old mode 100755 new mode 100644 index ac58a7657..78531adbd --- a/Pods/PromiseKit/Sources/Resolver.swift +++ b/Pods/PromiseKit/Sources/Resolver.swift @@ -1,5 +1,5 @@ /// An object for resolving promises -public class Resolver { +public final class Resolver { let box: Box> init(_ box: Box>) { @@ -8,7 +8,7 @@ public class Resolver { deinit { if case .pending = box.inspect() { - print("PromiseKit: warning: pending promise deallocated") + conf.logHandler(.pendingPromiseDeallocated) } } } @@ -25,12 +25,12 @@ public extension Resolver { } /// Resolves the promise with the provided result - public func resolve(_ result: Result) { + func resolve(_ result: Result) { box.seal(result) } /// Resolves the promise with the provided value or error - public func resolve(_ obj: T?, _ error: Error?) { + func resolve(_ obj: T?, _ error: Error?) { if let error = error { reject(error) } else if let obj = obj { @@ -41,7 +41,7 @@ public extension Resolver { } /// Fulfills the promise with the provided value unless the provided error is non-nil - public func resolve(_ obj: T, _ error: Error?) { + func resolve(_ obj: T, _ error: Error?) { if let error = error { reject(error) } else { @@ -50,7 +50,7 @@ public extension Resolver { } /// Resolves the promise, provided for non-conventional value-error ordered completion handlers. - public func resolve(_ error: Error?, _ obj: T?) { + func resolve(_ error: Error?, _ obj: T?) { resolve(obj, error) } } @@ -65,6 +65,20 @@ extension Resolver where T == Void { fulfill(()) } } +#if false + // disabled ∵ https://github.com/mxcl/PromiseKit/issues/990 + + /// Fulfills the promise + public func fulfill() { + self.fulfill(()) + } +#else + /// Fulfills the promise + /// - Note: underscore is present due to: https://github.com/mxcl/PromiseKit/issues/990 + public func fulfill_() { + self.fulfill(()) + } +#endif } #endif diff --git a/Pods/PromiseKit/Sources/Thenable.swift b/Pods/PromiseKit/Sources/Thenable.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/after.m b/Pods/PromiseKit/Sources/after.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/after.swift b/Pods/PromiseKit/Sources/after.swift old mode 100755 new mode 100644 index cb29bb8ff..cdaeccd9e --- a/Pods/PromiseKit/Sources/after.swift +++ b/Pods/PromiseKit/Sources/after.swift @@ -2,7 +2,7 @@ import struct Foundation.TimeInterval import Dispatch /** - after(.seconds(2)).then { + after(seconds: 1.5).then { //… } @@ -20,7 +20,7 @@ public func after(seconds: TimeInterval) -> Guarantee { } /** - after(seconds: 1.5).then { + after(.seconds(2)).then { //… } diff --git a/Pods/PromiseKit/Sources/dispatch_promise.m b/Pods/PromiseKit/Sources/dispatch_promise.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/firstly.swift b/Pods/PromiseKit/Sources/firstly.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/fwd.h b/Pods/PromiseKit/Sources/fwd.h old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/hang.m b/Pods/PromiseKit/Sources/hang.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/hang.swift b/Pods/PromiseKit/Sources/hang.swift old mode 100755 new mode 100644 index f974c2faf..53d54decb --- a/Pods/PromiseKit/Sources/hang.swift +++ b/Pods/PromiseKit/Sources/hang.swift @@ -14,9 +14,13 @@ import CoreFoundation */ public func hang(_ promise: Promise) throws -> T { #if os(Linux) || os(Android) +#if swift(>=4.2) + let runLoopMode: CFRunLoopMode = kCFRunLoopDefaultMode +#else // isMainThread is not yet implemented on Linux. let runLoopModeRaw = RunLoopMode.defaultRunLoopMode.rawValue._bridgeToObjectiveC() let runLoopMode: CFString = unsafeBitCast(runLoopModeRaw, to: CFString.self) +#endif #else guard Thread.isMainThread else { // hang doesn't make sense on threads that aren't the main thread. diff --git a/Pods/PromiseKit/Sources/join.m b/Pods/PromiseKit/Sources/join.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/race.m b/Pods/PromiseKit/Sources/race.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/race.swift b/Pods/PromiseKit/Sources/race.swift old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/when.m b/Pods/PromiseKit/Sources/when.m old mode 100755 new mode 100644 diff --git a/Pods/PromiseKit/Sources/when.swift b/Pods/PromiseKit/Sources/when.swift old mode 100755 new mode 100644 index 59884cd2d..0913c64f3 --- a/Pods/PromiseKit/Sources/when.swift +++ b/Pods/PromiseKit/Sources/when.swift @@ -208,7 +208,7 @@ public func when(fulfilled promiseIterator: It, concurrent /** Waits on all provided promises. - `when(fulfilled:)` rejects as soon as one of the provided promises rejects. `when(resolved:)` waits on all provided promises and **never** rejects. + `when(fulfilled:)` rejects as soon as one of the provided promises rejects. `when(resolved:)` waits on all provided promises whatever their result, and then provides an array of `Result` so you can individually inspect the results. As a consequence this function returns a `Guarantee`, ie. errors are lifted from the individual promises into the results array of the returned `Guarantee`. when(resolved: promise1, promise2, promise3).then { results in for result in results where case .fulfilled(let value) { @@ -219,15 +219,14 @@ public func when(fulfilled promiseIterator: It, concurrent } - Returns: A new promise that resolves once all the provided promises resolve. The array is ordered the same as the input, ie. the result order is *not* resolution order. - - Warning: The returned promise can *not* be rejected. - - Note: Any promises that error are implicitly consumed, your UnhandledErrorHandler will not be called. - - Remark: Doesn't take Thenable due to protocol associatedtype paradox + - Note: we do not provide tuple variants for `when(resolved:)` but will accept a pull-request + - Remark: Doesn't take Thenable due to protocol `associatedtype` paradox */ public func when(resolved promises: Promise...) -> Guarantee<[Result]> { return when(resolved: promises) } -/// Waits on all provided promises. +/// - See: `when(resolved: Promise...)` public func when(resolved promises: [Promise]) -> Guarantee<[Result]> { guard !promises.isEmpty else { return .value([]) diff --git a/Pods/SipHash/LICENSE.md b/Pods/SipHash/LICENSE.md old mode 100755 new mode 100644 diff --git a/Pods/SipHash/README.md b/Pods/SipHash/README.md old mode 100755 new mode 100644 diff --git a/Pods/SipHash/SipHash/Primitive Types.swift b/Pods/SipHash/SipHash/Primitive Types.swift old mode 100755 new mode 100644 diff --git a/Pods/SipHash/SipHash/RandomUInt64.swift b/Pods/SipHash/SipHash/RandomUInt64.swift old mode 100755 new mode 100644 diff --git a/Pods/SipHash/SipHash/SipHashable.swift b/Pods/SipHash/SipHash/SipHashable.swift old mode 100755 new mode 100644 diff --git a/Pods/SipHash/SipHash/SipHasher.swift b/Pods/SipHash/SipHash/SipHasher.swift old mode 100755 new mode 100644 diff --git a/Pods/SwiftRLP/LICENSE b/Pods/SwiftRLP/LICENSE deleted file mode 100755 index d49e6aa41..000000000 --- a/Pods/SwiftRLP/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/Pods/SwiftRLP/SwiftRLP/SwiftRLP.h b/Pods/SwiftRLP/SwiftRLP/SwiftRLP.h deleted file mode 100755 index 47bb05fc6..000000000 --- a/Pods/SwiftRLP/SwiftRLP/SwiftRLP.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// SwiftRLP.h -// SwiftRLP -// -// Created by Alex Vlasov on 04/10/2018. -// Copyright © 2018 Alex Vlasov. All rights reserved. -// -#if TARGET_OS_IPHONE -#import -#else -#import -#endif -//! Project version number for SwiftRLP. -FOUNDATION_EXPORT double SwiftRLPVersionNumber; - -//! Project version string for SwiftRLP. -FOUNDATION_EXPORT const unsigned char SwiftRLPVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-dummy.m b/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-prefix.pch b/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h b/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap b/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.xcconfig b/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-dummy.m b/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch b/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h b/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap b/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.xcconfig b/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-dummy.m b/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch b/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h b/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap b/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.xcconfig b/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-dummy.m b/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch b/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h b/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap b/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.xcconfig b/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-dummy.m b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-dummy.m deleted file mode 100755 index 416179abd..000000000 --- a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_EthereumABI_iOS : NSObject -@end -@implementation PodsDummy_EthereumABI_iOS -@end diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch deleted file mode 100755 index beb2a2441..000000000 --- a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h deleted file mode 100755 index d0c9e02c9..000000000 --- a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "EthereumABI.h" - -FOUNDATION_EXPORT double EthereumABIVersionNumber; -FOUNDATION_EXPORT const unsigned char EthereumABIVersionString[]; - diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap deleted file mode 100755 index aafb8ce82..000000000 --- a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap +++ /dev/null @@ -1,7 +0,0 @@ -module EthereumABI { - umbrella header "EthereumABI-iOS-umbrella.h" - exclude header "EthereumABI-macOS-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.xcconfig b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.xcconfig deleted file mode 100755 index 56996eb63..000000000 --- a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS -DEFINES_MODULE = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/EthereumABI" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/EthereumABI -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-dummy.m b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-dummy.m deleted file mode 100755 index 778652094..000000000 --- a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_EthereumABI_macOS : NSObject -@end -@implementation PodsDummy_EthereumABI_macOS -@end diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch deleted file mode 100755 index 082f8af22..000000000 --- a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h deleted file mode 100755 index c01fbff6a..000000000 --- a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "EthereumABI.h" - -FOUNDATION_EXPORT double EthereumABIVersionNumber; -FOUNDATION_EXPORT const unsigned char EthereumABIVersionString[]; - diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap deleted file mode 100755 index 676927a57..000000000 --- a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap +++ /dev/null @@ -1,7 +0,0 @@ -module EthereumABI { - umbrella header "EthereumABI-macOS-umbrella.h" - exclude header "EthereumABI-iOS-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.xcconfig b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.xcconfig deleted file mode 100755 index a8186f34e..000000000 --- a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS -DEFINES_MODULE = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/EthereumABI" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/EthereumABI -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" diff --git a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-dummy.m b/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-dummy.m deleted file mode 100755 index 4235c2b2f..000000000 --- a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_EthereumAddress_iOS : NSObject -@end -@implementation PodsDummy_EthereumAddress_iOS -@end diff --git a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-prefix.pch b/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-prefix.pch deleted file mode 100755 index beb2a2441..000000000 --- a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h b/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h deleted file mode 100755 index d19195a1e..000000000 --- a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "EthereumAddress.h" - -FOUNDATION_EXPORT double EthereumAddressVersionNumber; -FOUNDATION_EXPORT const unsigned char EthereumAddressVersionString[]; - diff --git a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap b/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap deleted file mode 100755 index 9df80dae3..000000000 --- a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap +++ /dev/null @@ -1,7 +0,0 @@ -module EthereumAddress { - umbrella header "EthereumAddress-iOS-umbrella.h" - exclude header "EthereumAddress-macOS-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.xcconfig b/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.xcconfig deleted file mode 100755 index 28d69dba6..000000000 --- a/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS -DEFINES_MODULE = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/EthereumAddress" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/EthereumAddress -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" diff --git a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-dummy.m b/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-dummy.m deleted file mode 100755 index 1146275e2..000000000 --- a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_EthereumAddress_macOS : NSObject -@end -@implementation PodsDummy_EthereumAddress_macOS -@end diff --git a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch b/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch deleted file mode 100755 index 082f8af22..000000000 --- a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h b/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h deleted file mode 100755 index ab4ebeafa..000000000 --- a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "EthereumAddress.h" - -FOUNDATION_EXPORT double EthereumAddressVersionNumber; -FOUNDATION_EXPORT const unsigned char EthereumAddressVersionString[]; - diff --git a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap b/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap deleted file mode 100755 index 3a8fe9f18..000000000 --- a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap +++ /dev/null @@ -1,7 +0,0 @@ -module EthereumAddress { - umbrella header "EthereumAddress-macOS-umbrella.h" - exclude header "EthereumAddress-iOS-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.xcconfig b/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.xcconfig deleted file mode 100755 index 0a9348865..000000000 --- a/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS -DEFINES_MODULE = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/EthereumAddress" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/EthereumAddress -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown old mode 100755 new mode 100644 index 8dfa8ee35..8013cf69b --- a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown @@ -39,40 +39,6 @@ Permission is granted to anyone to use this software for any purpose,including c - This notice may not be removed or altered from any source or binary distribution. - Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' -## EthereumABI - -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -## EthereumAddress - -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - ## PromiseKit Copyright 2016-present, Max Howell; mxcl@me.com @@ -301,23 +267,6 @@ SOFTWARE. incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. -## SwiftRLP - -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - ## secp256k1_swift Copyright 2018 Alex Vlasov (bankexfoundation.org) diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist old mode 100755 new mode 100644 index 6c96da375..2d6cae54f --- a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist @@ -62,52 +62,6 @@ Permission is granted to anyone to use this software for any purpose,including c Type PSGroupSpecifier - - FooterText - Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - License - Apache License 2.0 - Title - EthereumABI - Type - PSGroupSpecifier - - - FooterText - Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - License - Apache License 2.0 - Title - EthereumAddress - Type - PSGroupSpecifier - FooterText Copyright 2016-present, Max Howell; mxcl@me.com @@ -354,29 +308,6 @@ SOFTWARE. Type PSGroupSpecifier - - FooterText - Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - License - Apache License 2.0 - Title - SwiftRLP - Type - PSGroupSpecifier - FooterText Copyright 2018 Alex Vlasov <av@bankexfoundation.org> (bankexfoundation.org) diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-dummy.m b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-umbrella.h b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig old mode 100755 new mode 100644 index df9773f3d..52d2560e0 --- a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig @@ -1,11 +1,11 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-iOS" -l"CryptoSwift-iOS" -l"EthereumABI-iOS" -l"EthereumAddress-iOS" -l"PromiseKit" -l"SipHash-iOS" -l"Starscream-iOS" -l"SwiftRLP-iOS" -l"secp256k1_swift-iOS" -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-iOS" -l"CryptoSwift-iOS" -l"PromiseKit" -l"SipHash-iOS" -l"Starscream-iOS" -l"secp256k1_swift-iOS" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig old mode 100755 new mode 100644 index df9773f3d..52d2560e0 --- a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig @@ -1,11 +1,11 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-iOS" -l"CryptoSwift-iOS" -l"EthereumABI-iOS" -l"EthereumAddress-iOS" -l"PromiseKit" -l"SipHash-iOS" -l"Starscream-iOS" -l"SwiftRLP-iOS" -l"secp256k1_swift-iOS" -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-iOS" -l"CryptoSwift-iOS" -l"PromiseKit" -l"SipHash-iOS" -l"Starscream-iOS" -l"secp256k1_swift-iOS" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" diff --git a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.markdown old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.plist old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-dummy.m b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig old mode 100755 new mode 100644 index 593a477f9..7c9ef786a --- a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig @@ -1,10 +1,10 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" diff --git a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig old mode 100755 new mode 100644 index 593a477f9..7c9ef786a --- a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig @@ -1,10 +1,10 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown old mode 100755 new mode 100644 index 8dfa8ee35..8013cf69b --- a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown @@ -39,40 +39,6 @@ Permission is granted to anyone to use this software for any purpose,including c - This notice may not be removed or altered from any source or binary distribution. - Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' -## EthereumABI - -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -## EthereumAddress - -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - ## PromiseKit Copyright 2016-present, Max Howell; mxcl@me.com @@ -301,23 +267,6 @@ SOFTWARE. incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. -## SwiftRLP - -Copyright 2018 Alex Vlasov - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - ## secp256k1_swift Copyright 2018 Alex Vlasov (bankexfoundation.org) diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist old mode 100755 new mode 100644 index 6c96da375..2d6cae54f --- a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist @@ -62,52 +62,6 @@ Permission is granted to anyone to use this software for any purpose,including c Type PSGroupSpecifier - - FooterText - Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - License - Apache License 2.0 - Title - EthereumABI - Type - PSGroupSpecifier - - - FooterText - Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - License - Apache License 2.0 - Title - EthereumAddress - Type - PSGroupSpecifier - FooterText Copyright 2016-present, Max Howell; mxcl@me.com @@ -354,29 +308,6 @@ SOFTWARE. Type PSGroupSpecifier - - FooterText - Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - License - Apache License 2.0 - Title - SwiftRLP - Type - PSGroupSpecifier - FooterText Copyright 2018 Alex Vlasov <av@bankexfoundation.org> (bankexfoundation.org) diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-dummy.m b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-umbrella.h b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig old mode 100755 new mode 100644 index 7566a0c9c..10227e4d3 --- a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig @@ -1,11 +1,11 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-macOS" -l"CryptoSwift-macOS" -l"EthereumABI-macOS" -l"EthereumAddress-macOS" -l"PromiseKit.root-CorePromise-Foundation" -l"SipHash-macOS" -l"Starscream-macOS" -l"SwiftRLP-macOS" -l"secp256k1_swift-macOS" -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-macOS" -l"CryptoSwift-macOS" -l"PromiseKit.root-CorePromise-Foundation" -l"SipHash-macOS" -l"Starscream-macOS" -l"secp256k1_swift-macOS" -framework "Foundation" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig old mode 100755 new mode 100644 index 7566a0c9c..10227e4d3 --- a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig @@ -1,11 +1,11 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-macOS" -l"CryptoSwift-macOS" -l"EthereumABI-macOS" -l"EthereumAddress-macOS" -l"PromiseKit.root-CorePromise-Foundation" -l"SipHash-macOS" -l"Starscream-macOS" -l"SwiftRLP-macOS" -l"secp256k1_swift-macOS" -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-macOS" -l"CryptoSwift-macOS" -l"PromiseKit.root-CorePromise-Foundation" -l"SipHash-macOS" -l"Starscream-macOS" -l"secp256k1_swift-macOS" -framework "Foundation" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" diff --git a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.markdown old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.plist old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-dummy.m b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig old mode 100755 new mode 100644 index 1586a704d..ab6063855 --- a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig @@ -1,10 +1,10 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" OTHER_LDFLAGS = $(inherited) -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" diff --git a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig old mode 100755 new mode 100644 index 1586a704d..ab6063855 --- a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig @@ -1,10 +1,10 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" OTHER_LDFLAGS = $(inherited) -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS/Starscream.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" diff --git a/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-dummy.m b/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch b/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h b/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap b/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.xcconfig b/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m b/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch b/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h b/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap b/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig b/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-dummy.m b/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-prefix.pch b/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h b/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap b/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.xcconfig b/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-dummy.m b/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-prefix.pch b/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h b/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap b/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.xcconfig b/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-dummy.m b/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-dummy.m deleted file mode 100755 index 2de0a8040..000000000 --- a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SwiftRLP_iOS : NSObject -@end -@implementation PodsDummy_SwiftRLP_iOS -@end diff --git a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch b/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch deleted file mode 100755 index beb2a2441..000000000 --- a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h b/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h deleted file mode 100755 index c819e55b6..000000000 --- a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "SwiftRLP.h" - -FOUNDATION_EXPORT double SwiftRLPVersionNumber; -FOUNDATION_EXPORT const unsigned char SwiftRLPVersionString[]; - diff --git a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap b/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap deleted file mode 100755 index 873026516..000000000 --- a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap +++ /dev/null @@ -1,7 +0,0 @@ -module SwiftRLP { - umbrella header "SwiftRLP-iOS-umbrella.h" - exclude header "SwiftRLP-macOS-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.xcconfig b/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.xcconfig deleted file mode 100755 index 882644d9a..000000000 --- a/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS -DEFINES_MODULE = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwiftRLP" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftRLP -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" diff --git a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-dummy.m b/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-dummy.m deleted file mode 100755 index 6090b3bb7..000000000 --- a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SwiftRLP_macOS : NSObject -@end -@implementation PodsDummy_SwiftRLP_macOS -@end diff --git a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch b/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch deleted file mode 100755 index 082f8af22..000000000 --- a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h b/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h deleted file mode 100755 index bfe75850f..000000000 --- a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "SwiftRLP.h" - -FOUNDATION_EXPORT double SwiftRLPVersionNumber; -FOUNDATION_EXPORT const unsigned char SwiftRLPVersionString[]; - diff --git a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap b/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap deleted file mode 100755 index 5e8affee4..000000000 --- a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap +++ /dev/null @@ -1,7 +0,0 @@ -module SwiftRLP { - umbrella header "SwiftRLP-macOS-umbrella.h" - exclude header "SwiftRLP-iOS-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.xcconfig b/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.xcconfig deleted file mode 100755 index 1c0929a8d..000000000 --- a/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS -DEFINES_MODULE = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwiftRLP" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftRLP -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" diff --git a/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-dummy.m b/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-prefix.pch b/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h b/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap b/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.xcconfig b/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-dummy.m b/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-dummy.m old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch b/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h b/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap b/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap old mode 100755 new mode 100644 diff --git a/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.xcconfig b/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.xcconfig old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_parsing.c b/Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_parsing.c old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_parsing.h b/Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_parsing.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_privatekey_parsing.c b/Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_privatekey_parsing.c old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_privatekey_parsing.h b/Pods/secp256k1_swift/Classes/secp256k1/contrib/lax_der_privatekey_parsing.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1.h b/Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1_ecdh.h b/Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1_ecdh.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1_recovery.h b/Pods/secp256k1_swift/Classes/secp256k1/include/secp256k1_recovery.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/basic-config.h b/Pods/secp256k1_swift/Classes/secp256k1/src/basic-config.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/ecdsa.h b/Pods/secp256k1_swift/Classes/secp256k1/src/ecdsa.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/ecdsa_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/ecdsa_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/eckey.h b/Pods/secp256k1_swift/Classes/secp256k1/src/eckey.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/eckey_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/eckey_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult.h b/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_const.h b/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_const.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_const_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_const_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_gen.h b/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_gen.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_gen_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_gen_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/ecmult_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/field.h b/Pods/secp256k1_swift/Classes/secp256k1/src/field.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/field_10x26.h b/Pods/secp256k1_swift/Classes/secp256k1/src/field_10x26.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/field_10x26_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/field_10x26_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52.h b/Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_asm_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_asm_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_int128_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/field_5x52_int128_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/field_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/field_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/group.h b/Pods/secp256k1_swift/Classes/secp256k1/src/group.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/group_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/group_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/hash.h b/Pods/secp256k1_swift/Classes/secp256k1/src/hash.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/hash_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/hash_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/modules/ecdh/main_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/modules/ecdh/main_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/num.h b/Pods/secp256k1_swift/Classes/secp256k1/src/num.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/num_gmp.h b/Pods/secp256k1_swift/Classes/secp256k1/src/num_gmp.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/num_gmp_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/num_gmp_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/num_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/num_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scalar.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scalar.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_4x64.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_4x64.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_4x64_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_4x64_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_8x32.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_8x32.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_8x32_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_8x32_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_low.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_low.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_low_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scalar_low_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scratch.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scratch.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/scratch_impl.h b/Pods/secp256k1_swift/Classes/secp256k1/src/scratch_impl.h old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/secp256k1.c b/Pods/secp256k1_swift/Classes/secp256k1/src/secp256k1.c old mode 100755 new mode 100644 diff --git a/Pods/secp256k1_swift/Classes/secp256k1/src/util.h b/Pods/secp256k1_swift/Classes/secp256k1/src/util.h old mode 100755 new mode 100644 diff --git a/web3swift.podspec b/web3swift.podspec index fbb0fbe7c..c7902d26c 100755 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "web3swift" -s.version = "2.1.3" +s.version = "2.1.4" s.summary = "Web3 implementation in vanilla Swift for iOS ans macOS" s.description = <<-DESC @@ -23,11 +23,8 @@ s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.frameworks = 'CoreImage' s.dependency 'BigInt', '3.1' -s.dependency 'CryptoSwift', '0.15.0' -s.dependency 'PromiseKit', '6.4.1' +s.dependency 'CryptoSwift', '1.0.0' +s.dependency 'PromiseKit', '6.8.4' s.dependency 'secp256k1_swift', '1.0.3' -s.dependency 'SwiftRLP', '1.1' -s.dependency 'EthereumAddress', '1.0.0' -s.dependency 'EthereumABI', '1.1.1' s.dependency 'Starscream', '3.1.0' end diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj old mode 100755 new mode 100644 index cbb06bf8c..6713bc01d --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -8,8 +8,9 @@ /* Begin PBXBuildFile section */ 00E5FE8220EA3FF40030E0D6 /* web3swift_infura_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE8120EA3FF40030E0D6 /* web3swift_infura_Tests.swift */; }; - 13AE5971A972F5B55FA6FB69 /* libPods-web3swift-iOS_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8349531F1984454E50389370 /* libPods-web3swift-iOS_Tests.a */; }; + 196B376CAA2FAC3DAAD67B34 /* libPods-web3swift-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DDC637B83AD1179CFAE277D /* libPods-web3swift-macOS.a */; }; 1CD91B341FD769A6007BFB45 /* web3swift_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD91AFC1FD76910007BFB45 /* web3swift_iOS.framework */; }; + 238114CA9A7D7E263E63431F /* libPods-web3swift-macOS_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A49E64AE9B7B52F639389CF8 /* libPods-web3swift-macOS_Tests.a */; }; 3A3F59B822592F5B0075C9E7 /* Web3+BrowserFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */; }; 3A3F59B922592F6A0075C9E7 /* Web3+BrowserFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */; }; 3A3F59BA225931710075C9E7 /* ENS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2E668CD214F8A7B00C3CC2D /* ENS.swift */; }; @@ -28,6 +29,26 @@ 3A52CCBE226747EB001C8D7A /* PublicKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBC226747EB001C8D7A /* PublicKey.swift */; }; 3A52CCC022675CFC001C8D7A /* ENSRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */; }; 3A52CCC122675CFC001C8D7A /* ENSRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */; }; + 3AA810A9226FD14800F5DB52 /* ABIDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A2226FD14700F5DB52 /* ABIDecoding.swift */; }; + 3AA810AA226FD14800F5DB52 /* ABIDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A2226FD14700F5DB52 /* ABIDecoding.swift */; }; + 3AA810AB226FD14800F5DB52 /* ABIElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A3226FD14700F5DB52 /* ABIElements.swift */; }; + 3AA810AC226FD14800F5DB52 /* ABIElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A3226FD14700F5DB52 /* ABIElements.swift */; }; + 3AA810AD226FD14800F5DB52 /* ABITypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A4226FD14700F5DB52 /* ABITypeParser.swift */; }; + 3AA810AE226FD14800F5DB52 /* ABITypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A4226FD14700F5DB52 /* ABITypeParser.swift */; }; + 3AA810AF226FD14800F5DB52 /* ABIParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A5226FD14700F5DB52 /* ABIParameterTypes.swift */; }; + 3AA810B0226FD14800F5DB52 /* ABIParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A5226FD14700F5DB52 /* ABIParameterTypes.swift */; }; + 3AA810B1226FD14800F5DB52 /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A6226FD14700F5DB52 /* ABI.swift */; }; + 3AA810B2226FD14800F5DB52 /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A6226FD14700F5DB52 /* ABI.swift */; }; + 3AA810B3226FD14800F5DB52 /* ABIEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A7226FD14700F5DB52 /* ABIEncoding.swift */; }; + 3AA810B4226FD14800F5DB52 /* ABIEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A7226FD14700F5DB52 /* ABIEncoding.swift */; }; + 3AA810B5226FD14800F5DB52 /* ABIParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A8226FD14700F5DB52 /* ABIParsing.swift */; }; + 3AA810B6226FD14800F5DB52 /* ABIParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810A8226FD14700F5DB52 /* ABIParsing.swift */; }; + 3AA810BA226FD15200F5DB52 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810B8226FD15200F5DB52 /* Extensions.swift */; }; + 3AA810BB226FD15200F5DB52 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810B8226FD15200F5DB52 /* Extensions.swift */; }; + 3AA810BC226FD15200F5DB52 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810B9226FD15200F5DB52 /* EthereumAddress.swift */; }; + 3AA810BD226FD15200F5DB52 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810B9226FD15200F5DB52 /* EthereumAddress.swift */; }; + 3AA810C0226FD15A00F5DB52 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810BF226FD15A00F5DB52 /* RLP.swift */; }; + 3AA810C1226FD15A00F5DB52 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA810BF226FD15A00F5DB52 /* RLP.swift */; }; 3AD7D0AD226B5AA900E0F98D /* ENSReverseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AD7D0AC226B5AA900E0F98D /* ENSReverseRegistrar.swift */; }; 3AD7D0AE226B5AA900E0F98D /* ENSReverseRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AD7D0AC226B5AA900E0F98D /* ENSReverseRegistrar.swift */; }; 3AE8913C2256286C00D08E99 /* Web3+ERC1155.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */; }; @@ -97,8 +118,7 @@ 4194813F203630530065A83B /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C6200CBAC200B6D3AB /* Dictionary+Extension.swift */; }; 41948140203630530065A83B /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1CA200CBB2200B6D3AB /* Array+Extension.swift */; }; 41948141203630530065A83B /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113D2FF1FD7F30F0074282C /* String+Extension.swift */; }; - 4B900282EFA99F16100CC958 /* libPods-web3swift-macOS_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8675751D91DB2DBC9E7A3469 /* libPods-web3swift-macOS_Tests.a */; }; - 64CF114189285D8E240C4985 /* libPods-web3swift-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A5E8AF69880F5141B4AC9DF0 /* libPods-web3swift-iOS.a */; }; + 62A5016BC88DAF815B25C9EC /* libPods-web3swift-iOS_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 66F3E085F34F16B69669C5BD /* libPods-web3swift-iOS_Tests.a */; }; 8103BBCC2077B84400499769 /* PlainKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8103BBCB2077B84400499769 /* PlainKeystore.swift */; }; 8103BBCD2077B84400499769 /* PlainKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8103BBCB2077B84400499769 /* PlainKeystore.swift */; }; 8104E2281FE82BDC00F952CB /* Web3+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8104E2271FE82BDC00F952CB /* Web3+Utils.swift */; }; @@ -223,9 +243,9 @@ 81FB21FF207BB297007F9A83 /* EIP67Code.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FB21F8207BA78B007F9A83 /* EIP67Code.swift */; }; 81FB2201207BC58C007F9A83 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81FB2200207BC58B007F9A83 /* CoreImage.framework */; }; 81FB2203207BC6DB007F9A83 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81FB2202207BC6DB007F9A83 /* ImageIO.framework */; }; + 8EC1FF515571CFBFCEEB91EC /* libPods-web3swift-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CC4C327013FDB7D5FA5445F /* libPods-web3swift-iOS.a */; }; 985BFD4A216CE8B100B28C14 /* Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */; }; 985BFD4E216E2E0A00B28C14 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */; }; - B350A445E5DB35C60E59AD70 /* libPods-web3swift-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 57F8C9C48884592DCF561393 /* libPods-web3swift-macOS.a */; }; E2065FB82181D7D700701068 /* Promise+Web3+Eth+EstimateGas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1823F20D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift */; }; E2065FB92181D7D700701068 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81195AAF20D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift */; }; E2065FBA2181D7D700701068 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */; }; @@ -256,24 +276,29 @@ 00E5FE7B20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_ERC20_Tests.swift; sourceTree = ""; }; 00E5FE7F20EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_RLP_Tests.swift; sourceTree = ""; }; 00E5FE8120EA3FF40030E0D6 /* web3swift_infura_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_infura_Tests.swift; sourceTree = ""; }; - 08BD06D432296DA533D07D20 /* Pods_Web3Swift_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0F133EC83594B17BA8C71784 /* Pods_web3swift_ios_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_ios_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 10C02100CDF7C2D5C79A52B9 /* Pods_web3Swift_Demo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3Swift_Demo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 18E81592D2802B9F4E200823 /* Pods_web3swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD91AFC1FD76910007BFB45 /* web3swift_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = web3swift_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD91AFF1FD76910007BFB45 /* web3swift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = web3swift.h; sourceTree = ""; }; 1CD91B001FD76910007BFB45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1CD91B2F1FD769A6007BFB45 /* web3swift-iOS_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "web3swift-iOS_Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD91B311FD769A6007BFB45 /* web3swift_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_Tests.swift; sourceTree = ""; }; 1CD91B331FD769A6007BFB45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1E62EF5F091ED9F7B80CA8EE /* Pods-web3swift-macOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig"; sourceTree = ""; }; - 2B8FEFF3962166E1BEADC886 /* Pods_web3swift_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 342700493511FEB189700D13 /* Pods-web3swift-iOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig"; sourceTree = ""; }; - 391A0D2EF42488E5C8AB2F71 /* Pods_web3swift_osx_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_osx_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2CC4C327013FDB7D5FA5445F /* libPods-web3swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2DDC637B83AD1179CFAE277D /* libPods-web3swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 30EACC88491D082CB973E9D8 /* Pods-web3swift-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS.debug.xcconfig"; path = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig"; sourceTree = ""; }; 3A52CCB62264B712001C8D7A /* ENSBaseRegistrar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSBaseRegistrar.swift; sourceTree = ""; }; 3A52CCB92264B728001C8D7A /* ETHRegistrarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETHRegistrarController.swift; sourceTree = ""; }; 3A52CCBC226747EB001C8D7A /* PublicKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublicKey.swift; sourceTree = ""; }; 3A52CCBF22675CFC001C8D7A /* ENSRegistry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSRegistry.swift; sourceTree = ""; }; + 3AA810A2226FD14700F5DB52 /* ABIDecoding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABIDecoding.swift; sourceTree = ""; }; + 3AA810A3226FD14700F5DB52 /* ABIElements.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABIElements.swift; sourceTree = ""; }; + 3AA810A4226FD14700F5DB52 /* ABITypeParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABITypeParser.swift; sourceTree = ""; }; + 3AA810A5226FD14700F5DB52 /* ABIParameterTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABIParameterTypes.swift; sourceTree = ""; }; + 3AA810A6226FD14700F5DB52 /* ABI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABI.swift; sourceTree = ""; }; + 3AA810A7226FD14700F5DB52 /* ABIEncoding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABIEncoding.swift; sourceTree = ""; }; + 3AA810A8226FD14700F5DB52 /* ABIParsing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABIParsing.swift; sourceTree = ""; }; + 3AA810B8226FD15200F5DB52 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + 3AA810B9226FD15200F5DB52 /* EthereumAddress.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EthereumAddress.swift; sourceTree = ""; }; + 3AA810BF226FD15A00F5DB52 /* RLP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RLP.swift; sourceTree = ""; }; 3AD7D0AC226B5AA900E0F98D /* ENSReverseRegistrar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSReverseRegistrar.swift; sourceTree = ""; }; 3AE8911C2256286B00D08E99 /* Web3+ERC1155.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1155.swift"; sourceTree = ""; }; 3AE8911E2256286B00D08E99 /* Web3+ERC1376.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+ERC1376.swift"; sourceTree = ""; }; @@ -297,14 +322,9 @@ 3AE891632256620200D08E99 /* Web3+WebsocketProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+WebsocketProvider.swift"; sourceTree = ""; }; 3AE891662256626000D08E99 /* web3swift_Websockets_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_Websockets_Tests.swift; sourceTree = ""; }; 417715D420362916005C3E16 /* web3swift_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = web3swift_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 419481432036338A0065A83B /* Pods_web3swift_osx.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_web3swift_osx.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 4EFFCB6D208552F2008165FE /* web3swift_local_node_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_local_node_Tests.swift; sourceTree = ""; }; 4EFFCB6F208554EB008165FE /* web3swift_remoteParsing_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_remoteParsing_Tests.swift; sourceTree = ""; }; - 57F8C9C48884592DCF561393 /* libPods-web3swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5A31D55232599E417B6F862E /* Pods-web3swift-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig"; sourceTree = ""; }; - 5B83FA95B72D7DA53870479B /* Pods-web3swift-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig"; sourceTree = ""; }; - 68360683136B1FE2C57D65D9 /* Pods_Web3Swift_ios_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_ios_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 740EB523E2A6AEE0C6916C71 /* Pods_Web3Swift_osx_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_osx_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 66F3E085F34F16B69669C5BD /* libPods-web3swift-iOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-iOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 8103BBCB2077B84400499769 /* PlainKeystore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlainKeystore.swift; sourceTree = ""; }; 8104E2271FE82BDC00F952CB /* Web3+Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Utils.swift"; sourceTree = ""; }; 810B0F991FEC446B00CF0DA2 /* Web3+JSONRPC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+JSONRPC.swift"; sourceTree = ""; }; @@ -399,25 +419,23 @@ 81FECD5A211AECBD006DA367 /* Web3+Eth+ObjC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Eth+ObjC.swift"; sourceTree = ""; }; 81FECD5D211AEFCE006DA367 /* web3swift_ObjC_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_ObjC_Tests.swift; sourceTree = ""; }; 81FECD63211AF162006DA367 /* web3swift-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "web3swift-Bridging-Header.h"; sourceTree = ""; }; - 8349531F1984454E50389370 /* libPods-web3swift-iOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-iOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 8675751D91DB2DBC9E7A3469 /* libPods-web3swift-macOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-macOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9622063885C7B5CF79ED5C76 /* Pods-web3swift-macOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS_Tests.release.xcconfig"; path = "Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig"; sourceTree = ""; }; 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+TxPool.swift"; sourceTree = ""; }; 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+TxPool.swift"; sourceTree = ""; }; - A5E8AF69880F5141B4AC9DF0 /* libPods-web3swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - A9ADDE40292A17C21B8D5516 /* Pods-web3swift-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig"; sourceTree = ""; }; + A49E64AE9B7B52F639389CF8 /* libPods-web3swift-macOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-web3swift-macOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + AF83DB15DA42E2A0527FD448 /* Pods-web3swift-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS.debug.xcconfig"; path = "Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig"; sourceTree = ""; }; B219DC162154F3EE0035BF94 /* ENSResolver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSResolver.swift; sourceTree = ""; }; B2E668CD214F8A7B00C3CC2D /* ENS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENS.swift; sourceTree = ""; }; - B48CA58D134401D3C4E8CCC5 /* Pods_Web3Swift_osx.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_osx.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B5AFAFC5440E52BE57C7BA13 /* Pods_web3swiftTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swiftTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CA3F7E825AEBF3455D00150A /* Pods-web3swift-macOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig"; sourceTree = ""; }; - CDCB852B5E2E84636B80BB99 /* Pods-web3swift-iOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig"; sourceTree = ""; }; + BA51D47086CC4166CD3FE8B5 /* Pods-web3swift-iOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.debug.xcconfig"; path = "Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig"; sourceTree = ""; }; + C971B978E454C1956C10D2D6 /* Pods-web3swift-macOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS_Tests.debug.xcconfig"; path = "Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig"; sourceTree = ""; }; E23B5ADA20EA67D800DC7F32 /* web3swift_AdvancedABIv2_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_AdvancedABIv2_Tests.swift; sourceTree = ""; }; E23B5ADC20EA685D00DC7F32 /* web3swift_EIP67_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_EIP67_Tests.swift; sourceTree = ""; }; E23B5AE020EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_rinkeby_personalSignature_Tests.swift; sourceTree = ""; }; E23B5AE220EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_numberFormattingUtil_Tests.swift; sourceTree = ""; }; E2C590752152835400FF53D3 /* JSONRPCrequestDispatcher+ObjC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JSONRPCrequestDispatcher+ObjC.swift"; sourceTree = ""; }; - FB43EC035C593F9E5A3644B6 /* Pods-web3swift-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig"; sourceTree = ""; }; - FC1E6C115639177F2629E42A /* Pods_web3swift_osx.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_osx.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E3D5CDC035B893CB91CF045F /* Pods-web3swift-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS.release.xcconfig"; path = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig"; sourceTree = ""; }; + E5919322869B7D808524A8A7 /* Pods-web3swift-iOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.release.xcconfig"; path = "Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig"; sourceTree = ""; }; + E95C8ADDFF48DE0888003421 /* Pods-web3swift-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS.release.xcconfig"; path = "Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -427,7 +445,7 @@ files = ( 81FB2203207BC6DB007F9A83 /* ImageIO.framework in Frameworks */, 81FB2201207BC58C007F9A83 /* CoreImage.framework in Frameworks */, - 64CF114189285D8E240C4985 /* libPods-web3swift-iOS.a in Frameworks */, + 8EC1FF515571CFBFCEEB91EC /* libPods-web3swift-iOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -436,7 +454,7 @@ buildActionMask = 2147483647; files = ( 1CD91B341FD769A6007BFB45 /* web3swift_iOS.framework in Frameworks */, - 13AE5971A972F5B55FA6FB69 /* libPods-web3swift-iOS_Tests.a in Frameworks */, + 62A5016BC88DAF815B25C9EC /* libPods-web3swift-iOS_Tests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -444,7 +462,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B350A445E5DB35C60E59AD70 /* libPods-web3swift-macOS.a in Frameworks */, + 196B376CAA2FAC3DAAD67B34 /* libPods-web3swift-macOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -453,7 +471,7 @@ buildActionMask = 2147483647; files = ( 81FA43F82044097100EE14D5 /* web3swift_macOS.framework in Frameworks */, - 4B900282EFA99F16100CC958 /* libPods-web3swift-macOS_Tests.a in Frameworks */, + 238114CA9A7D7E263E63431F /* libPods-web3swift-macOS_Tests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -467,8 +485,8 @@ 1CD91B301FD769A6007BFB45 /* web3swiftTests */, 81FA43F42044097100EE14D5 /* web3swift-macOS_Tests */, 1CD91AFD1FD76910007BFB45 /* Products */, - 868F9682FE77A7BADF675F92 /* Pods */, 78D101CC419F27D142F6E9AE /* Frameworks */, + 26B8FE6E5D9AD2A69DB15D2E /* Pods */, ); sourceTree = ""; }; @@ -486,6 +504,9 @@ 1CD91AFE1FD76910007BFB45 /* web3swift */ = { isa = PBXGroup; children = ( + 3AA810BE226FD15A00F5DB52 /* SwiftRLP */, + 3AA810B7226FD15200F5DB52 /* EthereumAddress */, + 3AA810A1226FD14700F5DB52 /* EthereumABI */, 8159C50921343EF900197B91 /* Tokens */, 81FECD43211ADE20006DA367 /* ObjectiveCbridge */, 81A1821220D5A2430016741F /* Promises */, @@ -532,6 +553,22 @@ path = web3swiftTests; sourceTree = ""; }; + 26B8FE6E5D9AD2A69DB15D2E /* Pods */ = { + isa = PBXGroup; + children = ( + AF83DB15DA42E2A0527FD448 /* Pods-web3swift-iOS.debug.xcconfig */, + E95C8ADDFF48DE0888003421 /* Pods-web3swift-iOS.release.xcconfig */, + BA51D47086CC4166CD3FE8B5 /* Pods-web3swift-iOS_Tests.debug.xcconfig */, + E5919322869B7D808524A8A7 /* Pods-web3swift-iOS_Tests.release.xcconfig */, + 30EACC88491D082CB973E9D8 /* Pods-web3swift-macOS.debug.xcconfig */, + E3D5CDC035B893CB91CF045F /* Pods-web3swift-macOS.release.xcconfig */, + C971B978E454C1956C10D2D6 /* Pods-web3swift-macOS_Tests.debug.xcconfig */, + 9622063885C7B5CF79ED5C76 /* Pods-web3swift-macOS_Tests.release.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 3A52CCB42264A938001C8D7A /* ENS */ = { isa = PBXGroup; children = ( @@ -556,6 +593,37 @@ path = EIP; sourceTree = ""; }; + 3AA810A1226FD14700F5DB52 /* EthereumABI */ = { + isa = PBXGroup; + children = ( + 3AA810A2226FD14700F5DB52 /* ABIDecoding.swift */, + 3AA810A3226FD14700F5DB52 /* ABIElements.swift */, + 3AA810A4226FD14700F5DB52 /* ABITypeParser.swift */, + 3AA810A5226FD14700F5DB52 /* ABIParameterTypes.swift */, + 3AA810A6226FD14700F5DB52 /* ABI.swift */, + 3AA810A7226FD14700F5DB52 /* ABIEncoding.swift */, + 3AA810A8226FD14700F5DB52 /* ABIParsing.swift */, + ); + path = EthereumABI; + sourceTree = ""; + }; + 3AA810B7226FD15200F5DB52 /* EthereumAddress */ = { + isa = PBXGroup; + children = ( + 3AA810B8226FD15200F5DB52 /* Extensions.swift */, + 3AA810B9226FD15200F5DB52 /* EthereumAddress.swift */, + ); + path = EthereumAddress; + sourceTree = ""; + }; + 3AA810BE226FD15A00F5DB52 /* SwiftRLP */ = { + isa = PBXGroup; + children = ( + 3AA810BF226FD15A00F5DB52 /* RLP.swift */, + ); + path = SwiftRLP; + sourceTree = ""; + }; 3AE8911B2256286B00D08E99 /* ERC1155 */ = { isa = PBXGroup; children = ( @@ -691,23 +759,11 @@ 81A7B27A2143CC08004CD2C7 /* libicucore.tbd */, 81FB2202207BC6DB007F9A83 /* ImageIO.framework */, 81FB2200207BC58B007F9A83 /* CoreImage.framework */, - 419481432036338A0065A83B /* Pods_web3swift_osx.framework */, 815630052008A64C00A0EC2F /* Security.framework */, - 18E81592D2802B9F4E200823 /* Pods_web3swift.framework */, - B5AFAFC5440E52BE57C7BA13 /* Pods_web3swiftTests.framework */, - 10C02100CDF7C2D5C79A52B9 /* Pods_web3Swift_Demo.framework */, - 08BD06D432296DA533D07D20 /* Pods_Web3Swift_ios.framework */, - 68360683136B1FE2C57D65D9 /* Pods_Web3Swift_ios_Tests.framework */, - B48CA58D134401D3C4E8CCC5 /* Pods_Web3Swift_osx.framework */, - 740EB523E2A6AEE0C6916C71 /* Pods_Web3Swift_osx_Tests.framework */, - 2B8FEFF3962166E1BEADC886 /* Pods_web3swift_ios.framework */, - 0F133EC83594B17BA8C71784 /* Pods_web3swift_ios_Tests.framework */, - FC1E6C115639177F2629E42A /* Pods_web3swift_osx.framework */, - 391A0D2EF42488E5C8AB2F71 /* Pods_web3swift_osx_Tests.framework */, - 57F8C9C48884592DCF561393 /* libPods-web3swift-macOS.a */, - 8675751D91DB2DBC9E7A3469 /* libPods-web3swift-macOS_Tests.a */, - A5E8AF69880F5141B4AC9DF0 /* libPods-web3swift-iOS.a */, - 8349531F1984454E50389370 /* libPods-web3swift-iOS_Tests.a */, + 2CC4C327013FDB7D5FA5445F /* libPods-web3swift-iOS.a */, + 66F3E085F34F16B69669C5BD /* libPods-web3swift-iOS_Tests.a */, + 2DDC637B83AD1179CFAE277D /* libPods-web3swift-macOS.a */, + A49E64AE9B7B52F639389CF8 /* libPods-web3swift-macOS_Tests.a */, ); name = Frameworks; sourceTree = ""; @@ -906,21 +962,6 @@ path = Classes; sourceTree = ""; }; - 868F9682FE77A7BADF675F92 /* Pods */ = { - isa = PBXGroup; - children = ( - 5A31D55232599E417B6F862E /* Pods-web3swift-iOS.debug.xcconfig */, - A9ADDE40292A17C21B8D5516 /* Pods-web3swift-iOS.release.xcconfig */, - 342700493511FEB189700D13 /* Pods-web3swift-iOS_Tests.debug.xcconfig */, - CDCB852B5E2E84636B80BB99 /* Pods-web3swift-iOS_Tests.release.xcconfig */, - FB43EC035C593F9E5A3644B6 /* Pods-web3swift-macOS.debug.xcconfig */, - 5B83FA95B72D7DA53870479B /* Pods-web3swift-macOS.release.xcconfig */, - CA3F7E825AEBF3455D00150A /* Pods-web3swift-macOS_Tests.debug.xcconfig */, - 1E62EF5F091ED9F7B80CA8EE /* Pods-web3swift-macOS_Tests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -945,7 +986,7 @@ isa = PBXNativeTarget; buildConfigurationList = 1CD91B041FD76910007BFB45 /* Build configuration list for PBXNativeTarget "web3swift-iOS" */; buildPhases = ( - 05D1E0064C0452760CDB6A59 /* [CP] Check Pods Manifest.lock */, + 32F0DB2326882C3D3D92D43C /* [CP] Check Pods Manifest.lock */, 1CD91AF71FD76910007BFB45 /* Sources */, 1CD91AF81FD76910007BFB45 /* Frameworks */, 1CD91AF91FD76910007BFB45 /* Headers */, @@ -964,7 +1005,7 @@ isa = PBXNativeTarget; buildConfigurationList = 1CD91B371FD769A6007BFB45 /* Build configuration list for PBXNativeTarget "web3swift-iOS_Tests" */; buildPhases = ( - 8CE421FE6AFA1B201DF09E84 /* [CP] Check Pods Manifest.lock */, + CF340F46D49186A73FB5B32D /* [CP] Check Pods Manifest.lock */, 1CD91B2B1FD769A6007BFB45 /* Sources */, 1CD91B2C1FD769A6007BFB45 /* Frameworks */, 1CD91B2D1FD769A6007BFB45 /* Resources */, @@ -983,7 +1024,7 @@ isa = PBXNativeTarget; buildConfigurationList = 417715E520362916005C3E16 /* Build configuration list for PBXNativeTarget "web3swift-macOS" */; buildPhases = ( - 823273117A75E5B4A01500E1 /* [CP] Check Pods Manifest.lock */, + 8E3655E3092D464091E1FE6A /* [CP] Check Pods Manifest.lock */, 417715CF20362916005C3E16 /* Sources */, 417715D020362916005C3E16 /* Frameworks */, 417715D120362916005C3E16 /* Headers */, @@ -1002,7 +1043,7 @@ isa = PBXNativeTarget; buildConfigurationList = 81FA43FD2044097100EE14D5 /* Build configuration list for PBXNativeTarget "web3swift-macOS_Tests" */; buildPhases = ( - 6E4349FF8099C4D3F1F4669F /* [CP] Check Pods Manifest.lock */, + 2B2C15E96B6A8C55CAE5C55D /* [CP] Check Pods Manifest.lock */, 81FA43EF2044097000EE14D5 /* Sources */, 81FA43F02044097000EE14D5 /* Frameworks */, 81FA43F12044097000EE14D5 /* Resources */, @@ -1024,7 +1065,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "The Matter Inc"; TargetAttributes = { 1CD91AFB1FD76910007BFB45 = { @@ -1100,52 +1141,64 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 05D1E0064C0452760CDB6A59 /* [CP] Check Pods Manifest.lock */ = { + 2B2C15E96B6A8C55CAE5C55D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( "${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-web3swift-iOS-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-web3swift-macOS_Tests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 6E4349FF8099C4D3F1F4669F /* [CP] Check Pods Manifest.lock */ = { + 32F0DB2326882C3D3D92D43C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( "${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-web3swift-macOS_Tests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-web3swift-iOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 823273117A75E5B4A01500E1 /* [CP] Check Pods Manifest.lock */ = { + 8E3655E3092D464091E1FE6A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( "${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); outputPaths = ( "$(DERIVED_FILE_DIR)/Pods-web3swift-macOS-checkManifestLockResult.txt", ); @@ -1154,16 +1207,20 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 8CE421FE6AFA1B201DF09E84 /* [CP] Check Pods Manifest.lock */ = { + CF340F46D49186A73FB5B32D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( "${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); outputPaths = ( "$(DERIVED_FILE_DIR)/Pods-web3swift-iOS_Tests-checkManifestLockResult.txt", ); @@ -1180,6 +1237,7 @@ buildActionMask = 2147483647; files = ( 3A52CCB22264A6D4001C8D7A /* NonceMiddleware.swift in Sources */, + 3AA810A9226FD14800F5DB52 /* ABIDecoding.swift in Sources */, 3A3F59BC225931B00075C9E7 /* NameHash.swift in Sources */, 3A3F59BB225931780075C9E7 /* ENSResolver.swift in Sources */, 3A3F59BA225931710075C9E7 /* ENS.swift in Sources */, @@ -1187,10 +1245,12 @@ 81C146F71FF274B200AA943E /* Web3+Structures.swift in Sources */, 8104E2281FE82BDC00F952CB /* Web3+Utils.swift in Sources */, 818ABD5D1FE95FC9002657BB /* Web3+Contract.swift in Sources */, + 3AA810BC226FD15200F5DB52 /* EthereumAddress.swift in Sources */, 8113D2CA1FD7E1590074282C /* KeystoreManager.swift in Sources */, 3AE891422256286C00D08E99 /* Web3+SecurityToken.swift in Sources */, 817EBB1F2006265400E02EAA /* Base58.swift in Sources */, 817EBB2520066E2B00E02EAA /* AbstractKeystore.swift in Sources */, + 3AA810AD226FD14800F5DB52 /* ABITypeParser.swift in Sources */, 81C0FCF720441A1D00D82FAF /* TransactionSigner.swift in Sources */, 8125F06920499AC300A0F2FE /* BloomFilter.swift in Sources */, 810B0F9A1FEC446B00CF0DA2 /* Web3+JSONRPC.swift in Sources */, @@ -1201,12 +1261,15 @@ 81EB1E4B208173D7003BD47F /* Web3+Personal.swift in Sources */, 81909D1821862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */, 81A1824B20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift in Sources */, + 3AA810B1226FD14800F5DB52 /* ABI.swift in Sources */, 81A1823A20D79AD40016741F /* Promise+Web3+Eth+SendRawTransaction.swift in Sources */, 81D7D97520A3240900A193EC /* EthereumFilterEncodingExtensions.swift in Sources */, + 3AA810AF226FD14800F5DB52 /* ABIParameterTypes.swift in Sources */, 817EBB122004FE2F00E02EAA /* BIP32HDNode.swift in Sources */, 8113D2C41FD7E1590074282C /* CryptoExtensions.swift in Sources */, 81A1822220D678060016741F /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */, 81A1824220D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift in Sources */, + 3AA810C0226FD15A00F5DB52 /* RLP.swift in Sources */, 817EBB2920075D2E00E02EAA /* BIP39.swift in Sources */, 815630022007B53C00A0EC2F /* BIP32Keystore.swift in Sources */, 818ABD5B1FE95F8F002657BB /* Web3+Instance.swift in Sources */, @@ -1231,9 +1294,11 @@ 810B0F9C1FEC520500CF0DA2 /* Web3+Methods.swift in Sources */, 3AE891482256286C00D08E99 /* Web3+ERC20.swift in Sources */, 3AE891612256611E00D08E99 /* Web3+Eth+Websocket.swift in Sources */, + 3AA810BA226FD15200F5DB52 /* Extensions.swift in Sources */, 81A1822520D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 8113DE7C1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift in Sources */, 3A52CCBA2264B728001C8D7A /* ETHRegistrarController.swift in Sources */, + 3AA810B5226FD14800F5DB52 /* ABIParsing.swift in Sources */, 81C5DA2E2074EBF500424CD6 /* EthereumContract.swift in Sources */, 810B0F9E1FEC5B9C00CF0DA2 /* Web3+Eth.swift in Sources */, 3AE891462256286C00D08E99 /* Web3+ERC165.swift in Sources */, @@ -1263,6 +1328,7 @@ 81909D4A218864A8007D2AE5 /* EIP681.swift in Sources */, 3A52CCC022675CFC001C8D7A /* ENSRegistry.swift in Sources */, 3AE891542256286C00D08E99 /* Web3+ERC1400.swift in Sources */, + 3AA810AB226FD14800F5DB52 /* ABIElements.swift in Sources */, 3AE891522256286C00D08E99 /* Web3+ERC721x.swift in Sources */, 81C0FCF220440EB500D82FAF /* Web3+Protocols.swift in Sources */, 3AE891582256286C00D08E99 /* Web3+ERC777.swift in Sources */, @@ -1270,6 +1336,7 @@ 81A1822E20D67BC30016741F /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */, 81A1824020D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift in Sources */, 81909D1221862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */, + 3AA810B3226FD14800F5DB52 /* ABIEncoding.swift in Sources */, 81A1822B20D67A1B0016741F /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, 815630042007BC8F00A0EC2F /* BIP39+WordLists.swift in Sources */, 8113D2CE1FD7E1590074282C /* EthereumTransaction.swift in Sources */, @@ -1310,6 +1377,7 @@ buildActionMask = 2147483647; files = ( 3A52CCB32264A6DC001C8D7A /* NonceMiddleware.swift in Sources */, + 3AA810AA226FD14800F5DB52 /* ABIDecoding.swift in Sources */, 3A3F59BD225931BE0075C9E7 /* NameHash.swift in Sources */, 3A3F59BE225931BE0075C9E7 /* ENS.swift in Sources */, 3A3F59BF225931BE0075C9E7 /* ENSResolver.swift in Sources */, @@ -1317,10 +1385,12 @@ E2065FB82181D7D700701068 /* Promise+Web3+Eth+EstimateGas.swift in Sources */, E2065FB92181D7D700701068 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, E2065FBA2181D7D700701068 /* Promise+Web3+TxPool.swift in Sources */, + 3AA810BD226FD15200F5DB52 /* EthereumAddress.swift in Sources */, E2065FBB2181D7D700701068 /* Web3+TxPool.swift in Sources */, 3AE891432256286C00D08E99 /* Web3+SecurityToken.swift in Sources */, 4194811B203630530065A83B /* Web3+HttpProvider.swift in Sources */, 4194811E203630530065A83B /* Web3.swift in Sources */, + 3AA810AE226FD14800F5DB52 /* ABITypeParser.swift in Sources */, 4194811F203630530065A83B /* Web3+Instance.swift in Sources */, 41948120203630530065A83B /* Web3+Contract.swift in Sources */, 41948121203630530065A83B /* Web3+Utils.swift in Sources */, @@ -1331,12 +1401,15 @@ 8125F06A20499AC300A0F2FE /* BloomFilter.swift in Sources */, 81C0FD062044A8D100D82FAF /* TransactionSigner.swift in Sources */, 41948123203630530065A83B /* Web3+JSONRPC.swift in Sources */, + 3AA810B2226FD14800F5DB52 /* ABI.swift in Sources */, 41948124203630530065A83B /* Web3+Structures.swift in Sources */, 41948125203630530065A83B /* Web3+Methods.swift in Sources */, + 3AA810B0226FD14800F5DB52 /* ABIParameterTypes.swift in Sources */, 81EB1E4C208173D7003BD47F /* Web3+Personal.swift in Sources */, 81D7D97620A3240900A193EC /* EthereumFilterEncodingExtensions.swift in Sources */, 41948126203630530065A83B /* Web3+Eth.swift in Sources */, 81A1822320D678060016741F /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */, + 3AA810C1226FD15A00F5DB52 /* RLP.swift in Sources */, 4194812C203630530065A83B /* KeystoreManager.swift in Sources */, 81DFB400210775320011DC85 /* Web3+InfuraProviders.swift in Sources */, 81D7D97320A31FB700A193EC /* ComparisonExtensions.swift in Sources */, @@ -1361,9 +1434,11 @@ 3AE891492256286C00D08E99 /* Web3+ERC20.swift in Sources */, 3AE891622256611E00D08E99 /* Web3+Eth+Websocket.swift in Sources */, 81A1824920D7DDA20016741F /* Promise+Web3+Personal+Sign.swift in Sources */, + 3AA810BB226FD15200F5DB52 /* Extensions.swift in Sources */, 81A1822620D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 81909D1621862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */, 3A52CCBB2264B728001C8D7A /* ETHRegistrarController.swift in Sources */, + 3AA810B6226FD14800F5DB52 /* ABIParsing.swift in Sources */, 41948133203630530065A83B /* BIP39.swift in Sources */, 3AE891472256286C00D08E99 /* Web3+ERC165.swift in Sources */, 3AE8913F2256286C00D08E99 /* Web3+ERC1376.swift in Sources */, @@ -1393,6 +1468,7 @@ 81909D4B218864A9007D2AE5 /* EIP681.swift in Sources */, 3A52CCC122675CFC001C8D7A /* ENSRegistry.swift in Sources */, 3AE891552256286C00D08E99 /* Web3+ERC1400.swift in Sources */, + 3AA810AC226FD14800F5DB52 /* ABIElements.swift in Sources */, 3AE891532256286C00D08E99 /* Web3+ERC721x.swift in Sources */, 8103BBCD2077B84400499769 /* PlainKeystore.swift in Sources */, 3AE891592256286C00D08E99 /* Web3+ERC777.swift in Sources */, @@ -1400,6 +1476,7 @@ 4194813E203630530065A83B /* Data+Extension.swift in Sources */, 81A1822F20D67BC30016741F /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */, 81A1822C20D67A1B0016741F /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, + 3AA810B4226FD14800F5DB52 /* ABIEncoding.swift in Sources */, 81909D1321862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */, 4194813F203630530065A83B /* Dictionary+Extension.swift in Sources */, 41948140203630530065A83B /* Array+Extension.swift in Sources */, @@ -1567,12 +1644,12 @@ }; 1CD91B051FD76910007BFB45 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5A31D55232599E417B6F862E /* Pods-web3swift-iOS.debug.xcconfig */; + baseConfigurationReference = AF83DB15DA42E2A0527FD448 /* Pods-web3swift-iOS.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -1606,7 +1683,7 @@ }; 1CD91B061FD76910007BFB45 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A9ADDE40292A17C21B8D5516 /* Pods-web3swift-iOS.release.xcconfig */; + baseConfigurationReference = E95C8ADDFF48DE0888003421 /* Pods-web3swift-iOS.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; @@ -1644,7 +1721,7 @@ }; 1CD91B381FD769A6007BFB45 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 342700493511FEB189700D13 /* Pods-web3swift-iOS_Tests.debug.xcconfig */; + baseConfigurationReference = BA51D47086CC4166CD3FE8B5 /* Pods-web3swift-iOS_Tests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CLANG_ENABLE_MODULES = YES; @@ -1667,7 +1744,7 @@ }; 1CD91B391FD769A6007BFB45 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CDCB852B5E2E84636B80BB99 /* Pods-web3swift-iOS_Tests.release.xcconfig */; + baseConfigurationReference = E5919322869B7D808524A8A7 /* Pods-web3swift-iOS_Tests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CLANG_ENABLE_MODULES = YES; @@ -1689,7 +1766,7 @@ }; 417715E620362916005C3E16 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FB43EC035C593F9E5A3644B6 /* Pods-web3swift-macOS.debug.xcconfig */; + baseConfigurationReference = 30EACC88491D082CB973E9D8 /* Pods-web3swift-macOS.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; @@ -1715,7 +1792,7 @@ }; 417715E720362916005C3E16 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5B83FA95B72D7DA53870479B /* Pods-web3swift-macOS.release.xcconfig */; + baseConfigurationReference = E3D5CDC035B893CB91CF045F /* Pods-web3swift-macOS.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; @@ -1741,7 +1818,7 @@ }; 81FA43FB2044097100EE14D5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CA3F7E825AEBF3455D00150A /* Pods-web3swift-macOS_Tests.debug.xcconfig */; + baseConfigurationReference = C971B978E454C1956C10D2D6 /* Pods-web3swift-macOS_Tests.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Mac Developer"; @@ -1759,7 +1836,7 @@ }; 81FA43FC2044097100EE14D5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1E62EF5F091ED9F7B80CA8EE /* Pods-web3swift-macOS_Tests.release.xcconfig */; + baseConfigurationReference = 9622063885C7B5CF79ED5C76 /* Pods-web3swift-macOS_Tests.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Mac Developer"; diff --git a/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift-iOS.xcscheme b/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift-iOS.xcscheme index acab4f7be..a859fc148 100755 --- a/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift-iOS.xcscheme +++ b/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift-iOS.xcscheme @@ -1,6 +1,6 @@ - - - - diff --git a/web3swift/Contract/ComparisonExtensions.swift b/web3swift/Contract/ComparisonExtensions.swift index d11da016b..33f525ff6 100755 --- a/web3swift/Contract/ComparisonExtensions.swift +++ b/web3swift/Contract/ComparisonExtensions.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension BigUInt: EventFilterComparable { public func isEqualTo(_ other: AnyObject) -> Bool { diff --git a/web3swift/Contract/ContractProtocol.swift b/web3swift/Contract/ContractProtocol.swift index bff1d131c..60a31251d 100755 --- a/web3swift/Contract/ContractProtocol.swift +++ b/web3swift/Contract/ContractProtocol.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public protocol ContractProtocol { var address: EthereumAddress? {get set} diff --git a/web3swift/Contract/EthereumContract.swift b/web3swift/Contract/EthereumContract.swift index 5d5fd944c..203c51519 100755 --- a/web3swift/Contract/EthereumContract.swift +++ b/web3swift/Contract/EthereumContract.swift @@ -5,8 +5,8 @@ import Foundation import BigInt -import EthereumAddress -import EthereumABI +//import EthereumAddress +//import EthereumABI public struct EthereumContract:ContractProtocol { public var transactionOptions: TransactionOptions? = TransactionOptions.defaultOptions diff --git a/web3swift/Contract/EthereumFilterEncodingExtensions.swift b/web3swift/Contract/EthereumFilterEncodingExtensions.swift index e818b94fd..d590a87d9 100755 --- a/web3swift/Contract/EthereumFilterEncodingExtensions.swift +++ b/web3swift/Contract/EthereumFilterEncodingExtensions.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension BigUInt: EventFilterEncodable { public func eventFilterEncoded() -> String? { diff --git a/web3swift/Contract/EventFiltering.swift b/web3swift/Contract/EventFiltering.swift index d45d0e1c6..a6cbeb8bc 100755 --- a/web3swift/Contract/EventFiltering.swift +++ b/web3swift/Contract/EventFiltering.swift @@ -5,8 +5,8 @@ // import Foundation -import EthereumABI -import EthereumAddress +//import EthereumABI +//import EthereumAddress internal func filterLogs(decodedLogs: [EventParserResultProtocol], eventFilter: EventFilter) -> [EventParserResultProtocol] { let filteredLogs = decodedLogs.filter { (result) -> Bool in diff --git a/web3swift/Convenience/BigUInt+Extensions.swift b/web3swift/Convenience/BigUInt+Extensions.swift index d23acfbbc..786d1f8e4 100755 --- a/web3swift/Convenience/BigUInt+Extensions.swift +++ b/web3swift/Convenience/BigUInt+Extensions.swift @@ -9,7 +9,7 @@ import Foundation import struct BigInt.BigUInt public extension BigUInt { - public init?(_ naturalUnits: String, _ ethereumUnits: Web3.Utils.Units) { + init?(_ naturalUnits: String, _ ethereumUnits: Web3.Utils.Units) { guard let value = Web3.Utils.parseToBigUInt(naturalUnits, units: ethereumUnits) else {return nil} self = value } diff --git a/web3swift/Convenience/Data+Extension.swift b/web3swift/Convenience/Data+Extension.swift index a91338c33..fb2d4aeb4 100755 --- a/web3swift/Convenience/Data+Extension.swift +++ b/web3swift/Convenience/Data+Extension.swift @@ -13,24 +13,29 @@ public extension Data { self.init(buffer: UnsafeBufferPointer(start: &values, count: values.count)) } - func toArray(type: T.Type) -> [T] { - return self.withUnsafeBytes { - [T](UnsafeBufferPointer(start: $0, count: self.count/MemoryLayout.stride)) + func toArray(type: T.Type) throws -> [T] { + return try self.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + if let bodyAddress = body.baseAddress, body.count > 0 { + let pointer = bodyAddress.assumingMemoryBound(to: T.self) + return [T](UnsafeBufferPointer(start: pointer, count: self.count/MemoryLayout.stride)) + } else { + throw Web3Error.dataError + } } } -// func toArray(type: T.Type) throws -> [T] { -// return try self.withUnsafeBytes { (body: UnsafeRawBufferPointer) in -// if let bodyAddress = body.baseAddress, body.count > 0 { -// let pointer = bodyAddress.assumingMemoryBound(to: T.self) -// return [T](UnsafeBufferPointer(start: pointer, count: self.count/MemoryLayout.stride)) -// } else { -// throw Web3Error.dataError -// } -// } -// } + // func toArray(type: T.Type) throws -> [T] { + // return try self.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + // if let bodyAddress = body.baseAddress, body.count > 0 { + // let pointer = bodyAddress.assumingMemoryBound(to: T.self) + // return [T](UnsafeBufferPointer(start: pointer, count: self.count/MemoryLayout.stride)) + // } else { + // throw Web3Error.dataError + // } + // } + // } - public func constantTimeComparisonTo(_ other:Data?) -> Bool { + func constantTimeComparisonTo(_ other:Data?) -> Bool { guard let rhs = other else {return false} guard self.count == rhs.count else {return false} var difference = UInt8(0x00) @@ -40,53 +45,55 @@ public extension Data { return difference == UInt8(0x00) } - public static func zero(_ data: inout Data) { + static func zero(_ data: inout Data) { let count = data.count - data.withUnsafeMutableBytes { (dataPtr: UnsafeMutablePointer) in -// var rawPtr = UnsafeMutableRawPointer(dataPtr) - // sodium_memzero(rawPtr, count) - dataPtr.initialize(repeating: 0, count: count) + data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) in + body.baseAddress?.assumingMemoryBound(to: UInt8.self).initialize(repeating: 0, count: count) } } -// static func zero(_ data: inout Data) { -// let count = data.count -// data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) in -// body.baseAddress?.assumingMemoryBound(to: UInt8.self).initialize(repeating: 0, count: count) -// } -// } + // static func zero(_ data: inout Data) { + // let count = data.count + // data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) in + // body.baseAddress?.assumingMemoryBound(to: UInt8.self).initialize(repeating: 0, count: count) + // } + // } static func randomBytes(length: Int) -> Data? { for _ in 0...1024 { var data = Data(repeating: 0, count: length) - let result = data.withUnsafeMutableBytes { - (mutableBytes: UnsafeMutablePointer) -> Int32 in - SecRandomCopyBytes(kSecRandomDefault, 32, mutableBytes) + let result = data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) -> Int32? in + if let bodyAddress = body.baseAddress, body.count > 0 { + let pointer = bodyAddress.assumingMemoryBound(to: UInt8.self) + return SecRandomCopyBytes(kSecRandomDefault, 32, pointer) + } else { + return nil + } } - if result == errSecSuccess { + if let notNilResult = result, notNilResult == errSecSuccess { return data } } return nil } -// static func randomBytes(length: Int) -> Data? { -// for _ in 0...1024 { -// var data = Data(repeating: 0, count: length) -// let result = data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) -> Int32? in -// if let bodyAddress = body.baseAddress, body.count > 0 { -// let pointer = bodyAddress.assumingMemoryBound(to: UInt8.self) -// return SecRandomCopyBytes(kSecRandomDefault, 32, pointer) -// } else { -// return nil -// } -// } -// if let notNilResult = result, notNilResult == errSecSuccess { -// return data -// } -// } -// return nil -// } + // static func randomBytes(length: Int) -> Data? { + // for _ in 0...1024 { + // var data = Data(repeating: 0, count: length) + // let result = data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) -> Int32? in + // if let bodyAddress = body.baseAddress, body.count > 0 { + // let pointer = bodyAddress.assumingMemoryBound(to: UInt8.self) + // return SecRandomCopyBytes(kSecRandomDefault, 32, pointer) + // } else { + // return nil + // } + // } + // if let notNilResult = result, notNilResult == errSecSuccess { + // return data + // } + // } + // return nil + // } static func fromHex(_ hex: String) -> Data? { let string = hex.lowercased().stripHexPrefix() @@ -101,32 +108,35 @@ public extension Data { return Data(array) } - func bitsInRange(_ startingBit:Int, _ length:Int) -> UInt64? { //return max of 8 bytes for simplicity, non-public if startingBit + length / 8 > self.count, length > 64, startingBit > 0, length >= 1 {return nil} let bytes = self[(startingBit/8) ..< (startingBit+length+7)/8] let padding = Data(repeating: 0, count: 8 - bytes.count) let padded = bytes + padding guard padded.count == 8 else {return nil} - var uintRepresentation = UInt64(bigEndian: padded.withUnsafeBytes { $0.pointee }) + let pointee = padded.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + body.baseAddress?.assumingMemoryBound(to: UInt64.self).pointee + } + guard let ptee = pointee else {return nil} + var uintRepresentation = UInt64(bigEndian: ptee) uintRepresentation = uintRepresentation << (startingBit % 8) uintRepresentation = uintRepresentation >> UInt64(64 - length) return uintRepresentation } -// func bitsInRange(_ startingBit:Int, _ length:Int) -> UInt64? { //return max of 8 bytes for simplicity, non-public -// if startingBit + length / 8 > self.count, length > 64, startingBit > 0, length >= 1 {return nil} -// let bytes = self[(startingBit/8) ..< (startingBit+length+7)/8] -// let padding = Data(repeating: 0, count: 8 - bytes.count) -// let padded = bytes + padding -// guard padded.count == 8 else {return nil} -// let pointee = padded.withUnsafeBytes { (body: UnsafeRawBufferPointer) in -// body.baseAddress?.assumingMemoryBound(to: UInt64.self).pointee -// } -// guard let ptee = pointee else {return nil} -// var uintRepresentation = UInt64(bigEndian: ptee) -// uintRepresentation = uintRepresentation << (startingBit % 8) -// uintRepresentation = uintRepresentation >> UInt64(64 - length) -// return uintRepresentation -// } + // func bitsInRange(_ startingBit:Int, _ length:Int) -> UInt64? { //return max of 8 bytes for simplicity, non-public + // if startingBit + length / 8 > self.count, length > 64, startingBit > 0, length >= 1 {return nil} + // let bytes = self[(startingBit/8) ..< (startingBit+length+7)/8] + // let padding = Data(repeating: 0, count: 8 - bytes.count) + // let padded = bytes + padding + // guard padded.count == 8 else {return nil} + // let pointee = padded.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + // body.baseAddress?.assumingMemoryBound(to: UInt64.self).pointee + // } + // guard let ptee = pointee else {return nil} + // var uintRepresentation = UInt64(bigEndian: ptee) + // uintRepresentation = uintRepresentation << (startingBit % 8) + // uintRepresentation = uintRepresentation >> UInt64(64 - length) + // return uintRepresentation + // } } diff --git a/web3swift/Convenience/RIPEMD160+StackOveflow.swift b/web3swift/Convenience/RIPEMD160+StackOveflow.swift index 7bc71036e..df4cfb3c7 100755 --- a/web3swift/Convenience/RIPEMD160+StackOveflow.swift +++ b/web3swift/Convenience/RIPEMD160+StackOveflow.swift @@ -308,39 +308,57 @@ public struct RIPEMD160 { MDbuf.0 &+ bb &+ ccc) } - public mutating func update(data: Data) { - data.withUnsafeBytes { (ptr: UnsafePointer) in - var ptr = ptr - var length = data.count - var X = [UInt32](repeating: 0, count: 16) - - // Process remaining bytes from last call: - if buffer.count > 0 && buffer.count + length >= 64 { - let amount = 64 - buffer.count - buffer.append(ptr, count: amount) - buffer.withUnsafeBytes { _ = memcpy(&X, $0, 64) } - compress(X) - ptr += amount - length -= amount + public mutating func update(data: Data) throws { + try data.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + if let bodyAddress = body.baseAddress, body.count > 0 { + var ptr = bodyAddress.assumingMemoryBound(to: UInt8.self) + var length = data.count + var X = [UInt32](repeating: 0, count: 16) + + // Process remaining bytes from last call: + if buffer.count > 0 && buffer.count + length >= 64 { + let amount = 64 - buffer.count + buffer.append(ptr, count: amount) + try buffer.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + if let bodyAddress = body.baseAddress, body.count > 0 { + let pointer = bodyAddress.assumingMemoryBound(to: Void.self) + _ = memcpy(&X, pointer, 64) + } else { + throw Web3Error.dataError + } + } + compress(X) + ptr += amount + length -= amount + } + // Process 64 byte chunks: + while length >= 64 { + memcpy(&X, ptr, 64) + compress(X) + ptr += 64 + length -= 64 + } + // Save remaining unprocessed bytes: + buffer = Data(bytes: ptr, count: length) + } else { + throw Web3Error.dataError } - // Process 64 byte chunks: - while length >= 64 { - memcpy(&X, ptr, 64) - compress(X) - ptr += 64 - length -= 64 - } - // Save remaining unprocessed bytes: - buffer = Data(bytes: ptr, count: length) } count += Int64(data.count) } - public mutating func finalize() -> Data { + public mutating func finalize() throws -> Data { var X = [UInt32](repeating: 0, count: 16) /* append the bit m_n == 1 */ buffer.append(0x80) - buffer.withUnsafeBytes { _ = memcpy(&X, $0, buffer.count) } + try buffer.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + if let bodyAddress = body.baseAddress, body.count > 0 { + let pointer = bodyAddress.assumingMemoryBound(to: Void.self) + _ = memcpy(&X, pointer, buffer.count) + } else { + throw Web3Error.dataError + } + } if (count & 63) > 55 { /* length goes to next block */ @@ -356,12 +374,17 @@ public struct RIPEMD160 { compress(X) var data = Data(count: 20) - data.withUnsafeMutableBytes { (ptr: UnsafeMutablePointer) in - ptr[0] = MDbuf.0 - ptr[1] = MDbuf.1 - ptr[2] = MDbuf.2 - ptr[3] = MDbuf.3 - ptr[4] = MDbuf.4 + try data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) in + if let bodyAddress = body.baseAddress, body.count > 0 { + let pointer = bodyAddress.assumingMemoryBound(to: UInt32.self) + pointer[0] = MDbuf.0 + pointer[1] = MDbuf.1 + pointer[2] = MDbuf.2 + pointer[3] = MDbuf.3 + pointer[4] = MDbuf.4 + } else { + throw Web3Error.dataError + } } buffer = Data() @@ -369,143 +392,143 @@ public struct RIPEMD160 { return data } -// public mutating func update(data: Data) throws { -// try data.withUnsafeBytes { (body: UnsafeRawBufferPointer) in -// -// if let bodyAddress = body.baseAddress, body.count > 0 { -// var ptr = bodyAddress.assumingMemoryBound(to: UInt8.self) -// var length = data.count -// var X = [UInt32](repeating: 0, count: 16) -// -// // Process remaining bytes from last call: -// if buffer.count > 0 && buffer.count + length >= 64 { -// let amount = 64 - buffer.count -// buffer.append(ptr, count: amount) -// try buffer.withUnsafeBytes { (body: UnsafeRawBufferPointer) in -// if let bodyAddress = body.baseAddress, body.count > 0 { -// let pointer = bodyAddress.assumingMemoryBound(to: Void.self) -// _ = memcpy(&X, pointer, 64) -// } else { -// throw Web3Error.dataError -// } -// } -// compress(X) -// ptr += amount -// length -= amount -// } -// // Process 64 byte chunks: -// while length >= 64 { -// memcpy(&X, ptr, 64) -// compress(X) -// ptr += 64 -// length -= 64 -// } -// // Save remaining unprocessed bytes: -// buffer = Data(bytes: ptr, count: length) -// } else { -// throw Web3Error.dataError -// } -// -// } -// count += Int64(data.count) -// } -// -// public mutating func finalize() throws -> Data { -// var X = [UInt32](repeating: 0, count: 16) -// /* append the bit m_n == 1 */ -// buffer.append(0x80) -// try buffer.withUnsafeBytes { (body: UnsafeRawBufferPointer) in -// if let bodyAddress = body.baseAddress, body.count > 0 { -// let pointer = bodyAddress.assumingMemoryBound(to: Void.self) -// _ = memcpy(&X, pointer, buffer.count) -// } else { -// throw Web3Error.dataError -// } -// } -// -// if (count & 63) > 55 { -// /* length goes to next block */ -// compress(X) -// X = [UInt32](repeating: 0, count: 16) -// } -// -// /* append length in bits */ -// let lswlen = UInt32(truncatingIfNeeded: count) -// let mswlen = UInt32(UInt64(count) >> 32) -// X[14] = lswlen << 3 -// X[15] = (lswlen >> 29) | (mswlen << 3) -// compress(X) -// -// var data = Data(count: 20) -// try data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) in -// if let bodyAddress = body.baseAddress, body.count > 0 { -// let pointer = bodyAddress.assumingMemoryBound(to: UInt32.self) -// pointer[0] = MDbuf.0 -// pointer[1] = MDbuf.1 -// pointer[2] = MDbuf.2 -// pointer[3] = MDbuf.3 -// pointer[4] = MDbuf.4 -// } else { -// throw Web3Error.dataError -// } -// } -// -// buffer = Data() -// -// return data -// } + // public mutating func update(data: Data) throws { + // try data.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + // + // if let bodyAddress = body.baseAddress, body.count > 0 { + // var ptr = bodyAddress.assumingMemoryBound(to: UInt8.self) + // var length = data.count + // var X = [UInt32](repeating: 0, count: 16) + // + // // Process remaining bytes from last call: + // if buffer.count > 0 && buffer.count + length >= 64 { + // let amount = 64 - buffer.count + // buffer.append(ptr, count: amount) + // try buffer.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + // if let bodyAddress = body.baseAddress, body.count > 0 { + // let pointer = bodyAddress.assumingMemoryBound(to: Void.self) + // _ = memcpy(&X, pointer, 64) + // } else { + // throw Web3Error.dataError + // } + // } + // compress(X) + // ptr += amount + // length -= amount + // } + // // Process 64 byte chunks: + // while length >= 64 { + // memcpy(&X, ptr, 64) + // compress(X) + // ptr += 64 + // length -= 64 + // } + // // Save remaining unprocessed bytes: + // buffer = Data(bytes: ptr, count: length) + // } else { + // throw Web3Error.dataError + // } + // + // } + // count += Int64(data.count) + // } + // + // public mutating func finalize() throws -> Data { + // var X = [UInt32](repeating: 0, count: 16) + // /* append the bit m_n == 1 */ + // buffer.append(0x80) + // try buffer.withUnsafeBytes { (body: UnsafeRawBufferPointer) in + // if let bodyAddress = body.baseAddress, body.count > 0 { + // let pointer = bodyAddress.assumingMemoryBound(to: Void.self) + // _ = memcpy(&X, pointer, buffer.count) + // } else { + // throw Web3Error.dataError + // } + // } + // + // if (count & 63) > 55 { + // /* length goes to next block */ + // compress(X) + // X = [UInt32](repeating: 0, count: 16) + // } + // + // /* append length in bits */ + // let lswlen = UInt32(truncatingIfNeeded: count) + // let mswlen = UInt32(UInt64(count) >> 32) + // X[14] = lswlen << 3 + // X[15] = (lswlen >> 29) | (mswlen << 3) + // compress(X) + // + // var data = Data(count: 20) + // try data.withUnsafeMutableBytes { (body: UnsafeMutableRawBufferPointer) in + // if let bodyAddress = body.baseAddress, body.count > 0 { + // let pointer = bodyAddress.assumingMemoryBound(to: UInt32.self) + // pointer[0] = MDbuf.0 + // pointer[1] = MDbuf.1 + // pointer[2] = MDbuf.2 + // pointer[3] = MDbuf.3 + // pointer[4] = MDbuf.4 + // } else { + // throw Web3Error.dataError + // } + // } + // + // buffer = Data() + // + // return data + // } } public extension RIPEMD160 { - public static func hash(message: Data) -> Data { + static func hash(message: Data) throws -> Data { var md = RIPEMD160() - md.update(data: message) - return md.finalize() -// return try md.finalize() + try md.update(data: message) + return try md.finalize() + // return try md.finalize() } - public static func hash(message: String) -> Data { - return RIPEMD160.hash(message: message.data(using: .utf8)!) -// return try RIPEMD160.hash(message: message.data(using: .utf8)!) + static func hash(message: String) throws -> Data { + return try RIPEMD160.hash(message: message.data(using: .utf8)!) + // return try RIPEMD160.hash(message: message.data(using: .utf8)!) } } public extension RIPEMD160 { - public static func hmac(key: Data, message: Data) -> Data { + static func hmac(key: Data, message: Data) throws -> Data { var key = key key.count = 64 // Truncate to 64 bytes or fill-up with zeros. -// let outerKeyPad = Data(bytes: key.map { $0 ^ 0x5c }) -// let innerKeyPad = Data(bytes: key.map { $0 ^ 0x36 }) + // let outerKeyPad = Data(bytes: key.map { $0 ^ 0x5c }) + // let innerKeyPad = Data(bytes: key.map { $0 ^ 0x36 }) let outerKeyPad = Data(key.map { $0 ^ 0x5c }) let innerKeyPad = Data(key.map { $0 ^ 0x36 }) var innerMd = RIPEMD160() - innerMd.update(data: innerKeyPad) - innerMd.update(data: message) -// try innerMd.update(data: innerKeyPad) -// try innerMd.update(data: message) + try innerMd.update(data: innerKeyPad) + try innerMd.update(data: message) + // try innerMd.update(data: innerKeyPad) + // try innerMd.update(data: message) var outerMd = RIPEMD160() - outerMd.update(data: outerKeyPad) - outerMd.update(data: innerMd.finalize()) -// try outerMd.update(data: outerKeyPad) -// try outerMd.update(data: innerMd.finalize()) + try outerMd.update(data: outerKeyPad) + try outerMd.update(data: innerMd.finalize()) + // try outerMd.update(data: outerKeyPad) + // try outerMd.update(data: innerMd.finalize()) - return outerMd.finalize() -// return try outerMd.finalize() + return try outerMd.finalize() + // return try outerMd.finalize() } - public static func hmac(key: Data, message: String) -> Data { - return RIPEMD160.hmac(key: key, message: message.data(using: .utf8)!) -// return try RIPEMD160.hmac(key: key, message: message.data(using: .utf8)!) + static func hmac(key: Data, message: String) throws -> Data { + return try RIPEMD160.hmac(key: key, message: message.data(using: .utf8)!) + // return try RIPEMD160.hmac(key: key, message: message.data(using: .utf8)!) } - public static func hmac(key: String, message: String) -> Data { - return RIPEMD160.hmac(key: key.data(using: .utf8)!, message: message) -// return try RIPEMD160.hmac(key: key.data(using: .utf8)!, message: message) + static func hmac(key: String, message: String) throws -> Data { + return try RIPEMD160.hmac(key: key.data(using: .utf8)!, message: message) + // return try RIPEMD160.hmac(key: key.data(using: .utf8)!, message: message) } } diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABI.swift b/web3swift/EthereumABI/ABI.swift similarity index 99% rename from Pods/EthereumABI/EthereumABI/Classes/ABI.swift rename to web3swift/EthereumABI/ABI.swift index 1bcca4d84..d139fd3b0 100755 --- a/Pods/EthereumABI/EthereumABI/Classes/ABI.swift +++ b/web3swift/EthereumABI/ABI.swift @@ -6,7 +6,7 @@ import Foundation public struct ABI { - + } protocol ABIElementPropertiesProtocol { diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift b/web3swift/EthereumABI/ABIDecoding.swift similarity index 83% rename from Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift rename to web3swift/EthereumABI/ABIDecoding.swift index 1ef76c1d9..94f953b57 100755 --- a/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift +++ b/web3swift/EthereumABI/ABIDecoding.swift @@ -5,7 +5,6 @@ import Foundation import BigInt -import EthereumAddress public struct ABIDecoder { @@ -20,7 +19,7 @@ extension ABIDecoder { } public static func decode(types: [ABI.Element.ParameterType], data: Data) -> [AnyObject]? { -// print("Full data: \n" + data.toHexString()) + // print("Full data: \n" + data.toHexString()) var toReturn = [AnyObject]() var consumed: UInt64 = 0 for i in 0 ..< types.count { @@ -40,68 +39,68 @@ extension ABIDecoder { } switch type { case .uint(let bits): -// print("Uint256 element itself: \n" + elementItself.toHexString()) + // print("Uint256 element itself: \n" + elementItself.toHexString()) guard elementItself.count >= 32 else {break} let mod = BigUInt(1) << bits let dataSlice = elementItself[0 ..< 32] let v = BigUInt(dataSlice) % mod -// print("Uint256 element is: \n" + String(v)) + // print("Uint256 element is: \n" + String(v)) return (v as AnyObject, type.memoryUsage) case .int(let bits): -// print("Int256 element itself: \n" + elementItself.toHexString()) + // print("Int256 element itself: \n" + elementItself.toHexString()) guard elementItself.count >= 32 else {break} let mod = BigInt(1) << bits let dataSlice = elementItself[0 ..< 32] let v = BigInt.fromTwosComplement(data: dataSlice) % mod -// print("Int256 element is: \n" + String(v)) + // print("Int256 element is: \n" + String(v)) return (v as AnyObject, type.memoryUsage) case .address: -// print("Address element itself: \n" + elementItself.toHexString()) + // print("Address element itself: \n" + elementItself.toHexString()) guard elementItself.count >= 32 else {break} let dataSlice = elementItself[12 ..< 32] let address = EthereumAddress(dataSlice) -// print("Address element is: \n" + String(address.address)) + // print("Address element is: \n" + String(address.address)) return (address as AnyObject, type.memoryUsage) case .bool: -// print("Bool element itself: \n" + elementItself.toHexString()) + // print("Bool element itself: \n" + elementItself.toHexString()) guard elementItself.count >= 32 else {break} let dataSlice = elementItself[0 ..< 32] let v = BigUInt(dataSlice) -// print("Address element is: \n" + String(v)) + // print("Address element is: \n" + String(v)) if v == BigUInt(1) { return (true as AnyObject, type.memoryUsage) } else if (v == BigUInt(0)) { return (false as AnyObject, type.memoryUsage) } case .bytes(let length): -// print("Bytes32 element itself: \n" + elementItself.toHexString()) + // print("Bytes32 element itself: \n" + elementItself.toHexString()) guard elementItself.count >= 32 else {break} let dataSlice = elementItself[0 ..< length] -// print("Bytes32 element is: \n" + String(dataSlice.toHexString())) + // print("Bytes32 element is: \n" + String(dataSlice.toHexString())) return (dataSlice as AnyObject, type.memoryUsage) case .string: -// print("String element itself: \n" + elementItself.toHexString()) + // print("String element itself: \n" + elementItself.toHexString()) guard elementItself.count >= 32 else {break} var dataSlice = elementItself[0 ..< 32] let length = UInt64(BigUInt(dataSlice)) guard elementItself.count >= 32+length else {break} dataSlice = elementItself[32 ..< 32 + length] guard let string = String(data: dataSlice, encoding: .utf8) else {break} -// print("String element is: \n" + String(string)) + // print("String element is: \n" + String(string)) return (string as AnyObject, type.memoryUsage) case .dynamicBytes: -// print("Bytes element itself: \n" + elementItself.toHexString()) + // print("Bytes element itself: \n" + elementItself.toHexString()) guard elementItself.count >= 32 else {break} var dataSlice = elementItself[0 ..< 32] let length = UInt64(BigUInt(dataSlice)) guard elementItself.count >= 32+length else {break} dataSlice = elementItself[32 ..< 32 + length] -// print("Bytes element is: \n" + String(dataSlice.toHexString())) + // print("Bytes element is: \n" + String(dataSlice.toHexString())) return (dataSlice as AnyObject, type.memoryUsage) case .array(type: let subType, length: let length): switch type.arraySize { case .dynamicSize: -// print("Dynamic array element itself: \n" + elementItself.toHexString()) + // print("Dynamic array element itself: \n" + elementItself.toHexString()) if subType.isStatic { // uint[] like, expect length and elements guard elementItself.count >= 32 else {break} @@ -127,7 +126,7 @@ extension ABIDecoder { dataSlice = Data(elementItself[32 ..< elementItself.count]) var subpointer: UInt64 = 0; var toReturn = [AnyObject]() -// print("Dynamic array sub element itself: \n" + dataSlice.toHexString()) + // print("Dynamic array sub element itself: \n" + dataSlice.toHexString()) for _ in 0 ..< length { let (v, c) = decodeSignleType(type: subType, data: dataSlice, pointer: subpointer) guard let valueUnwrapped = v, let consumedUnwrapped = c else {break} @@ -137,7 +136,7 @@ extension ABIDecoder { return (toReturn as AnyObject, nextElementPointer) } case .staticSize(let staticLength): -// print("Static array element itself: \n" + elementItself.toHexString()) + // print("Static array element itself: \n" + elementItself.toHexString()) guard length == staticLength else {break} var toReturn = [AnyObject]() var consumed:UInt64 = 0 @@ -156,7 +155,7 @@ extension ABIDecoder { break } case .tuple(types: let subTypes): -// print("Tuple element itself: \n" + elementItself.toHexString()) + // print("Tuple element itself: \n" + elementItself.toHexString()) var toReturn = [AnyObject]() var consumed:UInt64 = 0 for i in 0 ..< subTypes.count { @@ -165,31 +164,31 @@ extension ABIDecoder { toReturn.append(valueUnwrapped) consumed = consumed + consumedUnwrapped } -// print("Tuple element is: \n" + String(describing: toReturn)) + // print("Tuple element is: \n" + String(describing: toReturn)) if type.isStatic { return (toReturn as AnyObject, consumed) } else { return (toReturn as AnyObject, nextElementPointer) } case .function: -// print("Function element itself: \n" + elementItself.toHexString()) + // print("Function element itself: \n" + elementItself.toHexString()) guard elementItself.count >= 32 else {break} let dataSlice = elementItself[8 ..< 32] -// print("Function element is: \n" + String(dataSlice.toHexString())) + // print("Function element is: \n" + String(dataSlice.toHexString())) return (dataSlice as AnyObject, type.memoryUsage) } return (nil, nil) } fileprivate static func followTheData(type: ABI.Element.ParameterType, data: Data, pointer: UInt64 = 0) -> (elementEncoding: Data?, nextElementPointer: UInt64?) { -// print("Follow the data: \n" + data.toHexString()) -// print("At pointer: \n" + String(pointer)) + // print("Follow the data: \n" + data.toHexString()) + // print("At pointer: \n" + String(pointer)) if type.isStatic { guard data.count >= pointer + type.memoryUsage else {return (nil, nil)} let elementItself = data[pointer ..< pointer + type.memoryUsage] let nextElement = pointer + type.memoryUsage -// print("Got element itself: \n" + elementItself.toHexString()) -// print("Next element pointer: \n" + String(nextElement)) + // print("Got element itself: \n" + elementItself.toHexString()) + // print("Next element pointer: \n" + String(nextElement)) return (Data(elementItself), nextElement) } else { guard data.count >= pointer + type.memoryUsage else {return (nil, nil)} @@ -211,8 +210,8 @@ extension ABIDecoder { let elementPointer = UInt64(bn) let elementItself = data[elementPointer ..< UInt64(data.count)] let nextElement = pointer + type.memoryUsage -// print("Got element itself: \n" + elementItself.toHexString()) -// print("Next element pointer: \n" + String(nextElement)) + // print("Got element itself: \n" + elementItself.toHexString()) + // print("Next element pointer: \n" + String(nextElement)) return (Data(elementItself), nextElement) } } diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABIElements.swift b/web3swift/EthereumABI/ABIElements.swift similarity index 98% rename from Pods/EthereumABI/EthereumABI/Classes/ABIElements.swift rename to web3swift/EthereumABI/ABIElements.swift index 523f68741..7f76012f6 100755 --- a/Pods/EthereumABI/EthereumABI/Classes/ABIElements.swift +++ b/web3swift/EthereumABI/ABIElements.swift @@ -8,20 +8,20 @@ import BigInt public extension ABI { // JSON Decoding - public struct Input: Decodable { + struct Input: Decodable { public var name: String? public var type: String public var indexed: Bool? public var components: [Input]? } - public struct Output: Decodable { + struct Output: Decodable { public var name: String? public var type: String public var components: [Output]? } - - public struct Record: Decodable { + + struct Record: Decodable { public var name: String? public var type: String? public var payable: Bool? @@ -32,7 +32,7 @@ public extension ABI { public var anonymous: Bool? } - public enum Element { + enum Element { public enum ArraySize { //bytes for convenience case staticSize(UInt64) case dynamicSize diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift b/web3swift/EthereumABI/ABIEncoding.swift similarity index 96% rename from Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift rename to web3swift/EthereumABI/ABIEncoding.swift index e163dc0a2..16c358f91 100755 --- a/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift +++ b/web3swift/EthereumABI/ABIEncoding.swift @@ -5,7 +5,6 @@ import Foundation import BigInt -import EthereumAddress public struct ABIEncoder { @@ -260,7 +259,7 @@ extension ABIEncoder { toReturn.append(encoding) } let total = lengthEncoding + toReturn -// print("Dynamic array of static types encoding :\n" + String(total.toHexString())) + // print("Dynamic array of static types encoding :\n" + String(total.toHexString())) return total } else { // create new context @@ -293,7 +292,7 @@ extension ABIEncoder { } } let total = lengthEncoding + headsConcatenated + tailsConcatenated -// print("Dynamic array of dynamic types encoding :\n" + String(total.toHexString())) + // print("Dynamic array of dynamic types encoding :\n" + String(total.toHexString())) return total } case .staticSize(let staticLength): @@ -308,7 +307,7 @@ extension ABIEncoder { guard let encoding = enc else {break} toReturn.append(encoding) } -// print("Static array of static types encoding :\n" + String(toReturn.toHexString())) + // print("Static array of static types encoding :\n" + String(toReturn.toHexString())) let total = toReturn return total } else { @@ -336,7 +335,7 @@ extension ABIEncoder { tailsPointer = tailsPointer + BigUInt(tail.count) } let total = headsConcatenated + tailsConcatenated -// print("Static array of dynamic types encoding :\n" + String(total.toHexString())) + // print("Static array of dynamic types encoding :\n" + String(total.toHexString())) return total } case .notArray: diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift b/web3swift/EthereumABI/ABIParameterTypes.swift similarity index 99% rename from Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift rename to web3swift/EthereumABI/ABIParameterTypes.swift index 469c155fd..0bbd8038b 100755 --- a/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift +++ b/web3swift/EthereumABI/ABIParameterTypes.swift @@ -5,10 +5,9 @@ import Foundation import BigInt -import EthereumAddress extension ABI.Element { - + /// Specifies the type that parameters in a contract have. public enum ParameterType: ABIElementPropertiesProtocol { case uint(bits: UInt64) diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABIParsing.swift b/web3swift/EthereumABI/ABIParsing.swift similarity index 99% rename from Pods/EthereumABI/EthereumABI/Classes/ABIParsing.swift rename to web3swift/EthereumABI/ABIParsing.swift index f99c13295..bc4610d08 100755 --- a/Pods/EthereumABI/EthereumABI/Classes/ABIParsing.swift +++ b/web3swift/EthereumABI/ABIParsing.swift @@ -23,15 +23,15 @@ extension ABI { static var typeEatingRegex = "^((u?int|bytes)([1-9][0-9]*)|(address|bool|string|tuple|bytes)|(\\[([1-9][0-9]*)\\]))" static var arrayEatingRegex = "^(\\[([1-9][0-9]*)?\\])?.*$" } - - + + fileprivate enum ElementType: String { case function case constructor case fallback case event } - + } extension ABI.Record { @@ -59,7 +59,7 @@ fileprivate func parseToElement(from abiRecord: ABI.Record, type: ABI.ElementTyp let event = try parseEvent(abiRecord: abiRecord) return ABI.Element.event(event) } - + } fileprivate func parseFunction(abiRecord:ABI.Record) throws -> ABI.Element.Function { diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABITypeParser.swift b/web3swift/EthereumABI/ABITypeParser.swift similarity index 100% rename from Pods/EthereumABI/EthereumABI/Classes/ABITypeParser.swift rename to web3swift/EthereumABI/ABITypeParser.swift diff --git a/Pods/EthereumAddress/EthereumAddress/Classes/EthereumAddress.swift b/web3swift/EthereumAddress/EthereumAddress.swift similarity index 100% rename from Pods/EthereumAddress/EthereumAddress/Classes/EthereumAddress.swift rename to web3swift/EthereumAddress/EthereumAddress.swift diff --git a/web3swift/EthereumAddress/Extensions.swift b/web3swift/EthereumAddress/Extensions.swift new file mode 100755 index 000000000..e91a7cf89 --- /dev/null +++ b/web3swift/EthereumAddress/Extensions.swift @@ -0,0 +1,59 @@ +// +// Extensions.swift +// EthereumAddress +// +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation + +extension Array where Element == UInt8 { + init(hex: String) { + self.init(reserveCapacity: hex.unicodeScalars.lazy.underestimatedCount) + var buffer: UInt8? + var skip = hex.hasPrefix("0x") ? 2 : 0 + for char in hex.unicodeScalars.lazy { + guard skip == 0 else { + skip -= 1 + continue + } + guard char.value >= 48 && char.value <= 102 else { + removeAll() + return + } + let v: UInt8 + let c: UInt8 = UInt8(char.value) + switch c { + case let c where c <= 57: + v = c - 48 + case let c where c >= 65 && c <= 70: + v = c - 55 + case let c where c >= 97: + v = c - 87 + default: + removeAll() + return + } + if let b = buffer { + append(b << 4 | v) + buffer = nil + } else { + buffer = v + } + } + if let b = buffer { + append(b) + } + } + + func toHexString() -> String { + return `lazy`.reduce("") { + var s = String($1, radix: 16) + if s.count == 1 { + s = "0" + s + } + return $0 + s + } + } +} diff --git a/web3swift/HookedFunctions/Web3+BrowserFunctions.swift b/web3swift/HookedFunctions/Web3+BrowserFunctions.swift index 5f31ebecc..1f72dfe93 100755 --- a/web3swift/HookedFunctions/Web3+BrowserFunctions.swift +++ b/web3swift/HookedFunctions/Web3+BrowserFunctions.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import secp256k1_swift -import EthereumAddress +//import EthereumAddress extension web3.BrowserFunctions { diff --git a/web3swift/HookedFunctions/Web3+Wallet.swift b/web3swift/HookedFunctions/Web3+Wallet.swift index 30adb5086..c7b0e8c44 100755 --- a/web3swift/HookedFunctions/Web3+Wallet.swift +++ b/web3swift/HookedFunctions/Web3+Wallet.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension web3.Web3Wallet { diff --git a/web3swift/KeystoreManager/AbstractKeystore.swift b/web3swift/KeystoreManager/AbstractKeystore.swift index 72f72a15d..d8a19f97d 100755 --- a/web3swift/KeystoreManager/AbstractKeystore.swift +++ b/web3swift/KeystoreManager/AbstractKeystore.swift @@ -5,7 +5,7 @@ // import Foundation -import EthereumAddress +//import EthereumAddress public protocol AbstractKeystore { var addresses: [EthereumAddress]? {get} diff --git a/web3swift/KeystoreManager/BIP32HDNode.swift b/web3swift/KeystoreManager/BIP32HDNode.swift index 9a9c89bd0..93dc5abe1 100755 --- a/web3swift/KeystoreManager/BIP32HDNode.swift +++ b/web3swift/KeystoreManager/BIP32HDNode.swift @@ -181,7 +181,9 @@ extension HDNode { newNode.publicKey = pubKeyCandidate newNode.privateKey = privKeyCandidate newNode.childNumber = trueIndex - let fprint = RIPEMD160.hash(message: self.publicKey.sha256())[0..<4] + guard let fprint = try? RIPEMD160.hash(message: self.publicKey.sha256())[0..<4] else { + return nil + } newNode.parentFingerprint = fprint var newPath = String() if newNode.isHardened { @@ -231,7 +233,9 @@ extension HDNode { newNode.depth = self.depth + 1 newNode.publicKey = pubKeyCandidate newNode.childNumber = index - let fprint = RIPEMD160.hash(message: self.publicKey.sha256())[0..<4] + guard let fprint = try? RIPEMD160.hash(message: self.publicKey.sha256())[0..<4] else { + return nil + } newNode.parentFingerprint = fprint var newPath = String() if newNode.isHardened { diff --git a/web3swift/KeystoreManager/BIP32Keystore.swift b/web3swift/KeystoreManager/BIP32Keystore.swift index 4f08e24ca..79a3c3784 100755 --- a/web3swift/KeystoreManager/BIP32Keystore.swift +++ b/web3swift/KeystoreManager/BIP32Keystore.swift @@ -7,7 +7,7 @@ import Foundation import CryptoSwift import Foundation -import EthereumAddress +//import EthereumAddress public class BIP32Keystore: AbstractKeystore { // Protocol diff --git a/web3swift/KeystoreManager/EthereumKeystoreV3.swift b/web3swift/KeystoreManager/EthereumKeystoreV3.swift index 55918fa78..522711ef9 100755 --- a/web3swift/KeystoreManager/EthereumKeystoreV3.swift +++ b/web3swift/KeystoreManager/EthereumKeystoreV3.swift @@ -8,7 +8,7 @@ import Foundation import CryptoSwift import Foundation import secp256k1_swift -import EthereumAddress +//import EthereumAddress public class EthereumKeystoreV3: AbstractKeystore { // Class diff --git a/web3swift/KeystoreManager/IBAN.swift b/web3swift/KeystoreManager/IBAN.swift index 5f4e22f49..500f9560a 100755 --- a/web3swift/KeystoreManager/IBAN.swift +++ b/web3swift/KeystoreManager/IBAN.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public struct ICAP { public var asset: String diff --git a/web3swift/KeystoreManager/KeystoreManager.swift b/web3swift/KeystoreManager/KeystoreManager.swift index 5e9d6873e..617725f58 100755 --- a/web3swift/KeystoreManager/KeystoreManager.swift +++ b/web3swift/KeystoreManager/KeystoreManager.swift @@ -5,7 +5,7 @@ // import Foundation -import EthereumAddress +//import EthereumAddress public class KeystoreManager: AbstractKeystore { public var isHDKeystore: Bool = false diff --git a/web3swift/KeystoreManager/PlainKeystore.swift b/web3swift/KeystoreManager/PlainKeystore.swift index 7a03158af..e59822d11 100755 --- a/web3swift/KeystoreManager/PlainKeystore.swift +++ b/web3swift/KeystoreManager/PlainKeystore.swift @@ -7,7 +7,7 @@ import Foundation import secp256k1_swift -import EthereumAddress +//import EthereumAddress public class PlainKeystore: AbstractKeystore { private var privateKey: Data diff --git a/web3swift/ObjectiveCbridge/Classes/EthereumAddress+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/EthereumAddress+ObjC.swift index 7466cac63..105bd4b62 100755 --- a/web3swift/ObjectiveCbridge/Classes/EthereumAddress+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/EthereumAddress+ObjC.swift @@ -5,7 +5,7 @@ // import Foundation -import EthereumAddress +//import EthereumAddress @objc(EthereumAddress) public final class _ObjCEthereumAddress: NSObject{ diff --git a/web3swift/Promises/Promise+Web3+Eth+GetAccounts.swift b/web3swift/Promises/Promise+Web3+Eth+GetAccounts.swift index 9e01bf580..f8ccd0cd1 100755 --- a/web3swift/Promises/Promise+Web3+Eth+GetAccounts.swift +++ b/web3swift/Promises/Promise+Web3+Eth+GetAccounts.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Eth { public func getAccountsPromise() -> Promise<[EthereumAddress]> { diff --git a/web3swift/Promises/Promise+Web3+Eth+GetBalance.swift b/web3swift/Promises/Promise+Web3+Eth+GetBalance.swift index 92c69512d..5bdb60305 100755 --- a/web3swift/Promises/Promise+Web3+Eth+GetBalance.swift +++ b/web3swift/Promises/Promise+Web3+Eth+GetBalance.swift @@ -7,7 +7,7 @@ import Foundation import PromiseKit import BigInt -import EthereumAddress +//import EthereumAddress extension web3.Eth { public func getBalancePromise(address: EthereumAddress, onBlock: String = "latest") -> Promise { diff --git a/web3swift/Promises/Promise+Web3+Eth+GetTransactionCount.swift b/web3swift/Promises/Promise+Web3+Eth+GetTransactionCount.swift index 593280f03..cbd1f4708 100755 --- a/web3swift/Promises/Promise+Web3+Eth+GetTransactionCount.swift +++ b/web3swift/Promises/Promise+Web3+Eth+GetTransactionCount.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Eth { public func getTransactionCountPromise(address: EthereumAddress, onBlock: String = "latest") -> Promise { diff --git a/web3swift/Promises/Promise+Web3+Personal+CreateAccount.swift b/web3swift/Promises/Promise+Web3+Personal+CreateAccount.swift index bfac4ac73..e5e83d556 100755 --- a/web3swift/Promises/Promise+Web3+Personal+CreateAccount.swift +++ b/web3swift/Promises/Promise+Web3+Personal+CreateAccount.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Personal { public func createAccountPromise(password:String = "web3swift") -> Promise { diff --git a/web3swift/Promises/Promise+Web3+Personal+Sign.swift b/web3swift/Promises/Promise+Web3+Personal+Sign.swift index 582bbd345..bf71b10c1 100755 --- a/web3swift/Promises/Promise+Web3+Personal+Sign.swift +++ b/web3swift/Promises/Promise+Web3+Personal+Sign.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Personal { diff --git a/web3swift/Promises/Promise+Web3+Personal+UnlockAccount.swift b/web3swift/Promises/Promise+Web3+Personal+UnlockAccount.swift index 15f5e8409..62512f6d4 100755 --- a/web3swift/Promises/Promise+Web3+Personal+UnlockAccount.swift +++ b/web3swift/Promises/Promise+Web3+Personal+UnlockAccount.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress extension web3.Personal { public func unlockAccountPromise(account: EthereumAddress, password:String = "web3swift", seconds: UInt64 = 300) -> Promise { diff --git a/Pods/SwiftRLP/Classes/RLP.swift b/web3swift/SwiftRLP/RLP.swift similarity index 86% rename from Pods/SwiftRLP/Classes/RLP.swift rename to web3swift/SwiftRLP/RLP.swift index 86c126dfc..51573ad45 100755 --- a/Pods/SwiftRLP/Classes/RLP.swift +++ b/web3swift/SwiftRLP/RLP.swift @@ -11,7 +11,6 @@ import BigInt //protocol ArrayType {} //extension Array : ArrayType {} - public struct RLP { enum Error: Swift.Error { case encodingError @@ -312,74 +311,10 @@ public struct RLP { } } -fileprivate extension String { - func stripHexPrefix() -> String { - if self.hasPrefix("0x") { - let indexStart = self.index(self.startIndex, offsetBy: 2) - return String(self[indexStart...]) - } - return self - } -} - -fileprivate extension Array where Element == UInt8 { - init(hex: String) { - self = Array() - self.reserveCapacity(hex.unicodeScalars.underestimatedCount) - var buffer: UInt8? - var skip = hex.hasPrefix("0x") ? 2 : 0 - for char in hex.unicodeScalars.lazy { - guard skip == 0 else { - skip -= 1 - continue - } - guard char.value >= 48 && char.value <= 102 else { - removeAll() - return - } - let v: UInt8 - let c: UInt8 = UInt8(char.value) - switch c { - case let c where c <= 57: - v = c - 48 - case let c where c >= 65 && c <= 70: - v = c - 55 - case let c where c >= 97: - v = c - 87 - default: - removeAll() - return - } - if let b = buffer { - append(b << 4 | v) - buffer = nil - } else { - buffer = v - } - } - if let b = buffer { - append(b) - } - } -} - fileprivate extension Data { - static func fromHex(_ hex: String) -> Data? { - let string = hex.lowercased().stripHexPrefix() - let array = Array(hex: string) - if (array.count == 0) { - if (hex == "0x" || hex == "") { - return Data() - } else { - return nil - } - } - return Data(array) - } - var bytes: Array { return Array(self) } - } + diff --git a/web3swift/Tokens/ERC1155/Web3+ERC1155.swift b/web3swift/Tokens/ERC1155/Web3+ERC1155.swift index 5c82ac8b9..2daebddbe 100644 --- a/web3swift/Tokens/ERC1155/Web3+ERC1155.swift +++ b/web3swift/Tokens/ERC1155/Web3+ERC1155.swift @@ -9,7 +9,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //Multi Token Standard protocol IERC1155: IERC165 { diff --git a/web3swift/Tokens/ERC1376/Web3+ERC1376.swift b/web3swift/Tokens/ERC1376/Web3+ERC1376.swift index 868dbb7c3..7e1c6b943 100644 --- a/web3swift/Tokens/ERC1376/Web3+ERC1376.swift +++ b/web3swift/Tokens/ERC1376/Web3+ERC1376.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit public enum IERC1376DelegateMode: UInt { diff --git a/web3swift/Tokens/ERC1400/Web3+ERC1400.swift b/web3swift/Tokens/ERC1400/Web3+ERC1400.swift index 85f442a0a..8db216c47 100644 --- a/web3swift/Tokens/ERC1400/Web3+ERC1400.swift +++ b/web3swift/Tokens/ERC1400/Web3+ERC1400.swift @@ -7,7 +7,7 @@ // import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Security Token Standard diff --git a/web3swift/Tokens/ERC1410/Web3+ERC1410.swift b/web3swift/Tokens/ERC1410/Web3+ERC1410.swift index 9a6ad04d3..836dcdf69 100644 --- a/web3swift/Tokens/ERC1410/Web3+ERC1410.swift +++ b/web3swift/Tokens/ERC1410/Web3+ERC1410.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Partially Fungible Token Standard diff --git a/web3swift/Tokens/ERC1594/Web3+ERC1594.swift b/web3swift/Tokens/ERC1594/Web3+ERC1594.swift index 3590a2de3..7e8b94616 100644 --- a/web3swift/Tokens/ERC1594/Web3+ERC1594.swift +++ b/web3swift/Tokens/ERC1594/Web3+ERC1594.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Core Security Token Standard diff --git a/web3swift/Tokens/ERC1633/Web3+ERC1633.swift b/web3swift/Tokens/ERC1633/Web3+ERC1633.swift index 694821f32..13ccdaf48 100644 --- a/web3swift/Tokens/ERC1633/Web3+ERC1633.swift +++ b/web3swift/Tokens/ERC1633/Web3+ERC1633.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit ///Re-Fungible Token Standard (RFT) diff --git a/web3swift/Tokens/ERC1643/Web3+ERC1643.swift b/web3swift/Tokens/ERC1643/Web3+ERC1643.swift index 231d8b5df..e18bbead8 100644 --- a/web3swift/Tokens/ERC1643/Web3+ERC1643.swift +++ b/web3swift/Tokens/ERC1643/Web3+ERC1643.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Document Management Standard diff --git a/web3swift/Tokens/ERC1644/Web3+ERC1644.swift b/web3swift/Tokens/ERC1644/Web3+ERC1644.swift index a82cc2da7..fffbe6609 100644 --- a/web3swift/Tokens/ERC1644/Web3+ERC1644.swift +++ b/web3swift/Tokens/ERC1644/Web3+ERC1644.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Controller Token Operation Standard diff --git a/web3swift/Tokens/ERC20/Web3+ERC20.swift b/web3swift/Tokens/ERC20/Web3+ERC20.swift index b4116e264..f3000f57b 100644 --- a/web3swift/Tokens/ERC20/Web3+ERC20.swift +++ b/web3swift/Tokens/ERC20/Web3+ERC20.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //Token Standard diff --git a/web3swift/Tokens/ERC721/Web3+ERC721.swift b/web3swift/Tokens/ERC721/Web3+ERC721.swift index 9a2069130..08dba2cd5 100644 --- a/web3swift/Tokens/ERC721/Web3+ERC721.swift +++ b/web3swift/Tokens/ERC721/Web3+ERC721.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //Non-Fungible Token Standard protocol IERC721: IERC165 { diff --git a/web3swift/Tokens/ERC721x/Web3+ERC721x.swift b/web3swift/Tokens/ERC721x/Web3+ERC721x.swift index 31738165f..94e9f5713 100644 --- a/web3swift/Tokens/ERC721x/Web3+ERC721x.swift +++ b/web3swift/Tokens/ERC721x/Web3+ERC721x.swift @@ -9,7 +9,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress ///A Smarter Token for the Future of Crypto Collectibles ///ERC721x is an extension of ERC721 that adds support for multi-fungible tokens and batch transfers, while being fully backward-compatible. diff --git a/web3swift/Tokens/ERC777/Web3+ERC777.swift b/web3swift/Tokens/ERC777/Web3+ERC777.swift index f13d7ce1a..775ff9c15 100644 --- a/web3swift/Tokens/ERC777/Web3+ERC777.swift +++ b/web3swift/Tokens/ERC777/Web3+ERC777.swift @@ -8,7 +8,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //A New Advanced Token Standard protocol IERC777: IERC20, IERC820 { diff --git a/web3swift/Tokens/ERC820/Web3+ERC820.swift b/web3swift/Tokens/ERC820/Web3+ERC820.swift index 4ae4e3cdb..4e805e9a2 100644 --- a/web3swift/Tokens/ERC820/Web3+ERC820.swift +++ b/web3swift/Tokens/ERC820/Web3+ERC820.swift @@ -7,7 +7,7 @@ // import Foundation -import EthereumAddress +//import EthereumAddress //Pseudo-introspection using a registry contract protocol IERC820: IERC165 { diff --git a/web3swift/Tokens/ERC888/Web3+ERC888.swift b/web3swift/Tokens/ERC888/Web3+ERC888.swift index f5201c158..ce98f9b7c 100644 --- a/web3swift/Tokens/ERC888/Web3+ERC888.swift +++ b/web3swift/Tokens/ERC888/Web3+ERC888.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress import PromiseKit //MultiDimensional Token Standard diff --git a/web3swift/Tokens/ST20/Web3+ST20.swift b/web3swift/Tokens/ST20/Web3+ST20.swift index 933dc32db..cc6b77344 100644 --- a/web3swift/Tokens/ST20/Web3+ST20.swift +++ b/web3swift/Tokens/ST20/Web3+ST20.swift @@ -9,7 +9,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //NPolymath Token Standard protocol IST20: IERC20 { diff --git a/web3swift/Tokens/ST20/Web3+SecurityToken.swift b/web3swift/Tokens/ST20/Web3+SecurityToken.swift index 3a60b5ac1..2412616d4 100644 --- a/web3swift/Tokens/ST20/Web3+SecurityToken.swift +++ b/web3swift/Tokens/ST20/Web3+SecurityToken.swift @@ -9,7 +9,7 @@ import Foundation import BigInt import PromiseKit -import EthereumAddress +//import EthereumAddress //The Ownable contract has an owner address, and provides basic authorization control functions, this simplifies the implementation of "user permissions". protocol IOwnable { diff --git a/web3swift/Transaction/BloomFilter.swift b/web3swift/Transaction/BloomFilter.swift index 9a83b0595..0165e4d0e 100755 --- a/web3swift/Transaction/BloomFilter.swift +++ b/web3swift/Transaction/BloomFilter.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import CryptoSwift -import EthereumAddress +//import EthereumAddress public struct EthereumBloomFilter{ public var bytes = Data(repeatElement(UInt8(0), count: 256)) diff --git a/web3swift/Transaction/EthereumTransaction.swift b/web3swift/Transaction/EthereumTransaction.swift index dbe203f8d..8d1ea7f10 100755 --- a/web3swift/Transaction/EthereumTransaction.swift +++ b/web3swift/Transaction/EthereumTransaction.swift @@ -6,9 +6,9 @@ import Foundation import BigInt -import SwiftRLP +//import SwiftRLP import secp256k1_swift -import EthereumAddress +//import EthereumAddress public struct EthereumTransaction: CustomStringConvertible { public var nonce: BigUInt @@ -280,7 +280,7 @@ public struct EthereumTransaction: CustomStringConvertible { } public extension EthereumTransaction { - public init(to: EthereumAddress, data: Data, options: TransactionOptions) { + init(to: EthereumAddress, data: Data, options: TransactionOptions) { let defaults = TransactionOptions.defaultOptions let merged = defaults.merge(options) self.nonce = BigUInt(0) @@ -308,7 +308,7 @@ public extension EthereumTransaction { self.data = data } - public func mergedWithOptions(_ options: TransactionOptions) -> EthereumTransaction { + func mergedWithOptions(_ options: TransactionOptions) -> EthereumTransaction { var tx = self; if let gP = options.gasPrice { diff --git a/web3swift/Transaction/TransactionSigner.swift b/web3swift/Transaction/TransactionSigner.swift index 4b46af649..3d4e90053 100755 --- a/web3swift/Transaction/TransactionSigner.swift +++ b/web3swift/Transaction/TransactionSigner.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import secp256k1_swift -import EthereumAddress +//import EthereumAddress public enum TransactionSignerError: Error { case signatureError(String) diff --git a/web3swift/Utils/EIP/EIP67Code.swift b/web3swift/Utils/EIP/EIP67Code.swift index ff35a1b68..39ad909d8 100755 --- a/web3swift/Utils/EIP/EIP67Code.swift +++ b/web3swift/Utils/EIP/EIP67Code.swift @@ -7,8 +7,8 @@ import Foundation import CoreImage import BigInt -import EthereumAddress -import EthereumABI +//import EthereumAddress +//import EthereumABI extension Web3 { diff --git a/web3swift/Utils/EIP/EIP681.swift b/web3swift/Utils/EIP/EIP681.swift index 24f2b907d..d00e76ba1 100755 --- a/web3swift/Utils/EIP/EIP681.swift +++ b/web3swift/Utils/EIP/EIP681.swift @@ -6,8 +6,8 @@ import Foundation import BigInt -import EthereumAddress -import EthereumABI +//import EthereumAddress +//import EthereumABI extension Web3 { diff --git a/web3swift/Utils/ENS/ENS.swift b/web3swift/Utils/ENS/ENS.swift index d51e17903..a1b35e13a 100755 --- a/web3swift/Utils/ENS/ENS.swift +++ b/web3swift/Utils/ENS/ENS.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public class ENS { diff --git a/web3swift/Utils/ENS/ENSBaseRegistrar.swift b/web3swift/Utils/ENS/ENSBaseRegistrar.swift index f9f651c08..d821c3d15 100644 --- a/web3swift/Utils/ENS/ENSBaseRegistrar.swift +++ b/web3swift/Utils/ENS/ENSBaseRegistrar.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public extension ENS { class BaseRegistrar: ERC721 { diff --git a/web3swift/Utils/ENS/ENSRegistry.swift b/web3swift/Utils/ENS/ENSRegistry.swift index 3a7fac16f..2f14dc413 100644 --- a/web3swift/Utils/ENS/ENSRegistry.swift +++ b/web3swift/Utils/ENS/ENSRegistry.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public extension ENS { class Registry { diff --git a/web3swift/Utils/ENS/ENSResolver.swift b/web3swift/Utils/ENS/ENSResolver.swift index fa011fe0f..5f4c7181c 100755 --- a/web3swift/Utils/ENS/ENSResolver.swift +++ b/web3swift/Utils/ENS/ENSResolver.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public extension ENS { class Resolver { diff --git a/web3swift/Utils/ENS/ENSReverseRegistrar.swift b/web3swift/Utils/ENS/ENSReverseRegistrar.swift index e52ef5d1e..fe6b19784 100644 --- a/web3swift/Utils/ENS/ENSReverseRegistrar.swift +++ b/web3swift/Utils/ENS/ENSReverseRegistrar.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public extension ENS { class ReverseRegistrar { diff --git a/web3swift/Utils/ENS/ETHRegistrarController.swift b/web3swift/Utils/ENS/ETHRegistrarController.swift index 39fd936c0..94c521a94 100644 --- a/web3swift/Utils/ENS/ETHRegistrarController.swift +++ b/web3swift/Utils/ENS/ETHRegistrarController.swift @@ -8,7 +8,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public extension ENS { class ETHRegistrarController { diff --git a/web3swift/Utils/Hooks/NonceMiddleware.swift b/web3swift/Utils/Hooks/NonceMiddleware.swift index e28dc53a4..127f302f6 100755 --- a/web3swift/Utils/Hooks/NonceMiddleware.swift +++ b/web3swift/Utils/Hooks/NonceMiddleware.swift @@ -5,7 +5,7 @@ // import Foundation -import EthereumAddress +//import EthereumAddress import BigInt import PromiseKit diff --git a/web3swift/Web3/Web3+Contract.swift b/web3swift/Web3/Web3+Contract.swift index 52ac7087d..93e49f3a6 100755 --- a/web3swift/Web3/Web3+Contract.swift +++ b/web3swift/Web3/Web3+Contract.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension web3 { diff --git a/web3swift/Web3/Web3+Eth.swift b/web3swift/Web3/Web3+Eth.swift index 25a9deeff..134791c1d 100755 --- a/web3swift/Web3/Web3+Eth.swift +++ b/web3swift/Web3/Web3+Eth.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension web3.Eth { diff --git a/web3swift/Web3/Web3+JSONRPC.swift b/web3swift/Web3/Web3+JSONRPC.swift index 652c03132..283ecbaf6 100755 --- a/web3swift/Web3/Web3+JSONRPC.swift +++ b/web3swift/Web3/Web3+JSONRPC.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress /// Global counter object to enumerate JSON RPC requests. public struct Counter { diff --git a/web3swift/Web3/Web3+MutatingTransaction.swift b/web3swift/Web3/Web3+MutatingTransaction.swift index d52fdb8e8..75bfc87e1 100755 --- a/web3swift/Web3/Web3+MutatingTransaction.swift +++ b/web3swift/Web3/Web3+MutatingTransaction.swift @@ -8,7 +8,7 @@ import Foundation import BigInt import PromiseKit fileprivate typealias PromiseResult = PromiseKit.Result -import EthereumAddress +//import EthereumAddress public class WriteTransaction: ReadTransaction { diff --git a/web3swift/Web3/Web3+Options.swift b/web3swift/Web3/Web3+Options.swift index a0790932a..fd3b4372d 100755 --- a/web3swift/Web3/Web3+Options.swift +++ b/web3swift/Web3/Web3+Options.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress public protocol TransactionOptionsInheritable { var transactionOptions: TransactionOptions {get} diff --git a/web3swift/Web3/Web3+Personal.swift b/web3swift/Web3/Web3+Personal.swift index 0363be491..73029fd14 100755 --- a/web3swift/Web3/Web3+Personal.swift +++ b/web3swift/Web3/Web3+Personal.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress extension web3.Personal { diff --git a/web3swift/Web3/Web3+Protocols.swift b/web3swift/Web3/Web3+Protocols.swift index 885f29ab4..42745d8e9 100755 --- a/web3swift/Web3/Web3+Protocols.swift +++ b/web3swift/Web3/Web3+Protocols.swift @@ -7,7 +7,7 @@ import Foundation import BigInt import class PromiseKit.Promise -import EthereumAddress +//import EthereumAddress /// Protocol for generic Ethereum event parsing results public protocol EventParserResultProtocol { diff --git a/web3swift/Web3/Web3+ReadingTransaction.swift b/web3swift/Web3/Web3+ReadingTransaction.swift index 8e2e52a05..0effcba13 100755 --- a/web3swift/Web3/Web3+ReadingTransaction.swift +++ b/web3swift/Web3/Web3+ReadingTransaction.swift @@ -8,7 +8,7 @@ import Foundation import BigInt import PromiseKit fileprivate typealias PromiseResult = PromiseKit.Result -import EthereumAddress +//import EthereumAddress public class ReadTransaction { public var transaction:EthereumTransaction diff --git a/web3swift/Web3/Web3+Structures.swift b/web3swift/Web3/Web3+Structures.swift index 31ece1c87..32180fbcc 100755 --- a/web3swift/Web3/Web3+Structures.swift +++ b/web3swift/Web3/Web3+Structures.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import EthereumAddress +//import EthereumAddress fileprivate func decodeHexToData(_ container: KeyedDecodingContainer, key: KeyedDecodingContainer.Key, allowOptional:Bool = false) throws -> Data? { if (allowOptional) { diff --git a/web3swift/Web3/Web3+Utils.swift b/web3swift/Web3/Web3+Utils.swift index b88efc294..bf4344ae2 100755 --- a/web3swift/Web3/Web3+Utils.swift +++ b/web3swift/Web3/Web3+Utils.swift @@ -7,9 +7,9 @@ import Foundation import BigInt import CryptoSwift -import SwiftRLP +//import SwiftRLP import secp256k1_swift -import EthereumAddress +//import EthereumAddress public typealias Web3Utils = Web3.Utils diff --git a/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift b/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift index f9d487351..785cd9bcd 100755 --- a/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift +++ b/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift @@ -7,7 +7,7 @@ import XCTest import CryptoSwift import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_EIP67_Tests.swift b/web3swiftTests/web3swift_EIP67_Tests.swift index 8b62cbd30..eebd7c6d5 100755 --- a/web3swiftTests/web3swift_EIP67_Tests.swift +++ b/web3swiftTests/web3swift_EIP67_Tests.swift @@ -7,7 +7,7 @@ import XCTest import CryptoSwift import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_ENS_Tests.swift b/web3swiftTests/web3swift_ENS_Tests.swift index 865b8652a..449da54ef 100755 --- a/web3swiftTests/web3swift_ENS_Tests.swift +++ b/web3swiftTests/web3swift_ENS_Tests.swift @@ -12,7 +12,7 @@ class web3swift_ENS_Tests: XCTestCase { func testDomainNormalization() { let normalizedString = NameHash.normalizeDomainName("example.ens") - print(normalizedString) + print(normalizedString!) } func testNameHash() { @@ -101,7 +101,7 @@ class web3swift_ENS_Tests: XCTestCase { let ens = ENS(web3: web) let domain = "somename.eth" let ttl = try ens?.registry.getTTL(node: domain) - print(ttl) + print(ttl!.description) } catch { XCTFail() } diff --git a/web3swiftTests/web3swift_ERC20_Class_Tests.swift b/web3swiftTests/web3swift_ERC20_Class_Tests.swift index cd7e420e2..93ce6a573 100755 --- a/web3swiftTests/web3swift_ERC20_Class_Tests.swift +++ b/web3swiftTests/web3swift_ERC20_Class_Tests.swift @@ -6,7 +6,7 @@ import XCTest import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_ERC20_Tests.swift b/web3swiftTests/web3swift_ERC20_Tests.swift index 58b4d0b01..d27cbca9a 100755 --- a/web3swiftTests/web3swift_ERC20_Tests.swift +++ b/web3swiftTests/web3swift_ERC20_Tests.swift @@ -6,7 +6,7 @@ import XCTest import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_Eventloop_Tests.swift b/web3swiftTests/web3swift_Eventloop_Tests.swift index d8186af04..baa28c1d0 100755 --- a/web3swiftTests/web3swift_Eventloop_Tests.swift +++ b/web3swiftTests/web3swift_Eventloop_Tests.swift @@ -5,7 +5,7 @@ // import XCTest -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_RLP_Tests.swift b/web3swiftTests/web3swift_RLP_Tests.swift index b72eff7cc..b1da56062 100755 --- a/web3swiftTests/web3swift_RLP_Tests.swift +++ b/web3swiftTests/web3swift_RLP_Tests.swift @@ -14,6 +14,6 @@ class web3swift_RLP_Tests: XCTestCase { func testRLPdecodeTransaction() { let input = Data.fromHex("0xf90890558504e3b292008309153a8080b9083d6060604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550341561004f57600080fd5b60405160208061081d83398101604052808051906020019091905050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100a757600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610725806100f86000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638da5cb5b14610067578063b2b2c008146100bc578063d59ba0df146101eb578063d8ffdcc414610247575b600080fd5b341561007257600080fd5b61007a61029c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100c757600080fd5b61019460048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506102c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156101d75780820151818401526020810190506101bc565b505050509050019250505060405180910390f35b34156101f657600080fd5b61022d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050610601565b604051808215151515815260200191505060405180910390f35b341561025257600080fd5b61025a6106bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6102c96106e5565b6102d16106e5565b6000806000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561032e57600080fd5b8651885114151561033e57600080fd5b875160405180591061034d5750595b9080825280602002602001820160405250935060009250600091505b87518210156105f357600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd87848151811015156103be57fe5b906020019060200201518a858151811015156103d657fe5b906020019060200201518a868151811015156103ee57fe5b906020019060200201516000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156104b857600080fd5b6102c65a03f115156104c957600080fd5b50505060405180519050905080156105e65787828151811015156104e957fe5b90602001906020020151848481518110151561050157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508280600101935050868281518110151561055357fe5b90602001906020020151888381518110151561056b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16878481518110151561059957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f334b3b1d4ad406523ee8e24beb689f5adbe99883a662c37d43275de52389da1460405160405180910390a45b8180600101925050610369565b839450505050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561065e57600080fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6020604051908101604052806000815250905600a165627a7a723058200618093d895b780d4616f24638637da0e0f9767e6d3675a9525fee1d6ed7f431002900000000000000000000000045245bc59219eeaaf6cd3f382e078a461ff9de7b25a0d1efc3c97d1aa9053aa0f59bf148d73f59764343bf3cae576c8769a14866948da0613d0265634fddd436397bc858e2672653833b57a05cfc8b93c14a6c05166e4a")! let transaction = EthereumTransaction.fromRaw(input) - print(transaction) + print(transaction!) } } diff --git a/web3swiftTests/web3swift_ST20AndSecurityToken_Tests.swift b/web3swiftTests/web3swift_ST20AndSecurityToken_Tests.swift index 0557434d4..84334d97f 100644 --- a/web3swiftTests/web3swift_ST20AndSecurityToken_Tests.swift +++ b/web3swiftTests/web3swift_ST20AndSecurityToken_Tests.swift @@ -7,7 +7,7 @@ // import XCTest import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_Tests.swift b/web3swiftTests/web3swift_Tests.swift index a5940136c..ced6c48eb 100755 --- a/web3swiftTests/web3swift_Tests.swift +++ b/web3swiftTests/web3swift_Tests.swift @@ -8,7 +8,7 @@ import XCTest import CryptoSwift import BigInt -import EthereumAddress +//import EthereumAddress import secp256k1_swift @testable import web3swift_iOS @@ -132,11 +132,11 @@ class web3swift_Tests: XCTestCase { XCTAssert(contract != nil) let allMethods = contract!.contract.allMethods let userDeviceCount = try contract!.read("userDeviceCount", parameters: [addr as AnyObject])?.callPromise().wait() - print(userDeviceCount) + print(userDeviceCount!) let totalUsers = try contract!.read("totalUsers", parameters: [])?.callPromise().wait() - print(totalUsers) + print(totalUsers!) let user = try contract!.read("users", parameters: [0 as AnyObject])?.callPromise().wait() - print(user) + print(user!) print(allMethods) } catch { print(error) diff --git a/web3swiftTests/web3swift_User_cases.swift b/web3swiftTests/web3swift_User_cases.swift index 45d06bfa3..4326782d3 100755 --- a/web3swiftTests/web3swift_User_cases.swift +++ b/web3swiftTests/web3swift_User_cases.swift @@ -6,7 +6,7 @@ import XCTest import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS @@ -30,7 +30,7 @@ class web3swift_User_cases: XCTestCase { readTransaction.transactionOptions.from = EthereumAddress("0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d") let response = try readTransaction.callPromise().wait() let balance = response["0"] as? BigUInt - print(balance) + print(balance!.description) } func testUserCase2() { diff --git a/web3swiftTests/web3swift_Websockets_Tests.swift b/web3swiftTests/web3swift_Websockets_Tests.swift index 129bb6411..86fdc3adb 100644 --- a/web3swiftTests/web3swift_Websockets_Tests.swift +++ b/web3swiftTests/web3swift_Websockets_Tests.swift @@ -26,7 +26,7 @@ class SpyDelegate: Web3SocketDelegate { return } - print(message as? String) + print(message as! String) expectation.fulfill() } diff --git a/web3swiftTests/web3swift_infura_Tests.swift b/web3swiftTests/web3swift_infura_Tests.swift index 468780684..3f2ef9df4 100755 --- a/web3swiftTests/web3swift_infura_Tests.swift +++ b/web3swiftTests/web3swift_infura_Tests.swift @@ -5,7 +5,7 @@ // import XCTest -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_keystores_Tests.swift b/web3swiftTests/web3swift_keystores_Tests.swift index 0c5c9c098..a111626e2 100755 --- a/web3swiftTests/web3swift_keystores_Tests.swift +++ b/web3swiftTests/web3swift_keystores_Tests.swift @@ -151,10 +151,10 @@ class web3swift_Keystores_tests: XCTestCase { let recreatedStore = BIP32Keystore.init(data!) XCTAssert(keystore?.addresses?.count == recreatedStore?.addresses?.count) XCTAssert(keystore?.rootPrefix == recreatedStore?.rootPrefix) - print(keystore?.addresses![0]) - print(keystore?.addresses![1]) - print(recreatedStore?.addresses![0]) - print(recreatedStore?.addresses![1]) + print(keystore!.addresses![0].address) + print(keystore!.addresses![1].address) + print(recreatedStore!.addresses![0].address) + print(recreatedStore!.addresses![1].address) // This will fail. It wont fail if use scrypt from pod 'scrypt', '2.0', not from CryptoSwift XCTAssert(keystore?.addresses![0] == recreatedStore?.addresses![0]) XCTAssert(keystore?.addresses![1] == recreatedStore?.addresses![1]) @@ -169,7 +169,7 @@ class web3swift_Keystores_tests: XCTestCase { func testRIPEMD() { let data = "message digest".data(using: .ascii) - let hash = RIPEMD160.hash(message: data!) + let hash = try! RIPEMD160.hash(message: data!) XCTAssert(hash.toHexString() == "5d0689ef49d2fae572b881b123a85ffa21595f36") } diff --git a/web3swiftTests/web3swift_promises_Tests.swift b/web3swiftTests/web3swift_promises_Tests.swift index 9eb75a64f..9ed62bdf3 100755 --- a/web3swiftTests/web3swift_promises_Tests.swift +++ b/web3swiftTests/web3swift_promises_Tests.swift @@ -7,7 +7,7 @@ import XCTest import PromiseKit import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_remoteParsing_Tests.swift b/web3swiftTests/web3swift_remoteParsing_Tests.swift index 637106d39..f576d6483 100755 --- a/web3swiftTests/web3swift_remoteParsing_Tests.swift +++ b/web3swiftTests/web3swift_remoteParsing_Tests.swift @@ -7,7 +7,7 @@ import XCTest import CryptoSwift import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift b/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift index e404ceba8..455f878c7 100755 --- a/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift +++ b/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift @@ -8,7 +8,7 @@ import XCTest import CryptoSwift import BigInt import secp256k1_swift -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_transactions_Tests.swift b/web3swiftTests/web3swift_transactions_Tests.swift index 9a6d3afac..6bc543f83 100755 --- a/web3swiftTests/web3swift_transactions_Tests.swift +++ b/web3swiftTests/web3swift_transactions_Tests.swift @@ -7,7 +7,7 @@ import XCTest import CryptoSwift import BigInt -import EthereumAddress +//import EthereumAddress @testable import web3swift_iOS @@ -89,6 +89,6 @@ class web3swift_transactions_Tests: XCTestCase { let keystore = try! EthereumKeystoreV3.init(password: "web3swift") let dump = try! keystore!.serialize() let jsonString = String.init(data: dump!, encoding: .ascii) - print(jsonString) + print(jsonString!) } } From 06d5499f34b510aef1cfabe9e67ed33c0754f0f4 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Wed, 24 Apr 2019 13:07:00 +0300 Subject: [PATCH 17/19] raised v --- web3swift.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web3swift.podspec b/web3swift.podspec index c7902d26c..09166ec2d 100755 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -17,7 +17,7 @@ s.swift_version = '5.0' s.module_name = 'Web3swift' s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.11" -s.source_files = "web3swift/{Promises,Web3,Contract,KeystoreManager,Transaction,Convenience,HookedFunctions}/*.{h,swift}", "web3swift/Utils/**/*.swift" "web3swift/PrecompiledContracts/**/*.swift", "web3swift/web3swift.h" +s.source_files = "web3swift/{Promises,Web3,Contract,KeystoreManager,Transaction,Convenience,HookedFunctions,SwiftRLP,EthereumAddress,EthereumABI}/*.{h,swift}", "web3swift/Utils/**/*.swift" "web3swift/PrecompiledContracts/**/*.swift", "web3swift/web3swift.h" s.public_header_files = "web3swift/web3swift.h" s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } From 4646cf56f98b340652bc93e901fbfe82c9aad75f Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Wed, 24 Apr 2019 13:18:45 +0300 Subject: [PATCH 18/19] try 1 --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index d0940bea2..ec4594e7e 100755 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,9 @@ language: objective-c -osx_image: xcode10 -xcode_project: web3swift.xcworkspace # path to your xcodeproj folder +osx_image: xcode10.2 +cache: bundler +xcode_project: web3swift.xcworkspace xcode_scheme: web3swift-iOS -xcode_destination: platform=iOS Simulator, OS=12.0, name=iPhone X +xcode_destination: platform=iOS Simulator, OS=12.2, name=iPhone X before_install: - gem install cocoapods --pre --no-rdoc --no-ri --no-document --quiet - pod install --repo-update From dd5613ca51e5f899e272b734063093f6fade1681 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Wed, 24 Apr 2019 13:21:36 +0300 Subject: [PATCH 19/19] try 2 --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ec4594e7e..57843fe36 100755 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,11 @@ -language: objective-c +language: swift osx_image: xcode10.2 cache: bundler xcode_project: web3swift.xcworkspace xcode_scheme: web3swift-iOS xcode_destination: platform=iOS Simulator, OS=12.2, name=iPhone X before_install: - - gem install cocoapods --pre --no-rdoc --no-ri --no-document --quiet + - gem install cocoapods --pre - pod install --repo-update script: - xcodebuild -scheme web3swift-iOS -workspace web3swift.xcworkspace -sdk iphonesimulator build test