From 56b6adec689561139d7e9b2d7a42c12217b2850c Mon Sep 17 00:00:00 2001 From: efyang Date: Sun, 22 Oct 2017 20:58:06 -0500 Subject: [PATCH 001/132] Iterate over both buffered and unbuffered database entries --- Cargo.lock | 7 +++++++ util/kvdb-rocksdb/Cargo.toml | 1 + util/kvdb-rocksdb/src/lib.rs | 20 +++++++++++++++----- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 935389755..5e5ea3ae3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1218,6 +1218,11 @@ name = "integer-encoding" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "interleaved-ordered" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "iovec" version = "0.1.0" @@ -1402,6 +1407,7 @@ version = "0.1.0" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-bigint 0.1.3", + "interleaved-ordered 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3609,6 +3615,7 @@ dependencies = [ "checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d" "checksum igd 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "356a0dc23a4fa0f8ce4777258085d00a01ea4923b2efd93538fc44bf5e1bda76" "checksum integer-encoding 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a053c9c7dcb7db1f2aa012c37dc176c62e4cdf14898dee0eecc606de835b8acb" +"checksum interleaved-ordered 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6e385d0f35662722ffac6301494e37d201e884bd27d263cfbcc058febf994d16" "checksum iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29d062ee61fccdf25be172e70f34c9f6efc597e1fb8f6526e8437b2046ab26be" "checksum ipnetwork 0.12.7 (registry+https://github.com/rust-lang/crates.io-index)" = "2134e210e2a024b5684f90e1556d5f71a1ce7f8b12e9ac9924c67fb36f63b336" "checksum isatty 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fa500db770a99afe2a0f2229be2a3d09c7ed9d7e4e8440bf71253141994e240f" diff --git a/util/kvdb-rocksdb/Cargo.toml b/util/kvdb-rocksdb/Cargo.toml index e055c853e..f2eb569dc 100644 --- a/util/kvdb-rocksdb/Cargo.toml +++ b/util/kvdb-rocksdb/Cargo.toml @@ -12,6 +12,7 @@ parking_lot = "0.4" regex = "0.2" rlp = { path = "../rlp" } rocksdb = { git = "https://github.com/paritytech/rust-rocksdb" } +interleaved-ordered = "0.1.0" [dev-dependencies] tempdir = "0.3" diff --git a/util/kvdb-rocksdb/src/lib.rs b/util/kvdb-rocksdb/src/lib.rs index d08c8ec85..69b8164d6 100644 --- a/util/kvdb-rocksdb/src/lib.rs +++ b/util/kvdb-rocksdb/src/lib.rs @@ -21,6 +21,7 @@ extern crate elastic_array; extern crate parking_lot; extern crate regex; extern crate rocksdb; +extern crate interleaved_ordered; extern crate ethcore_bigint as bigint; extern crate kvdb; @@ -36,6 +37,7 @@ use rocksdb::{ DB, Writable, WriteBatch, WriteOptions, IteratorMode, DBIterator, Options, DBCompactionStyle, BlockBasedOptions, Direction, Cache, Column, ReadOptions }; +use interleaved_ordered::{interleave_ordered, InterleaveOrdered}; use elastic_array::ElasticArray32; use rlp::{UntrustedRlp, RlpType, Compressible}; @@ -197,14 +199,14 @@ impl Default for DatabaseConfig { // inner DB (to prevent closing via restoration) may be re-evaluated in the future. // pub struct DatabaseIterator<'a> { - iter: DBIterator, + iter: InterleaveOrdered<::std::vec::IntoIter<(Box<[u8]>, Box<[u8]>)>, DBIterator>, _marker: PhantomData<&'a Database>, } impl<'a> Iterator for DatabaseIterator<'a> { type Item = (Box<[u8]>, Box<[u8]>); - fn next(&mut self) -> Option { + fn next(&mut self) -> Option { self.iter.next() } } @@ -510,9 +512,17 @@ impl Database { /// Get database iterator for flushed data. pub fn iter(&self, col: Option) -> Option { - //TODO: iterate over overlay match *self.db.read() { Some(DBAndColumns { ref db, ref cfs }) => { + let overlay = &self.overlay.read()[Self::to_overlay_column(col)]; + let overlay_data = overlay.iter() + .filter_map(|(k, v)| match v { + &KeyState::Insert(ref value) | + &KeyState::InsertCompressed(ref value) => + Some((k.clone().into_vec().into_boxed_slice(), value.clone().into_vec().into_boxed_slice())), + &KeyState::Delete => None, + }).collect::>(); + let iter = col.map_or_else( || db.iterator_opt(IteratorMode::Start, &self.read_opts), |c| db.iterator_cf_opt(cfs[c as usize], IteratorMode::Start, &self.read_opts) @@ -520,7 +530,7 @@ impl Database { ); Some(DatabaseIterator { - iter: iter, + iter: interleave_ordered(overlay_data, iter), _marker: PhantomData, }) }, @@ -536,7 +546,7 @@ impl Database { .expect("iterator params are valid; qed")); Some(DatabaseIterator { - iter: iter, + iter: interleave_ordered(Vec::new(), iter), _marker: PhantomData, }) }, From 4ba258722619e00a9baa93bdf3b3720ccd547bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Mon, 23 Oct 2017 14:46:36 +0200 Subject: [PATCH 002/132] Fix serialization of non-localized transactions. --- ethcore/src/transaction.rs | 5 +++++ rpc/src/v1/helpers/light_fetch.rs | 23 +++++++++++++++++------ rpc/src/v1/tests/mocked/eth.rs | 4 ++-- rpc/src/v1/tests/mocked/parity_set.rs | 2 +- rpc/src/v1/tests/mocked/signer.rs | 2 +- rpc/src/v1/tests/mocked/signing.rs | 2 +- rpc/src/v1/types/transaction.rs | 2 +- 7 files changed, 28 insertions(+), 12 deletions(-) diff --git a/ethcore/src/transaction.rs b/ethcore/src/transaction.rs index 02f77d5f3..3596f6c21 100644 --- a/ethcore/src/transaction.rs +++ b/ethcore/src/transaction.rs @@ -469,6 +469,11 @@ impl SignedTransaction { pub fn is_unsigned(&self) -> bool { self.transaction.is_unsigned() } + + /// Deconstructs this transaction back into `UnverifiedTransaction` + pub fn deconstruct(self) -> (UnverifiedTransaction, Address, Option) { + (self.transaction, self.sender, self.public) + } } /// Signed Transaction that is a part of canon blockchain. diff --git a/rpc/src/v1/helpers/light_fetch.rs b/rpc/src/v1/helpers/light_fetch.rs index ac5902b51..2544f66b0 100644 --- a/rpc/src/v1/helpers/light_fetch.rs +++ b/rpc/src/v1/helpers/light_fetch.rs @@ -23,7 +23,7 @@ use ethcore::encoded; use ethcore::executed::{Executed, ExecutionError}; use ethcore::ids::BlockId; use ethcore::filter::Filter as EthcoreFilter; -use ethcore::transaction::{Action, Transaction as EthTransaction, SignedTransaction}; +use ethcore::transaction::{Action, Transaction as EthTransaction, SignedTransaction, LocalizedTransaction}; use ethcore::receipt::Receipt; use jsonrpc_core::{BoxFuture, Error}; @@ -65,13 +65,24 @@ pub struct LightFetch { /// Extract a transaction at given index. pub fn extract_transaction_at_index(block: encoded::Block, index: usize, eip86_transition: u64) -> Option { block.transactions().into_iter().nth(index) + // Verify if transaction signature is correct. .and_then(|tx| SignedTransaction::new(tx).ok()) - .map(|tx| Transaction::from_signed(tx, block.number(), eip86_transition)) - .map(|mut tx| { - tx.block_hash = Some(block.hash().into()); - tx.transaction_index = Some(index.into()); - tx + .map(|signed_tx| { + let (signed, sender, _) = signed_tx.deconstruct(); + let block_hash = block.hash(); + let block_number = block.number(); + let transaction_index = index; + let cached_sender = Some(sender); + + LocalizedTransaction { + signed, + block_number, + block_hash, + transaction_index, + cached_sender, + } }) + .map(|tx| Transaction::from_localized(tx, eip86_transition)) } diff --git a/rpc/src/v1/tests/mocked/eth.rs b/rpc/src/v1/tests/mocked/eth.rs index 337ef9513..9969ee286 100644 --- a/rpc/src/v1/tests/mocked/eth.rs +++ b/rpc/src/v1/tests/mocked/eth.rs @@ -547,7 +547,7 @@ fn rpc_eth_pending_transaction_by_hash() { tester.miner.pending_transactions.lock().insert(H256::zero(), tx); } - let response = r#"{"jsonrpc":"2.0","result":{"blockHash":null,"blockNumber":"0x0","chainId":null,"condition":null,"creates":null,"from":"0x0f65fe9276bc9a24ae7083ae28e2660ef72df99e","gas":"0x5208","gasPrice":"0x1","hash":"0x41df922fd0d4766fcc02e161f8295ec28522f329ae487f14d811e4b64c8d6e31","input":"0x","nonce":"0x0","publicKey":"0x7ae46da747962c2ee46825839c1ef9298e3bd2e70ca2938495c3693a485ec3eaa8f196327881090ff64cf4fbb0a48485d4f83098e189ed3b7a87d5941b59f789","r":"0x48b55bfa915ac795c431978d8a6a992b628d557da5ff759b307d495a36649353","raw":"0xf85f800182520894095e7baea6a6c7c4c2dfeb977efac326af552d870a801ba048b55bfa915ac795c431978d8a6a992b628d557da5ff759b307d495a36649353a0efffd310ac743f371de3b9f7f9cb56c0b28ad43601b4ab949f53faa07bd2c804","s":"0xefffd310ac743f371de3b9f7f9cb56c0b28ad43601b4ab949f53faa07bd2c804","standardV":"0x0","to":"0x095e7baea6a6c7c4c2dfeb977efac326af552d87","transactionIndex":null,"v":"0x1b","value":"0xa"},"id":1}"#; + let response = r#"{"jsonrpc":"2.0","result":{"blockHash":null,"blockNumber":null,"chainId":null,"condition":null,"creates":null,"from":"0x0f65fe9276bc9a24ae7083ae28e2660ef72df99e","gas":"0x5208","gasPrice":"0x1","hash":"0x41df922fd0d4766fcc02e161f8295ec28522f329ae487f14d811e4b64c8d6e31","input":"0x","nonce":"0x0","publicKey":"0x7ae46da747962c2ee46825839c1ef9298e3bd2e70ca2938495c3693a485ec3eaa8f196327881090ff64cf4fbb0a48485d4f83098e189ed3b7a87d5941b59f789","r":"0x48b55bfa915ac795c431978d8a6a992b628d557da5ff759b307d495a36649353","raw":"0xf85f800182520894095e7baea6a6c7c4c2dfeb977efac326af552d870a801ba048b55bfa915ac795c431978d8a6a992b628d557da5ff759b307d495a36649353a0efffd310ac743f371de3b9f7f9cb56c0b28ad43601b4ab949f53faa07bd2c804","s":"0xefffd310ac743f371de3b9f7f9cb56c0b28ad43601b4ab949f53faa07bd2c804","standardV":"0x0","to":"0x095e7baea6a6c7c4c2dfeb977efac326af552d87","transactionIndex":null,"v":"0x1b","value":"0xa"},"id":1}"#; let request = r#"{ "jsonrpc": "2.0", "method": "eth_getTransactionByHash", @@ -863,7 +863,7 @@ fn rpc_eth_sign_transaction() { let response = r#"{"jsonrpc":"2.0","result":{"#.to_owned() + r#""raw":"0x"# + &rlp.to_hex() + r#"","# + r#""tx":{"# + - r#""blockHash":null,"blockNumber":"0x0","# + + r#""blockHash":null,"blockNumber":null,"# + &format!("\"chainId\":{},", t.chain_id().map_or("null".to_owned(), |n| format!("{}", n))) + r#""condition":null,"creates":null,"# + &format!("\"from\":\"0x{:?}\",", &address) + diff --git a/rpc/src/v1/tests/mocked/parity_set.rs b/rpc/src/v1/tests/mocked/parity_set.rs index 1653a1908..ed27862ac 100644 --- a/rpc/src/v1/tests/mocked/parity_set.rs +++ b/rpc/src/v1/tests/mocked/parity_set.rs @@ -234,7 +234,7 @@ fn rpc_parity_remove_transaction() { let hash = signed.hash(); let request = r#"{"jsonrpc": "2.0", "method": "parity_removeTransaction", "params":[""#.to_owned() + &format!("0x{:?}", hash) + r#""], "id": 1}"#; - let response = r#"{"jsonrpc":"2.0","result":{"blockHash":null,"blockNumber":"0x0","chainId":null,"condition":null,"creates":null,"from":"0x0000000000000000000000000000000000000002","gas":"0x76c0","gasPrice":"0x9184e72a000","hash":"0xa2e0da8a8064e0b9f93e95a53c2db6d01280efb8ac72a708d25487e67dd0f8fc","input":"0x","nonce":"0x1","publicKey":null,"r":"0x1","raw":"0xe9018609184e72a0008276c0940000000000000000000000000000000000000005849184e72a80800101","s":"0x1","standardV":"0x4","to":"0x0000000000000000000000000000000000000005","transactionIndex":null,"v":"0x0","value":"0x9184e72a"},"id":1}"#; + let response = r#"{"jsonrpc":"2.0","result":{"blockHash":null,"blockNumber":null,"chainId":null,"condition":null,"creates":null,"from":"0x0000000000000000000000000000000000000002","gas":"0x76c0","gasPrice":"0x9184e72a000","hash":"0xa2e0da8a8064e0b9f93e95a53c2db6d01280efb8ac72a708d25487e67dd0f8fc","input":"0x","nonce":"0x1","publicKey":null,"r":"0x1","raw":"0xe9018609184e72a0008276c0940000000000000000000000000000000000000005849184e72a80800101","s":"0x1","standardV":"0x4","to":"0x0000000000000000000000000000000000000005","transactionIndex":null,"v":"0x0","value":"0x9184e72a"},"id":1}"#; miner.pending_transactions.lock().insert(hash, signed); assert_eq!(io.handle_request_sync(&request), Some(response.to_owned())); diff --git a/rpc/src/v1/tests/mocked/signer.rs b/rpc/src/v1/tests/mocked/signer.rs index 0211b5f24..3399cd741 100644 --- a/rpc/src/v1/tests/mocked/signer.rs +++ b/rpc/src/v1/tests/mocked/signer.rs @@ -456,7 +456,7 @@ fn should_confirm_sign_transaction_with_rlp() { let response = r#"{"jsonrpc":"2.0","result":{"#.to_owned() + r#""raw":"0x"# + &rlp.to_hex() + r#"","# + r#""tx":{"# + - r#""blockHash":null,"blockNumber":"0x0","# + + r#""blockHash":null,"blockNumber":null,"# + &format!("\"chainId\":{},", t.chain_id().map_or("null".to_owned(), |n| format!("{}", n))) + r#""condition":null,"creates":null,"# + &format!("\"from\":\"0x{:?}\",", &address) + diff --git a/rpc/src/v1/tests/mocked/signing.rs b/rpc/src/v1/tests/mocked/signing.rs index 41c8ec7a0..05199e696 100644 --- a/rpc/src/v1/tests/mocked/signing.rs +++ b/rpc/src/v1/tests/mocked/signing.rs @@ -307,7 +307,7 @@ fn should_add_sign_transaction_to_the_queue() { let response = r#"{"jsonrpc":"2.0","result":{"#.to_owned() + r#""raw":"0x"# + &rlp.to_hex() + r#"","# + r#""tx":{"# + - r#""blockHash":null,"blockNumber":"0x0","# + + r#""blockHash":null,"blockNumber":null,"# + &format!("\"chainId\":{},", t.chain_id().map_or("null".to_owned(), |n| format!("{}", n))) + r#""condition":null,"creates":null,"# + &format!("\"from\":\"0x{:?}\",", &address) + diff --git a/rpc/src/v1/types/transaction.rs b/rpc/src/v1/types/transaction.rs index 570c21120..90d512c86 100644 --- a/rpc/src/v1/types/transaction.rs +++ b/rpc/src/v1/types/transaction.rs @@ -213,7 +213,7 @@ impl Transaction { hash: t.hash().into(), nonce: t.nonce.into(), block_hash: None, - block_number: Some(block_number.into()), + block_number: None, transaction_index: None, from: t.sender().into(), to: match t.action { From 42e23a963300bd101a172b54c23d3c2bdee54432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Mon, 23 Oct 2017 16:45:06 +0200 Subject: [PATCH 003/132] Return proper SignedTransactions representation. --- rpc/src/v1/helpers/dispatch.rs | 27 ++++++++++++++++++++------- rpc/src/v1/impls/signer.rs | 7 ++++--- rpc/src/v1/tests/mocked/signing.rs | 6 ++++-- rpc/src/v1/types/transaction.rs | 9 ++++----- 4 files changed, 32 insertions(+), 17 deletions(-) diff --git a/rpc/src/v1/helpers/dispatch.rs b/rpc/src/v1/helpers/dispatch.rs index 0da257035..d84bd6cad 100644 --- a/rpc/src/v1/helpers/dispatch.rs +++ b/rpc/src/v1/helpers/dispatch.rs @@ -71,6 +71,9 @@ pub trait Dispatcher: Send + Sync + Clone { fn sign(&self, accounts: Arc, filled: FilledTransactionRequest, password: SignWith) -> BoxFuture, Error>; + /// Converts a `SignedTransaction` into `RichRawTransaction` + fn enrich(&self, SignedTransaction) -> RpcRichRawTransaction; + /// "Dispatch" a local transaction. fn dispatch_transaction(&self, signed_transaction: PendingTransaction) -> Result; } @@ -163,6 +166,11 @@ impl Dispatcher for FullDispatcher RpcRichRawTransaction { + let block_number = self.client.best_block_header().number(); + RpcRichRawTransaction::from_signed(signed_transaction, block_number, self.client.eip86_transition()) + } + fn dispatch_transaction(&self, signed_transaction: PendingTransaction) -> Result { let hash = signed_transaction.transaction.hash(); @@ -261,11 +269,11 @@ impl LightDispatcher { transaction_queue: Arc>, ) -> Self { LightDispatcher { - sync: sync, - client: client, - on_demand: on_demand, - cache: cache, - transaction_queue: transaction_queue, + sync, + client, + on_demand, + cache, + transaction_queue, } } @@ -399,6 +407,11 @@ impl Dispatcher for LightDispatcher { .and_then(move |nonce| with_nonce(filled, nonce))) } + fn enrich(&self, signed_transaction: SignedTransaction) -> RpcRichRawTransaction { + let block_number = self.client.best_block_header().number(); + RpcRichRawTransaction::from_signed(signed_transaction, block_number, self.client.eip86_transition()) + } + fn dispatch_transaction(&self, signed_transaction: PendingTransaction) -> Result { let hash = signed_transaction.transaction.hash(); @@ -510,8 +523,8 @@ pub fn execute( }, ConfirmationPayload::SignTransaction(request) => { Box::new(dispatcher.sign(accounts, request, pass) - .map(|result| result - .map(RpcRichRawTransaction::from) + .map(move |result| result + .map(move |tx| dispatcher.enrich(tx)) .map(ConfirmationResponse::SignTransaction) )) }, diff --git a/rpc/src/v1/impls/signer.rs b/rpc/src/v1/impls/signer.rs index c864134fb..cecd1f2db 100644 --- a/rpc/src/v1/impls/signer.rs +++ b/rpc/src/v1/impls/signer.rs @@ -73,8 +73,8 @@ impl SignerClient { SignerClient { signer: signer.clone(), accounts: store.clone(), - dispatcher: dispatcher, - subscribers: subscribers, + dispatcher, + subscribers, } } @@ -205,7 +205,8 @@ impl Signer for SignerClient { }, ConfirmationPayload::SignTransaction(request) => { Self::verify_transaction(bytes, request, |pending_transaction| { - Ok(ConfirmationResponse::SignTransaction(pending_transaction.transaction.into())) + let rich = self.dispatcher.enrich(pending_transaction.transaction); + Ok(ConfirmationResponse::SignTransaction(rich)) }) }, ConfirmationPayload::EthSignMessage(address, data) => { diff --git a/rpc/src/v1/tests/mocked/signing.rs b/rpc/src/v1/tests/mocked/signing.rs index 05199e696..dbe5534ca 100644 --- a/rpc/src/v1/tests/mocked/signing.rs +++ b/rpc/src/v1/tests/mocked/signing.rs @@ -26,7 +26,7 @@ use v1::impls::SigningQueueClient; use v1::metadata::Metadata; use v1::traits::{EthSigning, ParitySigning, Parity}; use v1::helpers::{SignerService, SigningQueue, FullDispatcher}; -use v1::types::ConfirmationResponse; +use v1::types::{ConfirmationResponse, RichRawTransaction}; use v1::tests::helpers::TestMinerService; use v1::tests::mocked::parity; @@ -334,7 +334,9 @@ fn should_add_sign_transaction_to_the_queue() { ::std::thread::spawn(move || loop { if signer.requests().len() == 1 { // respond - signer.request_confirmed(1.into(), Ok(ConfirmationResponse::SignTransaction(t.into()))); + signer.request_confirmed(1.into(), Ok(ConfirmationResponse::SignTransaction( + RichRawTransaction::from_signed(t.into(), 0x0, u64::max_value()) + ))); break } ::std::thread::sleep(Duration::from_millis(100)) diff --git a/rpc/src/v1/types/transaction.rs b/rpc/src/v1/types/transaction.rs index 90d512c86..dbd326488 100644 --- a/rpc/src/v1/types/transaction.rs +++ b/rpc/src/v1/types/transaction.rs @@ -158,11 +158,10 @@ pub struct RichRawTransaction { pub transaction: Transaction } - -impl From for RichRawTransaction { - fn from(t: SignedTransaction) -> Self { - // TODO: change transition to 0 when EIP-86 is commonly used. - let tx: Transaction = Transaction::from_signed(t, 0, u64::max_value()); +impl RichRawTransaction { + /// Creates new `RichRawTransaction` from `SignedTransaction`. + pub fn from_signed(tx: SignedTransaction, block_number: u64, eip86_transition: u64) -> Self { + let tx = Transaction::from_signed(tx, block_number, eip86_transition); RichRawTransaction { raw: tx.raw.clone(), transaction: tx, From 965dff3d3218180aa62d034bd31f93e0827b562a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 24 Oct 2017 07:09:48 +0200 Subject: [PATCH 004/132] light: get local transactions by hash --- ethcore/light/src/transaction_queue.rs | 5 +++++ rpc/src/v1/impls/light/eth.rs | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ethcore/light/src/transaction_queue.rs b/ethcore/light/src/transaction_queue.rs index 090919245..7f67c3718 100644 --- a/ethcore/light/src/transaction_queue.rs +++ b/ethcore/light/src/transaction_queue.rs @@ -321,6 +321,11 @@ impl TransactionQueue { self.by_hash.remove(&hash); } } + + /// Get a transaction by hash. + pub fn get(&self, hash: &H256) -> Option<&PendingTransaction> { + self.by_hash.get(&hash) + } } #[cfg(test)] diff --git a/rpc/src/v1/impls/light/eth.rs b/rpc/src/v1/impls/light/eth.rs index b797e76c2..d498c6ccd 100644 --- a/rpc/src/v1/impls/light/eth.rs +++ b/rpc/src/v1/impls/light/eth.rs @@ -392,8 +392,21 @@ impl Eth for EthClient { } fn transaction_by_hash(&self, hash: RpcH256) -> BoxFuture, Error> { + let hash = hash.into(); let eip86 = self.client.eip86_transition(); - Box::new(self.fetcher().transaction_by_hash(hash.into(), eip86).map(|x| x.map(|(tx, _)| tx))) + + { + let tx_queue = self.transaction_queue.read(); + if let Some(tx) = tx_queue.get(&hash) { + return Box::new(future::ok(Some(Transaction::from_pending( + tx.clone(), + self.client.chain_info().best_block_number, + eip86, + )))); + } + } + + Box::new(self.fetcher().transaction_by_hash(hash, eip86).map(|x| x.map(|(tx, _)| tx))) } fn transaction_by_block_hash_and_index(&self, hash: RpcH256, idx: Index) -> BoxFuture, Error> { From dd13526f6c2dfb8a4fe9280fce7de7a2ea336875 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 24 Oct 2017 08:40:53 +0200 Subject: [PATCH 005/132] warn when blacklisted account present in store --- ethcore/src/account_provider/mod.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ethcore/src/account_provider/mod.rs b/ethcore/src/account_provider/mod.rs index 3e1d1058c..4bc69ae54 100755 --- a/ethcore/src/account_provider/mod.rs +++ b/ethcore/src/account_provider/mod.rs @@ -178,6 +178,13 @@ impl AccountProvider { } } + if let Ok(accounts) = sstore.accounts() { + for account in accounts.into_iter().filter(|a| settings.blacklisted_accounts.contains(&a.address)) { + warn!("Local Account {} has a blacklisted (known to be weak) address and will be ignored", + account.address); + } + } + // Remove blacklisted accounts from address book. let mut address_book = AddressBook::new(&sstore.local_path()); for addr in &settings.blacklisted_accounts { From 9b4db8b4f0e2e66df76e6284e828431413cf467b Mon Sep 17 00:00:00 2001 From: efyang Date: Sat, 28 Oct 2017 16:59:00 -0500 Subject: [PATCH 006/132] Fix iterator issues --- util/kvdb-rocksdb/src/lib.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/util/kvdb-rocksdb/src/lib.rs b/util/kvdb-rocksdb/src/lib.rs index 69b8164d6..cae3b6be4 100644 --- a/util/kvdb-rocksdb/src/lib.rs +++ b/util/kvdb-rocksdb/src/lib.rs @@ -515,13 +515,14 @@ impl Database { match *self.db.read() { Some(DBAndColumns { ref db, ref cfs }) => { let overlay = &self.overlay.read()[Self::to_overlay_column(col)]; - let overlay_data = overlay.iter() - .filter_map(|(k, v)| match v { - &KeyState::Insert(ref value) | - &KeyState::InsertCompressed(ref value) => + let mut overlay_data = overlay.iter() + .filter_map(|(k, v)| match *v { + KeyState::Insert(ref value) | + KeyState::InsertCompressed(ref value) => Some((k.clone().into_vec().into_boxed_slice(), value.clone().into_vec().into_boxed_slice())), - &KeyState::Delete => None, + KeyState::Delete => None, }).collect::>(); + overlay_data.sort(); let iter = col.map_or_else( || db.iterator_opt(IteratorMode::Start, &self.read_opts), From bed82e5cc023308417afa4ed8a6f3653dcdec491 Mon Sep 17 00:00:00 2001 From: NikVolf Date: Sun, 5 Nov 2017 18:54:35 +0300 Subject: [PATCH 007/132] elog (events) for wasm runtime --- ethcore/res/wasm-tests | 2 +- ethcore/wasm/src/env.rs | 5 ++++ ethcore/wasm/src/runtime.rs | 59 +++++++++++++++++++++++++++++++++++++ ethcore/wasm/src/tests.rs | 36 +++++++++++++++++++++- 4 files changed, 100 insertions(+), 2 deletions(-) diff --git a/ethcore/res/wasm-tests b/ethcore/res/wasm-tests index c8129ce2f..94b7877b5 160000 --- a/ethcore/res/wasm-tests +++ b/ethcore/res/wasm-tests @@ -1 +1 @@ -Subproject commit c8129ce2f36c26ed634eda786960978a28e28d0e +Subproject commit 94b7877b5826a53627b8732ea0feb45869dd04ab diff --git a/ethcore/wasm/src/env.rs b/ethcore/wasm/src/env.rs index a09ceea86..4a518beec 100644 --- a/ethcore/wasm/src/env.rs +++ b/ethcore/wasm/src/env.rs @@ -147,6 +147,11 @@ pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[ &[I32], None, ), + Static( + "_elog", + &[I32; 4], + None, + ), // TODO: Get rid of it also somehow? Static( diff --git a/ethcore/wasm/src/runtime.rs b/ethcore/wasm/src/runtime.rs index d26346a3e..39b239fe8 100644 --- a/ethcore/wasm/src/runtime.rs +++ b/ethcore/wasm/src/runtime.rs @@ -55,6 +55,8 @@ pub enum UserTrap { Unknown, /// Passed string had invalid utf-8 encoding BadUtf8, + /// Log event error + Log, /// Other error in native code Other, /// Panic with message @@ -75,6 +77,7 @@ impl ::std::fmt::Display for UserTrap { UserTrap::AllocationFailed => write!(f, "Memory allocation failed (OOM)"), UserTrap::BadUtf8 => write!(f, "String encoding is bad utf-8 sequence"), UserTrap::GasLimit => write!(f, "Invocation resulted in gas limit violated"), + UserTrap::Log => write!(f, "Error occured while logging an event"), UserTrap::Other => write!(f, "Other unspecified error"), UserTrap::Panic(ref msg) => write!(f, "Panic: {}", msg), } @@ -232,6 +235,21 @@ impl<'a, 'b> Runtime<'a, 'b> { } } + pub fn overflow_charge(&mut self, f: F) -> Result<(), InterpreterError> + where F: FnOnce(&vm::Schedule) -> Option + { + let amount = match f(self.ext.schedule()) { + Some(amount) => amount, + None => { return Err(UserTrap::GasLimit.into()); } + }; + + if !self.charge_gas(amount as u64) { + Err(UserTrap::GasLimit.into()) + } else { + Ok(()) + } + } + /// Invoke create in the state runtime pub fn create(&mut self, context: InterpreterCallerContext) -> Result, InterpreterError> @@ -749,6 +767,44 @@ impl<'a, 'b> Runtime<'a, 'b> { pub fn ext(&mut self) -> &mut vm::Ext { self.ext } + + pub fn log(&mut self, context: InterpreterCallerContext) + -> Result, InterpreterError> + { + // signature is: + // pub fn elog(topic_ptr: *const u8, topic_count: u32, data_ptr: *const u8, data_len: u32); + let data_len = context.value_stack.pop_as::()? as u32; + let data_ptr = context.value_stack.pop_as::()? as u32; + let topic_count = context.value_stack.pop_as::()? as u32; + let topic_ptr = context.value_stack.pop_as::()? as u32; + + if topic_count > 4 { + return Err(UserTrap::Log.into()); + } + + self.overflow_charge(|schedule| + { + let topics_gas = schedule.log_gas as u64 + schedule.log_topic_gas as u64 * topic_count as u64; + (schedule.log_data_gas as u64) + .checked_mul(schedule.log_data_gas as u64) + .and_then(|data_gas| data_gas.checked_add(topics_gas)) + } + )?; + + let mut topics: Vec = Vec::with_capacity(topic_count as usize); + topics.resize(topic_count as usize, H256::zero()); + for i in 0..topic_count { + let offset = i.checked_mul(32).ok_or(UserTrap::MemoryAccessViolation)? + .checked_add(topic_ptr).ok_or(UserTrap::MemoryAccessViolation)?; + + *topics.get_mut(i as usize) + .expect("topics is resized to `topic_count`, i is in 0..topic count iterator, get_mut uses i as an indexer, get_mut cannot fail; qed") + = H256::from(&self.memory.get(offset, 32)?[..]); + } + self.ext.log(topics, &self.memory.get(data_ptr, data_len as usize)?).map_err(|_| UserTrap::Log)?; + + Ok(None) + } } impl<'a, 'b> interpreter::UserFunctionExecutor for Runtime<'a, 'b> { @@ -833,6 +889,9 @@ impl<'a, 'b> interpreter::UserFunctionExecutor for Runtime<'a, 'b> { "_value" => { self.value(context) }, + "_elog" => { + self.log(context) + }, _ => { trace!(target: "wasm", "Trapped due to unhandled function: '{}'", name); Ok(self.unknown_trap(context)?) diff --git a/ethcore/wasm/src/tests.rs b/ethcore/wasm/src/tests.rs index c9174f288..245f27536 100644 --- a/ethcore/wasm/src/tests.rs +++ b/ethcore/wasm/src/tests.rs @@ -680,7 +680,6 @@ fn externs() { #[test] fn embedded_keccak() { - ::ethcore_logger::init_log(); let mut code = load_sample!("keccak.wasm"); code.extend_from_slice(b"something"); @@ -703,4 +702,39 @@ fn embedded_keccak() { assert_eq!(H256::from_slice(&result), H256::from("68371d7e884c168ae2022c82bd837d51837718a7f7dfb7aa3f753074a35e1d87")); assert_eq!(gas_left, U256::from(80_452)); +} + +/// This test checks the correctness of log extern +/// Target test puts one event with two topic [keccak(input), reverse(keccak(input))] +/// and reversed input as a data +#[test] +fn events() { + ::ethcore_logger::init_log(); + let code = load_sample!("events.wasm"); + + let mut params = ActionParams::default(); + params.gas = U256::from(100_000); + params.code = Some(Arc::new(code)); + params.data = Some(b"something".to_vec()); + + let mut ext = FakeExt::new(); + + let (gas_left, result) = { + let mut interpreter = wasm_interpreter(); + let result = interpreter.exec(params, &mut ext).expect("Interpreter to execute without any errors"); + match result { + GasLeft::Known(_) => { panic!("events should return payload"); }, + GasLeft::NeedsReturn { gas_left: gas, data: result, apply_state: _apply } => (gas, result.to_vec()), + } + }; + + assert_eq!(ext.logs.len(), 1); + let log_entry = &ext.logs[0]; + assert_eq!(log_entry.topics.len(), 2); + assert_eq!(&log_entry.topics[0], &H256::from("68371d7e884c168ae2022c82bd837d51837718a7f7dfb7aa3f753074a35e1d87")); + assert_eq!(&log_entry.topics[1], &H256::from("871d5ea37430753faab7dff7a7187783517d83bd822c02e28a164c887e1d3768")); + assert_eq!(&log_entry.data, b"gnihtemos"); + + assert_eq!(&result, b"gnihtemos"); + assert_eq!(gas_left, U256::from(78039)); } \ No newline at end of file From 1516fc1c5790028064c5ea483cad9be148baa987 Mon Sep 17 00:00:00 2001 From: Dmitry Kashitsyn Date: Tue, 31 Oct 2017 11:09:31 +0700 Subject: [PATCH 008/132] Adds validate_node_url() and refactors boot node check (#6907) --- parity/configuration.rs | 12 +++++++++--- parity/helpers.rs | 10 +++++----- sync/src/lib.rs | 2 +- util/network/src/lib.rs | 2 +- util/network/src/node_table.rs | 11 ++++++++++- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/parity/configuration.rs b/parity/configuration.rs index 31febd375..189b45ac8 100644 --- a/parity/configuration.rs +++ b/parity/configuration.rs @@ -28,7 +28,7 @@ use bigint::hash::H256; use util::{version_data, Address}; use bytes::Bytes; use ansi_term::Colour; -use ethsync::{NetworkConfiguration, is_valid_node_url}; +use ethsync::{NetworkConfiguration, validate_node_url, NetworkError}; use ethcore::ethstore::ethkey::{Secret, Public}; use ethcore::client::{VMType}; use ethcore::miner::{MinerOptions, Banning, StratumOptions}; @@ -698,9 +698,15 @@ impl Configuration { let mut node_file = File::open(path).map_err(|e| format!("Error opening reserved nodes file: {}", e))?; node_file.read_to_string(&mut buffer).map_err(|_| "Error reading reserved node file")?; let lines = buffer.lines().map(|s| s.trim().to_owned()).filter(|s| !s.is_empty() && !s.starts_with("#")).collect::>(); - if let Some(invalid) = lines.iter().find(|s| !is_valid_node_url(s)) { - return Err(format!("Invalid node address format given for a boot node: {}", invalid)); + + for line in &lines { + match validate_node_url(line) { + None => continue, + Some(NetworkError::AddressResolve(_)) => return Err(format!("Failed to resolve hostname of a boot node: {}", line)), + Some(_) => return Err(format!("Invalid node address format given for a boot node: {}", line)), + } } + Ok(lines) }, None => Ok(Vec::new()) diff --git a/parity/helpers.rs b/parity/helpers.rs index f04027029..8527850e8 100644 --- a/parity/helpers.rs +++ b/parity/helpers.rs @@ -29,7 +29,7 @@ use cache::CacheConfig; use dir::DatabaseDirectories; use upgrade::{upgrade, upgrade_data_paths}; use migration::migrate; -use ethsync::is_valid_node_url; +use ethsync::{validate_node_url, NetworkError}; use path; pub fn to_duration(s: &str) -> Result { @@ -181,10 +181,10 @@ pub fn parity_ipc_path(base: &str, path: &str, shift: u16) -> String { pub fn to_bootnodes(bootnodes: &Option) -> Result, String> { match *bootnodes { Some(ref x) if !x.is_empty() => x.split(',').map(|s| { - if is_valid_node_url(s) { - Ok(s.to_owned()) - } else { - Err(format!("Invalid node address format given for a boot node: {}", s)) + match validate_node_url(s) { + None => Ok(s.to_owned()), + Some(NetworkError::AddressResolve(_)) => Err(format!("Failed to resolve hostname of a boot node: {}", s)), + Some(_) => Err(format!("Invalid node address format given for a boot node: {}", s)), } }).collect(), Some(_) => Ok(vec![]), diff --git a/sync/src/lib.rs b/sync/src/lib.rs index 091ce5ba9..45f7a8d98 100644 --- a/sync/src/lib.rs +++ b/sync/src/lib.rs @@ -73,7 +73,7 @@ mod api; pub use api::*; pub use chain::{SyncStatus, SyncState}; -pub use network::{is_valid_node_url, NonReservedPeerMode, NetworkError, ConnectionFilter, ConnectionDirection}; +pub use network::{is_valid_node_url, validate_node_url, NonReservedPeerMode, NetworkError, ConnectionFilter, ConnectionDirection}; #[cfg(test)] pub(crate) type Address = bigint::hash::H160; diff --git a/util/network/src/lib.rs b/util/network/src/lib.rs index bc5459d5a..a69663121 100644 --- a/util/network/src/lib.rs +++ b/util/network/src/lib.rs @@ -115,7 +115,7 @@ pub use session::SessionInfo; pub use connection_filter::{ConnectionFilter, ConnectionDirection}; pub use io::TimerToken; -pub use node_table::{is_valid_node_url, NodeId}; +pub use node_table::{is_valid_node_url, validate_node_url, NodeId}; use ipnetwork::{IpNetwork, IpNetworkError}; use std::str::FromStr; diff --git a/util/network/src/node_table.rs b/util/network/src/node_table.rs index 94ad4d30a..a1a1903d3 100644 --- a/util/network/src/node_table.rs +++ b/util/network/src/node_table.rs @@ -28,7 +28,7 @@ use std::io::{Read, Write}; use bigint::hash::*; use rlp::*; use time::Tm; -use error::NetworkError; +use NetworkError; use {AllowIP, IpFilter}; use discovery::{TableUpdates, NodeEntry}; use ip_utils::*; @@ -368,6 +368,15 @@ pub fn is_valid_node_url(url: &str) -> bool { Node::from_str(url).is_ok() } +/// Same as `is_valid_node_url` but returns detailed `NetworkError` +pub fn validate_node_url(url: &str) -> Option { + use std::str::FromStr; + match Node::from_str(url) { + Ok(_) => None, + Err(e) => Some(e) + } +} + #[cfg(test)] mod tests { use super::*; From 851401dded71cde146e0dfc389fed3f462cda79f Mon Sep 17 00:00:00 2001 From: Dmitry Kashitsyn Date: Mon, 6 Nov 2017 13:01:37 +0700 Subject: [PATCH 009/132] Removes obsolete is_valid_node_url() --- sync/src/lib.rs | 2 +- util/network/src/lib.rs | 2 +- util/network/src/node_table.rs | 8 +------- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/sync/src/lib.rs b/sync/src/lib.rs index 45f7a8d98..0495d72a7 100644 --- a/sync/src/lib.rs +++ b/sync/src/lib.rs @@ -73,7 +73,7 @@ mod api; pub use api::*; pub use chain::{SyncStatus, SyncState}; -pub use network::{is_valid_node_url, validate_node_url, NonReservedPeerMode, NetworkError, ConnectionFilter, ConnectionDirection}; +pub use network::{validate_node_url, NonReservedPeerMode, NetworkError, ConnectionFilter, ConnectionDirection}; #[cfg(test)] pub(crate) type Address = bigint::hash::H160; diff --git a/util/network/src/lib.rs b/util/network/src/lib.rs index a69663121..6cf81fa9d 100644 --- a/util/network/src/lib.rs +++ b/util/network/src/lib.rs @@ -115,7 +115,7 @@ pub use session::SessionInfo; pub use connection_filter::{ConnectionFilter, ConnectionDirection}; pub use io::TimerToken; -pub use node_table::{is_valid_node_url, validate_node_url, NodeId}; +pub use node_table::{validate_node_url, NodeId}; use ipnetwork::{IpNetwork, IpNetworkError}; use std::str::FromStr; diff --git a/util/network/src/node_table.rs b/util/network/src/node_table.rs index a1a1903d3..9ac0ac9f6 100644 --- a/util/network/src/node_table.rs +++ b/util/network/src/node_table.rs @@ -363,12 +363,6 @@ impl Drop for NodeTable { } /// Check if node url is valid -pub fn is_valid_node_url(url: &str) -> bool { - use std::str::FromStr; - Node::from_str(url).is_ok() -} - -/// Same as `is_valid_node_url` but returns detailed `NetworkError` pub fn validate_node_url(url: &str) -> Option { use std::str::FromStr; match Node::from_str(url) { @@ -399,7 +393,7 @@ mod tests { #[test] fn node_parse() { - assert!(is_valid_node_url("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@22.99.55.44:7770")); + assert!(validate_node_url("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@22.99.55.44:7770").is_some()); let node = Node::from_str("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@22.99.55.44:7770"); assert!(node.is_ok()); let node = node.unwrap(); From 8fe40a64d0a2da818be411e22d303a2e1d003870 Mon Sep 17 00:00:00 2001 From: Dmitry Kashitsyn Date: Mon, 6 Nov 2017 13:51:26 +0700 Subject: [PATCH 010/132] Fixes test --- util/network/src/node_table.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/network/src/node_table.rs b/util/network/src/node_table.rs index 9ac0ac9f6..6ba598291 100644 --- a/util/network/src/node_table.rs +++ b/util/network/src/node_table.rs @@ -393,7 +393,7 @@ mod tests { #[test] fn node_parse() { - assert!(validate_node_url("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@22.99.55.44:7770").is_some()); + assert!(validate_node_url("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@22.99.55.44:7770").is_none()); let node = Node::from_str("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@22.99.55.44:7770"); assert!(node.is_ok()); let node = node.unwrap(); From d7e4dda3e161d6ea4cc3521029e7fe2fa0360371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Mon, 6 Nov 2017 11:58:17 +0100 Subject: [PATCH 011/132] Update ethcore-bigint. --- Cargo.lock | 76 ++++++++++++++++++++--------------------- util/bigint/Cargo.toml | 2 +- util/bigint/src/hash.rs | 2 +- util/bigint/src/lib.rs | 4 +-- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4d139937f..4bdd36ac9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,7 +3,7 @@ name = "wasm" version = "0.1.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-logger 1.9.0", "ethcore-util 1.9.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -181,7 +181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "bloomable" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "hash 0.1.0", ] @@ -294,7 +294,7 @@ name = "common-types" version = "0.1.0" dependencies = [ "bloomable 0.1.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethjson 0.1.0", @@ -493,7 +493,7 @@ dependencies = [ "common-types 0.1.0", "crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "ethash 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bloom-journal 0.1.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", @@ -553,7 +553,7 @@ dependencies = [ [[package]] name = "ethcore-bigint" -version = "0.1.3" +version = "0.2.0" dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -598,7 +598,7 @@ version = "1.9.0" dependencies = [ "bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -651,7 +651,7 @@ dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -685,7 +685,7 @@ version = "1.0.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-logger 1.9.0", @@ -719,7 +719,7 @@ name = "ethcore-stratum" version = "1.9.0" dependencies = [ "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-devtools 1.9.0", "ethcore-logger 1.9.0", "ethcore-util 1.9.0", @@ -741,7 +741,7 @@ dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "eth-secp256k1 0.5.6 (git+https://github.com/paritytech/rust-secp256k1)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", @@ -771,7 +771,7 @@ name = "ethcrypto" version = "0.1.0" dependencies = [ "eth-secp256k1 0.5.6 (git+https://github.com/paritytech/rust-secp256k1)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethkey 0.2.0", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "subtle 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -783,7 +783,7 @@ name = "ethjson" version = "0.1.0" dependencies = [ "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -796,7 +796,7 @@ version = "0.2.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "eth-secp256k1 0.5.6 (git+https://github.com/paritytech/rust-secp256k1)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", @@ -820,7 +820,7 @@ dependencies = [ name = "ethstore" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcrypto 0.1.0", "ethkey 0.2.0", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -859,7 +859,7 @@ dependencies = [ "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -888,7 +888,7 @@ name = "evm" version = "0.1.0" dependencies = [ "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-util 1.9.0", "evmjit 1.9.0", "hash 0.1.0", @@ -907,7 +907,7 @@ version = "0.1.0" dependencies = [ "docopt 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethjson 0.1.0", @@ -1028,7 +1028,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "hardware-wallet" version = "1.9.0" dependencies = [ - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethkey 0.2.0", "hidapi 0.3.1 (git+https://github.com/paritytech/hidapi-rs)", "libusb 0.3.0 (git+https://github.com/paritytech/libusb-rs)", @@ -1044,7 +1044,7 @@ name = "hash" version = "0.1.0" dependencies = [ "cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1054,7 +1054,7 @@ name = "hashdb" version = "0.1.0" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", ] [[package]] @@ -1233,7 +1233,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "journaldb" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", @@ -1375,7 +1375,7 @@ name = "kvdb-rocksdb" version = "0.1.0" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "kvdb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1525,7 +1525,7 @@ version = "0.1.0" dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "hash 0.1.0", "hashdb 0.1.0", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1671,7 +1671,7 @@ version = "0.1.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "native-contract-generator 0.1.0", ] @@ -1705,7 +1705,7 @@ name = "node-filter" version = "1.9.0" dependencies = [ "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-io 1.9.0", "ethcore-network 1.9.0", @@ -1919,7 +1919,7 @@ dependencies = [ "docopt 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -1983,7 +1983,7 @@ dependencies = [ "base32 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-util 1.9.0", @@ -2046,7 +2046,7 @@ name = "parity-hash-fetch" version = "1.9.0" dependencies = [ "ethabi 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "fetch 0.1.0", @@ -2068,7 +2068,7 @@ version = "1.9.0" dependencies = [ "cid 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "jsonrpc-core 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", @@ -2099,7 +2099,7 @@ dependencies = [ name = "parity-machine" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-util 1.9.0", ] @@ -2120,7 +2120,7 @@ dependencies = [ "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "ethash 1.9.0", "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -2251,7 +2251,7 @@ version = "1.9.0" dependencies = [ "ethabi 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethsync 1.9.0", @@ -2281,7 +2281,7 @@ version = "0.1.0" dependencies = [ "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-network 1.9.0", "ethcrypto 0.1.0", "ethkey 0.2.0", @@ -2344,7 +2344,7 @@ name = "patricia_trie" version = "0.1.0" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", @@ -2634,7 +2634,7 @@ version = "0.2.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3259,7 +3259,7 @@ dependencies = [ name = "triehash" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "hash 0.1.0", "rlp 0.2.0", ] @@ -3362,7 +3362,7 @@ name = "util-error" version = "0.1.0" dependencies = [ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "kvdb 0.1.0", "rlp 0.2.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3407,7 +3407,7 @@ version = "0.1.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "common-types 0.1.0", - "ethcore-bigint 0.1.3", + "ethcore-bigint 0.2.0", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethjson 0.1.0", diff --git a/util/bigint/Cargo.toml b/util/bigint/Cargo.toml index fcca56078..8ea61cf99 100644 --- a/util/bigint/Cargo.toml +++ b/util/bigint/Cargo.toml @@ -4,7 +4,7 @@ homepage = "http://parity.io" repository = "https://github.com/paritytech/parity" license = "MIT/Apache-2.0" name = "ethcore-bigint" -version = "0.1.3" +version = "0.2.0" authors = ["Parity Technologies "] [dependencies] diff --git a/util/bigint/src/hash.rs b/util/bigint/src/hash.rs index 316062bc4..212a1dd13 100644 --- a/util/bigint/src/hash.rs +++ b/util/bigint/src/hash.rs @@ -17,7 +17,7 @@ use rand::{Rand, Rng}; use rand::os::OsRng; use rustc_hex::{FromHex, FromHexError}; use plain_hasher::PlainHasher; -use bigint::U256; +use uint::U256; use libc::{c_void, memcmp}; /// Return `s` without the `0x` at the beginning of it, if any. diff --git a/util/bigint/src/lib.rs b/util/bigint/src/lib.rs index 1b1b5d488..58d416b50 100644 --- a/util/bigint/src/lib.rs +++ b/util/bigint/src/lib.rs @@ -12,7 +12,6 @@ extern crate rand; extern crate rustc_hex; -extern crate bigint; extern crate libc; extern crate plain_hasher; @@ -20,6 +19,7 @@ extern crate plain_hasher; #[macro_use] extern crate heapsize; +pub extern crate bigint as uint; pub mod hash; /// A prelude module for re-exporting all the types defined in this crate. @@ -31,6 +31,6 @@ pub mod hash; /// let y = x + 1.into(); /// ``` pub mod prelude { - pub use ::bigint::*; + pub use ::uint::*; pub use ::hash::*; } From 0ed1e77996d07cc7b82c93eac7a98ab06e669953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Mon, 6 Nov 2017 12:03:59 +0100 Subject: [PATCH 012/132] Add version to plain-hasher. --- util/bigint/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/bigint/Cargo.toml b/util/bigint/Cargo.toml index 8ea61cf99..9e72f0de8 100644 --- a/util/bigint/Cargo.toml +++ b/util/bigint/Cargo.toml @@ -13,7 +13,7 @@ rustc-hex = "1.0" rand = "0.3.12" libc = "0.2" heapsize = { version = "0.4", optional = true } -plain_hasher = { path = "../plain_hasher" } +plain_hasher = { path = "../plain_hasher", version = "0.1" } [features] x64asm_arithmetic=[] From 2557f282a4dd5a18a5731173bad092b0a6a06689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Mon, 6 Nov 2017 12:52:38 +0100 Subject: [PATCH 013/132] Add std feature. --- util/bigint/Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/bigint/Cargo.toml b/util/bigint/Cargo.toml index 9e72f0de8..3e9f9fd37 100644 --- a/util/bigint/Cargo.toml +++ b/util/bigint/Cargo.toml @@ -4,7 +4,7 @@ homepage = "http://parity.io" repository = "https://github.com/paritytech/parity" license = "MIT/Apache-2.0" name = "ethcore-bigint" -version = "0.2.0" +version = "0.2.1" authors = ["Parity Technologies "] [dependencies] @@ -18,4 +18,5 @@ plain_hasher = { path = "../plain_hasher", version = "0.1" } [features] x64asm_arithmetic=[] rust_arithmetic=[] +std = ["bigint/std"] heapsizeof = ["heapsize", "bigint/heapsizeof"] From 6a0e8a557c52f0627103fa30606dddbea58ff72e Mon Sep 17 00:00:00 2001 From: Leo Arias Date: Mon, 6 Nov 2017 14:03:45 +0000 Subject: [PATCH 014/132] Update the snap metadata to keep working strictly confined --- snap/snapcraft.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 2dfa984c1..7be9c0bf7 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -13,10 +13,16 @@ confinement: strict apps: parity: command: parity - plugs: [network, network-bind] + plugs: [network, network-bind, mount-observe, x11, unity7] parts: parity: source: . plugin: rust + build-attributes: [no-system-libraries] build-packages: [g++, libudev-dev, libssl-dev, make, pkg-config] + stage-packages: [libc6, libssl1.0.0, libudev1, libstdc++6] + df: + plugin: nil + stage-packages: [coreutils] + stage: [bin/df] From bd045174774a27d0815902ec24e538126425f6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Mon, 6 Nov 2017 16:31:15 +0100 Subject: [PATCH 015/132] Update. --- Cargo.lock | 76 +++++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4bdd36ac9..1053fc27a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,7 +3,7 @@ name = "wasm" version = "0.1.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-logger 1.9.0", "ethcore-util 1.9.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -181,7 +181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "bloomable" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "hash 0.1.0", ] @@ -294,7 +294,7 @@ name = "common-types" version = "0.1.0" dependencies = [ "bloomable 0.1.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethjson 0.1.0", @@ -493,7 +493,7 @@ dependencies = [ "common-types 0.1.0", "crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "ethash 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bloom-journal 0.1.0", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", @@ -553,7 +553,7 @@ dependencies = [ [[package]] name = "ethcore-bigint" -version = "0.2.0" +version = "0.2.1" dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -598,7 +598,7 @@ version = "1.9.0" dependencies = [ "bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -651,7 +651,7 @@ dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -685,7 +685,7 @@ version = "1.0.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-logger 1.9.0", @@ -719,7 +719,7 @@ name = "ethcore-stratum" version = "1.9.0" dependencies = [ "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-devtools 1.9.0", "ethcore-logger 1.9.0", "ethcore-util 1.9.0", @@ -741,7 +741,7 @@ dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "eth-secp256k1 0.5.6 (git+https://github.com/paritytech/rust-secp256k1)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", @@ -771,7 +771,7 @@ name = "ethcrypto" version = "0.1.0" dependencies = [ "eth-secp256k1 0.5.6 (git+https://github.com/paritytech/rust-secp256k1)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethkey 0.2.0", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "subtle 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -783,7 +783,7 @@ name = "ethjson" version = "0.1.0" dependencies = [ "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -796,7 +796,7 @@ version = "0.2.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "eth-secp256k1 0.5.6 (git+https://github.com/paritytech/rust-secp256k1)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", @@ -820,7 +820,7 @@ dependencies = [ name = "ethstore" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcrypto 0.1.0", "ethkey 0.2.0", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -859,7 +859,7 @@ dependencies = [ "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -888,7 +888,7 @@ name = "evm" version = "0.1.0" dependencies = [ "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-util 1.9.0", "evmjit 1.9.0", "hash 0.1.0", @@ -907,7 +907,7 @@ version = "0.1.0" dependencies = [ "docopt 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethjson 0.1.0", @@ -1028,7 +1028,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "hardware-wallet" version = "1.9.0" dependencies = [ - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethkey 0.2.0", "hidapi 0.3.1 (git+https://github.com/paritytech/hidapi-rs)", "libusb 0.3.0 (git+https://github.com/paritytech/libusb-rs)", @@ -1044,7 +1044,7 @@ name = "hash" version = "0.1.0" dependencies = [ "cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1054,7 +1054,7 @@ name = "hashdb" version = "0.1.0" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", ] [[package]] @@ -1233,7 +1233,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "journaldb" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", @@ -1375,7 +1375,7 @@ name = "kvdb-rocksdb" version = "0.1.0" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "kvdb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1525,7 +1525,7 @@ version = "0.1.0" dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "hash 0.1.0", "hashdb 0.1.0", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1671,7 +1671,7 @@ version = "0.1.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "native-contract-generator 0.1.0", ] @@ -1705,7 +1705,7 @@ name = "node-filter" version = "1.9.0" dependencies = [ "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-io 1.9.0", "ethcore-network 1.9.0", @@ -1919,7 +1919,7 @@ dependencies = [ "docopt 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -1983,7 +1983,7 @@ dependencies = [ "base32 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-util 1.9.0", @@ -2046,7 +2046,7 @@ name = "parity-hash-fetch" version = "1.9.0" dependencies = [ "ethabi 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "fetch 0.1.0", @@ -2068,7 +2068,7 @@ version = "1.9.0" dependencies = [ "cid 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "jsonrpc-core 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", @@ -2099,7 +2099,7 @@ dependencies = [ name = "parity-machine" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-util 1.9.0", ] @@ -2120,7 +2120,7 @@ dependencies = [ "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "ethash 1.9.0", "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-devtools 1.9.0", "ethcore-io 1.9.0", @@ -2251,7 +2251,7 @@ version = "1.9.0" dependencies = [ "ethabi 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.9.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethsync 1.9.0", @@ -2281,7 +2281,7 @@ version = "0.1.0" dependencies = [ "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-network 1.9.0", "ethcrypto 0.1.0", "ethkey 0.2.0", @@ -2344,7 +2344,7 @@ name = "patricia_trie" version = "0.1.0" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", @@ -2634,7 +2634,7 @@ version = "0.2.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3259,7 +3259,7 @@ dependencies = [ name = "triehash" version = "0.1.0" dependencies = [ - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "hash 0.1.0", "rlp 0.2.0", ] @@ -3362,7 +3362,7 @@ name = "util-error" version = "0.1.0" dependencies = [ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "kvdb 0.1.0", "rlp 0.2.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3407,7 +3407,7 @@ version = "0.1.0" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "common-types 0.1.0", - "ethcore-bigint 0.2.0", + "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethjson 0.1.0", From 83e2fa311250402a30a3c6e1162839307e397400 Mon Sep 17 00:00:00 2001 From: Axel Chalon Date: Wed, 8 Nov 2017 12:33:56 +0100 Subject: [PATCH 016/132] Make CLI arguments parsing more backwards compatible --- Cargo.lock | 28 +++++++++--------- parity/cli/mod.rs | 47 ++++++++++++++++++----------- parity/cli/usage.rs | 65 ++++++++++++++++++++++++----------------- parity/configuration.rs | 6 ++-- parity/deprecated.rs | 6 ++++ 5 files changed, 92 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1053fc27a..ef424bae4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,17 +1,3 @@ -[root] -name = "wasm" -version = "0.1.0" -dependencies = [ - "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1", - "ethcore-logger 1.9.0", - "ethcore-util 1.9.0", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", - "vm 0.1.0", - "wasm-utils 0.1.0 (git+https://github.com/paritytech/wasm-utils)", -] - [[package]] name = "adler32" version = "1.0.2" @@ -3422,6 +3408,20 @@ name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wasm" +version = "0.1.0" +dependencies = [ + "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ethcore-bigint 0.2.1", + "ethcore-logger 1.9.0", + "ethcore-util 1.9.0", + "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "vm 0.1.0", + "wasm-utils 0.1.0 (git+https://github.com/paritytech/wasm-utils)", +] + [[package]] name = "wasm-utils" version = "0.1.0" diff --git a/parity/cli/mod.rs b/parity/cli/mod.rs index cf49c6452..c46965ef2 100644 --- a/parity/cli/mod.rs +++ b/parity/cli/mod.rs @@ -24,6 +24,7 @@ usage! { // Subcommands must start with cmd_ and have '_' in place of '-' // Sub-subcommands must start with the name of the subcommand // Arguments must start with arg_ + // Flags must start with flag_ CMD cmd_ui { "Manage ui", @@ -53,10 +54,6 @@ usage! { CMD cmd_account_new { "Create a new acount", - - ARG arg_account_new_password: (Option) = None, - "--password=[FILE]", - "Path to the password file", } CMD cmd_account_list { @@ -81,10 +78,6 @@ usage! { { "Import wallet", - ARG arg_wallet_import_password: (Option) = None, - "--password=[FILE]", - "Path to the password file", - ARG arg_wallet_import_path: (Option) = None, "", "Path to the wallet", @@ -179,10 +172,6 @@ usage! { { "Sign", - ARG arg_signer_sign_password: (Option) = None, - "--password=[FILE]", - "Path to the password file", - ARG arg_signer_sign_id: (Option) = None, "[ID]", "ID", @@ -244,7 +233,7 @@ usage! { } } { - // Flags and arguments + // Global flags and arguments ["Operating Options"] FLAG flag_public_node: (bool) = false, or |c: &Config| otry!(c.parity).public_node.clone(), "--public-node", @@ -353,7 +342,6 @@ usage! { ARG arg_password: (Vec) = Vec::new(), or |c: &Config| otry!(c.account).password.clone(), "--password=[FILE]...", "Provide a file containing a password for unlocking an account. Leading and trailing whitespace is trimmed.", - ["UI options"] FLAG flag_force_ui: (bool) = false, or |c: &Config| otry!(c.ui).force.clone(), "--force-ui", @@ -840,6 +828,10 @@ usage! { "Target size of the whisper message pool in megabytes.", ["Legacy options"] + FLAG flag_warp: (bool) = false, or |_| None, + "--warp", + "Does nothing; warp sync is enabled by default.", + FLAG flag_dapps_apis_all: (bool) = false, or |_| None, "--dapps-apis-all", "Dapps server is merged with RPC server. Use --jsonrpc-apis.", @@ -1208,6 +1200,29 @@ mod tests { use toml; use clap::{ErrorKind as ClapErrorKind}; + #[test] + fn should_accept_any_argument_order() { + let args = Args::parse(&["parity", "--no-warp", "account", "list"]).unwrap(); + assert_eq!(args.flag_no_warp, true); + + let args = Args::parse(&["parity", "account", "list", "--no-warp"]).unwrap(); + assert_eq!(args.flag_no_warp, true); + + let args = Args::parse(&["parity", "--chain=dev", "account", "list"]).unwrap(); + assert_eq!(args.arg_chain, "dev"); + + let args = Args::parse(&["parity", "account", "list", "--chain=dev"]).unwrap(); + assert_eq!(args.arg_chain, "dev"); + } + + #[test] + fn should_not_crash_on_warp() { + let args = Args::parse(&["parity", "--warp"]); + assert!(args.is_ok()); + + let args = Args::parse(&["parity", "account", "list", "--warp"]); + assert!(args.is_ok()); + } #[test] fn should_reject_invalid_values() { @@ -1380,9 +1395,6 @@ mod tests { arg_restore_file: None, arg_tools_hash_file: None, - arg_account_new_password: None, - arg_signer_sign_password: None, - arg_wallet_import_password: None, arg_signer_sign_id: None, arg_signer_reject_id: None, arg_dapp_path: None, @@ -1565,6 +1577,7 @@ mod tests { arg_whisper_pool_size: 20, // -- Legacy Options + flag_warp: false, flag_geth: false, flag_testnet: false, flag_import_geth_keys: false, diff --git a/parity/cli/usage.rs b/parity/cli/usage.rs index 83b878ee1..71ac01295 100644 --- a/parity/cli/usage.rs +++ b/parity/cli/usage.rs @@ -153,7 +153,7 @@ macro_rules! usage { use std::{fs, io, process}; use std::io::{Read, Write}; use util::version; - use clap::{Arg, App, SubCommand, AppSettings, Error as ClapError, ErrorKind as ClapErrorKind}; + use clap::{Arg, App, SubCommand, AppSettings, ArgMatches as ClapArgMatches, Error as ClapError, ErrorKind as ClapErrorKind}; use helpers::replace_home; use std::ffi::OsStr; use std::collections::HashMap; @@ -503,6 +503,36 @@ macro_rules! usage { args } + pub fn hydrate_with_globals(self: &mut Self, matches: &ClapArgMatches) -> Result<(), ClapError> { + $( + $( + self.$flag = self.$flag || matches.is_present(stringify!($flag)); + )* + $( + if let some @ Some(_) = return_if_parse_error!(if_option!( + $($arg_type_tt)+, + THEN { + if_option_vec!( + $($arg_type_tt)+, + THEN { values_t!(matches, stringify!($arg), inner_option_vec_type!($($arg_type_tt)+)) } + ELSE { value_t!(matches, stringify!($arg), inner_option_type!($($arg_type_tt)+)) } + ) + } + ELSE { + if_vec!( + $($arg_type_tt)+, + THEN { values_t!(matches, stringify!($arg), inner_vec_type!($($arg_type_tt)+)) } + ELSE { value_t!(matches, stringify!($arg), $($arg_type_tt)+) } + ) + } + )) { + self.$arg = some; + } + )* + )* + Ok(()) + } + #[allow(unused_variables)] // the submatches of arg-less subcommands aren't used pub fn parse>(command: &[S]) -> Result { @@ -559,12 +589,14 @@ macro_rules! usage { SubCommand::with_name(&underscore_to_hyphen!(&stringify!($subc)[4..])) .about($subc_help) .args(&subc_usages.get(stringify!($subc)).unwrap().iter().map(|u| Arg::from_usage(u).use_delimiter(false).allow_hyphen_values(true)).collect::>()) + .args(&usages.iter().map(|u| Arg::from_usage(u).use_delimiter(false).allow_hyphen_values(true)).collect::>()) // accept global arguments at this position $( .setting(AppSettings::SubcommandRequired) // prevent from running `parity account` .subcommand( SubCommand::with_name(&underscore_to_hyphen!(&stringify!($subc_subc)[stringify!($subc).len()+1..])) .about($subc_subc_help) .args(&subc_usages.get(stringify!($subc_subc)).unwrap().iter().map(|u| Arg::from_usage(u).use_delimiter(false).allow_hyphen_values(true)).collect::>()) + .args(&usages.iter().map(|u| Arg::from_usage(u).use_delimiter(false).allow_hyphen_values(true)).collect::>()) // accept global arguments at this position ) )* ) @@ -572,36 +604,16 @@ macro_rules! usage { .get_matches_from_safe(command.iter().map(|x| OsStr::new(x.as_ref())))?; let mut raw_args : RawArgs = Default::default(); - $( - $( - raw_args.$flag = matches.is_present(stringify!($flag)); - )* - $( - raw_args.$arg = return_if_parse_error!(if_option!( - $($arg_type_tt)+, - THEN { - if_option_vec!( - $($arg_type_tt)+, - THEN { values_t!(matches, stringify!($arg), inner_option_vec_type!($($arg_type_tt)+)) } - ELSE { value_t!(matches, stringify!($arg), inner_option_type!($($arg_type_tt)+)) } - ) - } - ELSE { - if_vec!( - $($arg_type_tt)+, - THEN { values_t!(matches, stringify!($arg), inner_vec_type!($($arg_type_tt)+)) } - ELSE { value_t!(matches, stringify!($arg), $($arg_type_tt)+) } - ) - } - )); - )* - )* + + raw_args.hydrate_with_globals(&matches)?; // Subcommands $( if let Some(submatches) = matches.subcommand_matches(&underscore_to_hyphen!(&stringify!($subc)[4..])) { raw_args.$subc = true; + // Globals + raw_args.hydrate_with_globals(&submatches)?; // Subcommand flags $( raw_args.$subc_flag = submatches.is_present(&stringify!($subc_flag)); @@ -626,12 +638,13 @@ macro_rules! usage { } )); )* - // Sub-subcommands $( if let Some(subsubmatches) = submatches.subcommand_matches(&underscore_to_hyphen!(&stringify!($subc_subc)[stringify!($subc).len()+1..])) { raw_args.$subc_subc = true; + // Globals + raw_args.hydrate_with_globals(&subsubmatches)?; // Sub-subcommand flags $( raw_args.$subc_subc_flag = subsubmatches.is_present(&stringify!($subc_subc_flag)); diff --git a/parity/configuration.rs b/parity/configuration.rs index 31febd375..ba2fd1216 100644 --- a/parity/configuration.rs +++ b/parity/configuration.rs @@ -143,7 +143,7 @@ impl Configuration { if self.args.cmd_signer_new_token { Cmd::SignerToken(ws_conf, ui_conf, logger_config.clone()) } else if self.args.cmd_signer_sign { - let pwfile = self.args.arg_signer_sign_password.map(|pwfile| { + let pwfile = self.args.arg_password.first().map(|pwfile| { PathBuf::from(pwfile) }); Cmd::SignerSign { @@ -180,7 +180,7 @@ impl Configuration { iterations: self.args.arg_keys_iterations, path: dirs.keys, spec: spec, - password_file: self.args.arg_account_new_password.clone(), + password_file: self.args.arg_password.first().map(|x| x.to_owned()), }; AccountCmd::New(new_acc) } else if self.args.cmd_account_list { @@ -215,7 +215,7 @@ impl Configuration { path: dirs.keys, spec: spec, wallet_path: self.args.arg_wallet_import_path.unwrap().clone(), - password_file: self.args.arg_wallet_import_password, + password_file: self.args.arg_password.first().map(|x| x.to_owned()), }; Cmd::ImportPresaleWallet(presale_cmd) } else if self.args.cmd_import { diff --git a/parity/deprecated.rs b/parity/deprecated.rs index d80ea3357..b41475d9d 100644 --- a/parity/deprecated.rs +++ b/parity/deprecated.rs @@ -37,6 +37,10 @@ impl fmt::Display for Deprecated { pub fn find_deprecated(args: &Args) -> Vec { let mut result = vec![]; + if args.flag_warp { + result.push(Deprecated::DoesNothing("--warp")); + } + if args.flag_jsonrpc { result.push(Deprecated::DoesNothing("--jsonrpc")); } @@ -117,6 +121,7 @@ mod tests { assert_eq!(find_deprecated(&Args::default()), vec![]); assert_eq!(find_deprecated(&{ let mut args = Args::default(); + args.flag_warp = true; args.flag_jsonrpc = true; args.flag_rpc = true; args.flag_jsonrpc_off = true; @@ -135,6 +140,7 @@ mod tests { args.flag_dapps_apis_all = true; args }), vec![ + Deprecated::DoesNothing("--warp"), Deprecated::DoesNothing("--jsonrpc"), Deprecated::DoesNothing("--rpc"), Deprecated::Replaced("--jsonrpc-off", "--no-jsonrpc"), From aaeb5d4cd797a6b3b029270183b2e6f143a27746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Thu, 9 Nov 2017 13:20:26 +0100 Subject: [PATCH 017/132] Fixes for parity-extension (#6990) * Fix extension support. * Fix environment variables on windows. * Fix package-lock.json * Fix build issues. --- js/package-lock.json | 1092 +++--------------------------------------- js/package.json | 17 +- js/src/embed.js | 11 +- js/webpack/app.js | 4 +- 4 files changed, 77 insertions(+), 1047 deletions(-) diff --git a/js/package-lock.json b/js/package-lock.json index cb7da8602..a9a3d1d6e 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -44,76 +44,76 @@ } }, "@parity/dapp-account": { - "version": "github:paritytech/dapp-account#67eec35f3ef21aab77aee5c2ca4b8ae0bf5251f0", + "version": "github:paritytech/dapp-account#65b03835243219a678c1a517e2eb69845a097dcd", "requires": { - "@parity/dapp-accounts": "github:paritytech/dapp-accounts#8abec008e59c4c4df8902188371ab83c77d1d3de", - "@parity/dapp-vaults": "github:paritytech/dapp-vaults#b3c16b417e7b1cc671de91c719040924a6632806" + "@parity/dapp-accounts": "github:paritytech/dapp-accounts#ca55be1774563862e7b0cc72740d0747a60036b8", + "@parity/dapp-vaults": "github:paritytech/dapp-vaults#1bd5de3994227e6b733e7b3e985117a59f0ad638" } }, "@parity/dapp-accounts": { - "version": "github:paritytech/dapp-accounts#8abec008e59c4c4df8902188371ab83c77d1d3de", + "version": "github:paritytech/dapp-accounts#ca55be1774563862e7b0cc72740d0747a60036b8", "requires": { - "@parity/dapp-vaults": "github:paritytech/dapp-vaults#b3c16b417e7b1cc671de91c719040924a6632806" + "@parity/dapp-vaults": "github:paritytech/dapp-vaults#1bd5de3994227e6b733e7b3e985117a59f0ad638" } }, "@parity/dapp-address": { - "version": "github:paritytech/dapp-address#79d0f5300d17ec66476f9f59e62e73d62b31dadf", + "version": "github:paritytech/dapp-address#9b40c93dac5efa0d6a3b8aa30ea6ba19c9fd71cb", "requires": { - "@parity/dapp-account": "github:paritytech/dapp-account#67eec35f3ef21aab77aee5c2ca4b8ae0bf5251f0", - "@parity/dapp-addresses": "github:paritytech/dapp-addresses#d884a81b072805806ac6820f8b6c83d6faa04468" + "@parity/dapp-account": "github:paritytech/dapp-account#65b03835243219a678c1a517e2eb69845a097dcd", + "@parity/dapp-addresses": "github:paritytech/dapp-addresses#525453c8484b9c0e1b7ede1c5929b2e3374e2715" } }, "@parity/dapp-addresses": { - "version": "github:paritytech/dapp-addresses#d884a81b072805806ac6820f8b6c83d6faa04468", + "version": "github:paritytech/dapp-addresses#525453c8484b9c0e1b7ede1c5929b2e3374e2715", "requires": { - "@parity/dapp-accounts": "github:paritytech/dapp-accounts#8abec008e59c4c4df8902188371ab83c77d1d3de" + "@parity/dapp-accounts": "github:paritytech/dapp-accounts#ca55be1774563862e7b0cc72740d0747a60036b8" } }, "@parity/dapp-chaindeploy": { - "version": "github:paritytech/dapp-chaindeploy#922c728698187db94a732cd0b2c583715b9b50b8" + "version": "github:paritytech/dapp-chaindeploy#2adc0da8514c171957823d1b72131f48274300b9" }, "@parity/dapp-contract": { - "version": "github:paritytech/dapp-contract#f21537da25990a7dad4b6ec06dbb6aea4046a2a8", + "version": "github:paritytech/dapp-contract#0196d82260dbb54b468a27bed94fb0b8669ca6a0", "requires": { - "@parity/dapp-account": "github:paritytech/dapp-account#67eec35f3ef21aab77aee5c2ca4b8ae0bf5251f0" + "@parity/dapp-account": "github:paritytech/dapp-account#65b03835243219a678c1a517e2eb69845a097dcd" } }, "@parity/dapp-contracts": { - "version": "github:paritytech/dapp-contracts#6da86f65d367cab14c372825d8b25553d05ad4e8", + "version": "github:paritytech/dapp-contracts#30db6a5e6aba7cc7626972f9569319549efb7888", "requires": { - "@parity/dapp-account": "github:paritytech/dapp-account#67eec35f3ef21aab77aee5c2ca4b8ae0bf5251f0", - "@parity/dapp-accounts": "github:paritytech/dapp-accounts#8abec008e59c4c4df8902188371ab83c77d1d3de" + "@parity/dapp-account": "github:paritytech/dapp-account#65b03835243219a678c1a517e2eb69845a097dcd", + "@parity/dapp-accounts": "github:paritytech/dapp-accounts#ca55be1774563862e7b0cc72740d0747a60036b8" } }, "@parity/dapp-dapp-accounts": { - "version": "github:paritytech/dapp-dapp-accounts#d1692a1ed49809d4b0572e48aad0a4ed2926a10a" + "version": "github:paritytech/dapp-dapp-accounts#4cdbb5962c7a946da9df2fd80f120d9195087d41" }, "@parity/dapp-dapp-methods": { - "version": "github:paritytech/dapp-dapp-methods#3ecabdb95ef82578d5e1da4842a078db0db82d7b" + "version": "github:paritytech/dapp-dapp-methods#910fa7ba753a69d988146017a2096948463d33f4" }, "@parity/dapp-dapp-visible": { - "version": "github:paritytech/dapp-dapp-visible#337db256537c4c8195b46a1fd18fb9330d664180" + "version": "github:paritytech/dapp-dapp-visible#4506e9e9d25b837ab95d003fcd9f090db5cfefe8" }, "@parity/dapp-dappreg": { - "version": "github:paritytech/dapp-dappreg#10238d9074094fb1c97236d2416709db4267b4d2" + "version": "github:paritytech/dapp-dappreg#9cd360d7dc505b5661470ee9d6b98650c85b83b3" }, "@parity/dapp-develop": { - "version": "github:paritytech/dapp-develop#e7a32ecf2ff84772d2c437556b718cc1a56d656f", + "version": "github:paritytech/dapp-develop#85e436cdd1710e39ac45eb546ae8c029015a70ca", "requires": { - "@parity/dapp-contracts": "github:paritytech/dapp-contracts#6da86f65d367cab14c372825d8b25553d05ad4e8" + "@parity/dapp-contracts": "github:paritytech/dapp-contracts#30db6a5e6aba7cc7626972f9569319549efb7888" } }, "@parity/dapp-githubhint": { - "version": "github:paritytech/dapp-githubhint#76c60102473f80a240b99b9d1e7b84de3d7101c8" + "version": "github:paritytech/dapp-githubhint#8e299c739e1663d8590d6a8d345147e974341664" }, "@parity/dapp-home": { - "version": "github:paritytech/dapp-home#3a8c6c8efcb5c92390518f5d1cfcb3408089f218", + "version": "github:paritytech/dapp-home#d32073c41a048bb1be98cda2f569e70f6ee38070", "requires": { - "@parity/dapp-web": "github:paritytech/dapp-web#9fc091bad5fc7c960da3c90d630732ef48d7fdf7" + "@parity/dapp-web": "github:paritytech/dapp-web#fb0dbd86eeeacabda786150d1d1c2a9add8584d2" } }, "@parity/dapp-localtx": { - "version": "github:paritytech/dapp-localtx#a83b527d969f5f5de6ea02d6dcf1729e08b1ec02" + "version": "github:paritytech/dapp-localtx#087d32621c5ab87e72bd777b4dd580e9a3c844c4" }, "@parity/dapp-playground": { "version": "github:paritytech/dapp-playground#e136730fa64aceae2d7e0d2cd2aeea24d22b30f3", @@ -124,27 +124,13 @@ } }, "@parity/dapp-registry": { - "version": "github:paritytech/dapp-registry#8a3f61d10e858fe81b3731dd231b73e66a0879d9", - "requires": { - "@parity/api": "2.0.17", - "@parity/shared": "2.0.17", - "@parity/ui": "2.0.47", - "material-ui": "0.16.5" - } + "version": "github:paritytech/dapp-registry#654b44d9bccb324d27803c8751742d63e4c7690e" }, "@parity/dapp-settings": { - "version": "github:paritytech/dapp-settings#90737d6b34a62fe0843f8acbbf5669427cc2530a" + "version": "github:paritytech/dapp-settings#96d9f7a3c5e0d6fd21a8363bce1cf2a02bf746e7" }, "@parity/dapp-signaturereg": { - "version": "github:paritytech/dapp-signaturereg#31d70570a5c11bd5d954ccdcccc3dbb8f0e26f76", - "requires": { - "@parity/api": "2.0.17", - "@parity/shared": "2.0.17", - "moment": "2.17.0", - "react": "15.6.1", - "react-dom": "15.6.1", - "react-tap-event-plugin": "2.0.1" - } + "version": "github:paritytech/dapp-signaturereg#508ff60a6ed59d1d693e39fbcebce92f79ad9691" }, "@parity/dapp-signer": { "version": "github:paritytech/dapp-signer#96514150d210530eb3261399de84874b80a71f60", @@ -155,25 +141,25 @@ } }, "@parity/dapp-status": { - "version": "github:paritytech/dapp-status#4247a7885d24f7cd402264713ab37e4aab1779c0" + "version": "github:paritytech/dapp-status#397de2851688213091e161cd0c8251368406697d" }, "@parity/dapp-tokendeploy": { - "version": "github:paritytech/dapp-tokendeploy#09931fc07684e01ef0ecaa796a2ebea51ad90d6b" + "version": "github:paritytech/dapp-tokendeploy#ef5df286fa9eaed7a393fc93224004221d840af5" }, "@parity/dapp-tokenreg": { - "version": "github:paritytech/dapp-tokenreg#611f513f4c644c6513e58c4b06ea71a489a72cc7" + "version": "github:paritytech/dapp-tokenreg#530980bf9305755936b0692e63a4b7559b0f1027" }, "@parity/dapp-vaults": { - "version": "github:paritytech/dapp-vaults#b3c16b417e7b1cc671de91c719040924a6632806" + "version": "github:paritytech/dapp-vaults#1bd5de3994227e6b733e7b3e985117a59f0ad638" }, "@parity/dapp-wallet": { - "version": "github:paritytech/dapp-wallet#d7fb2e40b879676f99c36b53ce21480722b99b69", + "version": "github:paritytech/dapp-wallet#055fba4e8c3dd1e58ebc091a08df50583ac82fe0", "requires": { - "@parity/dapp-account": "github:paritytech/dapp-account#67eec35f3ef21aab77aee5c2ca4b8ae0bf5251f0" + "@parity/dapp-account": "github:paritytech/dapp-account#65b03835243219a678c1a517e2eb69845a097dcd" } }, "@parity/dapp-web": { - "version": "github:paritytech/dapp-web#9fc091bad5fc7c960da3c90d630732ef48d7fdf7", + "version": "github:paritytech/dapp-web#fb0dbd86eeeacabda786150d1d1c2a9add8584d2", "requires": { "base32.js": "0.1.0" } @@ -213,16 +199,16 @@ } }, "@parity/plugin-signer-account": { - "version": "github:paritytech/plugin-signer-account#b64a252097c09bc04cb14749d1d75778e22acbb6" + "version": "github:paritytech/plugin-signer-account#a00e131273becccab59e9852ec3313cb0fe19663" }, "@parity/plugin-signer-default": { - "version": "github:paritytech/plugin-signer-default#c6755830a3e20156f48a9d3967c152ee6a77fd1f" + "version": "github:paritytech/plugin-signer-default#54e7fa63063f2dcae409ead222ff87fbcc19f1f9" }, "@parity/plugin-signer-hardware": { - "version": "github:paritytech/plugin-signer-hardware#768207e21766ececac0295aa1a00b02925fd3766" + "version": "github:paritytech/plugin-signer-hardware#34b5562062bb1fe8ea6246c06d45624d7f309aa7" }, "@parity/plugin-signer-qr": { - "version": "github:paritytech/plugin-signer-qr#eef7108f90f625a550ad3cf1a970938eebf2bddb" + "version": "github:paritytech/plugin-signer-qr#8d937dd5f5d726fb22be72967fd9a472fa467bfd" }, "@parity/shapeshift": { "version": "2.0.17", @@ -2062,11 +2048,6 @@ "hoek": "2.16.3" } }, - "bowser": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.8.1.tgz", - "integrity": "sha512-NMPaR8ILtdLSWzxQtEs16XbxMcY8ohWGQ5V+TZSJS3fNUt/PBAGkF6YWO9B/4qWE23bK3o0moQKq8UyFEosYkA==" - }, "brace": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/brace/-/brace-0.9.0.tgz", @@ -2453,11 +2434,6 @@ "supports-color": "2.0.0" } }, - "change-emitter": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", - "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" - }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -2496,7 +2472,6 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -3056,6 +3031,16 @@ "unique-concat": "0.2.2" } }, + "cross-env": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.1.tgz", + "integrity": "sha512-Wtvr+z0Z06KO1JxjfRRsPC+df7biIOiuV4iZ73cThjFGkH+ULBZq1MkBdywEcJC4cTDbO6c8IjgRjfswx3YTBA==", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "is-windows": "1.0.1" + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -5465,905 +5450,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -7321,11 +6407,6 @@ } } }, - "hyphenate-style-name": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz", - "integrity": "sha1-MRYKNpMK2vH8BMYHT360FGXU7Es=" - }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -7591,15 +6672,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" }, - "inline-style-prefixer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz", - "integrity": "sha1-wVPH6I/YT+9cYC6VqBaLJ3BnH+c=", - "requires": { - "bowser": "1.8.1", - "hyphenate-style-name": "1.0.2" - } - }, "inquirer": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", @@ -8046,6 +7118,12 @@ "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", "dev": true }, + "is-windows": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", + "dev": true + }, "is-zip": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", @@ -8862,7 +7940,8 @@ "lodash.merge": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", + "dev": true }, "lodash.omitby": { "version": "4.6.0", @@ -9093,24 +8172,6 @@ "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", "dev": true }, - "material-ui": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/material-ui/-/material-ui-0.16.5.tgz", - "integrity": "sha1-u4ZhqsfKyMsiOj529PV+4YpK78E=", - "requires": { - "babel-runtime": "6.26.0", - "inline-style-prefixer": "2.0.5", - "keycode": "2.1.9", - "lodash.merge": "4.6.0", - "lodash.throttle": "4.1.1", - "react-addons-create-fragment": "15.6.2", - "react-addons-transition-group": "15.6.2", - "react-event-listener": "0.4.5", - "recompose": "0.20.2", - "simple-assign": "0.1.0", - "warning": "3.0.0" - } - }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", @@ -9302,7 +8363,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "1.1.8" } @@ -11560,16 +10621,6 @@ } } }, - "react-addons-create-fragment": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/react-addons-create-fragment/-/react-addons-create-fragment-15.6.2.tgz", - "integrity": "sha1-o5TefCx77Na1R1uhuXrEcs58dPg=", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, "react-addons-perf": { "version": "15.4.2", "resolved": "https://registry.npmjs.org/react-addons-perf/-/react-addons-perf-15.4.2.tgz", @@ -11763,7 +10814,7 @@ "react-qr-reader": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/react-qr-reader/-/react-qr-reader-1.1.3.tgz", - "integrity": "sha512-ruBF8KaSwUW9nbzjO4rA7/HOCGYZuNUz9od7uBRy8SRBi24nwxWWmwa2z8R6vPGDRglA0y2Qk1aVBuC1olTnHw==", + "integrity": "sha1-dDmnZvyZPLj17u/HLCnblh1AswI=", "requires": { "jsqr": "git+https://github.com/JodusNodus/jsQR.git#5ba1acefa1cbb9b2bc92b49f503f2674e2ec212b", "prop-types": "15.5.10", @@ -11989,24 +11040,6 @@ "resolve": "1.5.0" } }, - "recompose": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.20.2.tgz", - "integrity": "sha1-ET1qx+KcpmTP/+wWtoHd3fFSULw=", - "requires": { - "change-emitter": "0.1.6", - "fbjs": "0.8.16", - "hoist-non-react-statics": "1.2.0", - "symbol-observable": "0.2.4" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" - } - } - }, "redbox-react": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.5.0.tgz", @@ -12718,11 +11751,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, - "simple-assign": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/simple-assign/-/simple-assign-0.1.0.tgz", - "integrity": "sha1-F/0wZqXz13OPUDIbsPFMooHMS6o=" - }, "simple-get": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", diff --git a/js/package.json b/js/package.json index 508b328f4..ba4193bf2 100644 --- a/js/package.json +++ b/js/package.json @@ -21,16 +21,12 @@ "Parity" ], "scripts": { - "build": "npm run build:lib && npm run build:app", + "build": "npm run build:lib && npm run build:app && npm run build:embed", "build:app": "webpack --progress --config webpack/app", "build:lib": "webpack --progress --config webpack/libraries", - "build:embed": "EMBED=1 node webpack/embed", + "build:embed": "cross-env EMBED=1 node webpack/embed", "build:i18n": "npm run clean && npm run build && babel-node ./scripts/build-i18n.js", - "ci:build": "npm run ci:build:lib && npm run ci:build:app && npm run ci:build:embed", - "ci:build:app": "NODE_ENV=production webpack --progress --config webpack/app", - "ci:build:lib": "NODE_ENV=production webpack --progress --config webpack/libraries", - "ci:build:npm": "NODE_ENV=production webpack --progress --config webpack/npm", - "ci:build:embed": "NODE_ENV=production EMBED=1 node webpack/embed", + "ci:build": "cross-env NODE_ENV=production npm run build", "clean": "rm -rf ./.build ./.coverage ./.happypack ./build ./node_modules/.cache", "coveralls": "npm run testCoverage && coveralls < coverage/lcov.info", "lint": "npm run lint:css && npm run lint:js", @@ -44,9 +40,9 @@ "start": "npm run clean && npm install && npm run build:lib && npm run start:app", "start:app": "node webpack/dev.server", "start:electron": "npm run build:app && electron .build/", - "test": "NODE_ENV=test mocha --compilers ejs:ejsify 'src/**/*.spec.js'", - "test:coverage": "NODE_ENV=test istanbul cover _mocha -- --compilers ejs:ejsify 'src/**/*.spec.js'", - "test:e2e": "NODE_ENV=test mocha 'src/**/*.e2e.js'", + "test": "cross-env NODE_ENV=test mocha --compilers ejs:ejsify 'src/**/*.spec.js'", + "test:coverage": "cross-env NODE_ENV=test istanbul cover _mocha -- --compilers ejs:ejsify 'src/**/*.spec.js'", + "test:e2e": "cross-env NODE_ENV=test mocha 'src/**/*.e2e.js'", "test:npm": "(cd .npmjs && npm i) && node test/npmParity && node test/npmJsonRpc && (rm -rf .npmjs/node_modules)", "prepush": "npm run lint:cached" }, @@ -75,6 +71,7 @@ "copy-webpack-plugin": "4.0.1", "core-js": "2.4.1", "coveralls": "2.11.16", + "cross-env": "5.1.1", "css-loader": "0.28.4", "ejs-loader": "0.3.0", "ejsify": "1.0.0", diff --git a/js/src/embed.js b/js/src/embed.js index a1a2573d1..ace85a016 100644 --- a/js/src/embed.js +++ b/js/src/embed.js @@ -31,6 +31,7 @@ import { patchApi } from '@parity/shared/util/tx'; import SecureApi from './secureApi'; +import './ShellExtend'; import '@parity/shared/environment'; import '@parity/shared/assets/fonts/Roboto/font.css'; import '@parity/shared/assets/fonts/RobotoMono/font.css'; @@ -70,8 +71,6 @@ class FrameSecureApi extends SecureApi { connect () { // Do nothing - this API does not need connecting this.emit('connecting'); - // Fetch settings - this._fetchSettings(); // Fire connected event with some delay. setTimeout(() => { this.emit('connected'); @@ -99,7 +98,7 @@ transport.uiUrl = uiUrl.replace('http://', '').replace('https://', ''); const api = new FrameSecureApi(transport); patchApi(api); -ContractInstances.create(api); +ContractInstances.get(api); const store = initStore(api, null, true); @@ -125,3 +124,9 @@ ReactDOM.render( , container ); + +// testing, signer plugins +import '@parity/plugin-signer-account'; +import '@parity/plugin-signer-default'; +import '@parity/plugin-signer-hardware'; +import '@parity/plugin-signer-qr'; diff --git a/js/webpack/app.js b/js/webpack/app.js index d9ec3e48a..8fbe18d85 100644 --- a/js/webpack/app.js +++ b/js/webpack/app.js @@ -46,7 +46,7 @@ const isProd = ENV === 'production'; const isEmbed = EMBED === '1' || EMBED === 'true'; const entry = isEmbed - ? { embed: './embed.js' } + ? { embed: ['babel-polyfill', './embed.js'] } : { bundle: ['babel-polyfill', './index.parity.js'] }; module.exports = { @@ -238,7 +238,7 @@ module.exports = { new HtmlWebpackPlugin({ title: 'Parity Bar', filename: 'embed.html', - template: './index.ejs', + template: './index.parity.ejs', favicon: FAVICON, chunks: ['embed'] }) From 4c8780f1886ca01346501a25a34e70385b7ee3c2 Mon Sep 17 00:00:00 2001 From: Nicolas Gotchac Date: Thu, 9 Nov 2017 19:49:34 +0100 Subject: [PATCH 018/132] Use nonce reservation per address --- parity/rpc_apis.rs | 13 ++++++------- rpc/src/v1/helpers/dispatch.rs | 30 ++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/parity/rpc_apis.rs b/parity/rpc_apis.rs index be9dbdeb1..6c48adb69 100644 --- a/parity/rpc_apis.rs +++ b/parity/rpc_apis.rs @@ -239,10 +239,10 @@ impl FullDependencies { use parity_rpc::v1::*; macro_rules! add_signing_methods { - ($namespace:ident, $handler:expr, $deps:expr, $nonces:expr) => { + ($namespace:ident, $handler:expr, $deps:expr) => { { let deps = &$deps; - let dispatcher = FullDispatcher::new(deps.client.clone(), deps.miner.clone(), $nonces); + let dispatcher = FullDispatcher::new(deps.client.clone(), deps.miner.clone(), deps.fetch.pool()); if deps.signer_service.is_enabled() { $handler.extend_with($namespace::to_delegate(SigningQueueClient::new(&deps.signer_service, dispatcher, deps.remote.clone(), &deps.secret_store))) } else { @@ -252,11 +252,10 @@ impl FullDependencies { } } - let nonces = Arc::new(Mutex::new(dispatch::Reservations::with_pool(self.fetch.pool()))); let dispatcher = FullDispatcher::new( self.client.clone(), self.miner.clone(), - nonces.clone(), + self.fetch.pool(), ); for api in apis { match *api { @@ -286,7 +285,7 @@ impl FullDependencies { let filter_client = EthFilterClient::new(self.client.clone(), self.miner.clone()); handler.extend_with(filter_client.to_delegate()); - add_signing_methods!(EthSigning, handler, self, nonces.clone()); + add_signing_methods!(EthSigning, handler, self); } }, Api::EthPubSub => { @@ -323,7 +322,7 @@ impl FullDependencies { ).to_delegate()); if !for_generic_pubsub { - add_signing_methods!(ParitySigning, handler, self, nonces.clone()); + add_signing_methods!(ParitySigning, handler, self); } }, Api::ParityPubSub => { @@ -440,7 +439,7 @@ impl LightDependencies { self.on_demand.clone(), self.cache.clone(), self.transaction_queue.clone(), - Arc::new(Mutex::new(dispatch::Reservations::with_pool(self.fetch.pool()))), + self.fetch.pool(), ); macro_rules! add_signing_methods { diff --git a/rpc/src/v1/helpers/dispatch.rs b/rpc/src/v1/helpers/dispatch.rs index c556226b5..9220790e8 100644 --- a/rpc/src/v1/helpers/dispatch.rs +++ b/rpc/src/v1/helpers/dispatch.rs @@ -19,6 +19,7 @@ use std::fmt::Debug; use std::ops::Deref; use std::sync::Arc; +use std::collections::HashMap; use light::cache::Cache as LightDataCache; use light::client::LightChainClient; @@ -32,6 +33,7 @@ use util::Address; use bytes::Bytes; use parking_lot::{Mutex, RwLock}; use stats::Corpus; +use futures_cpupool::CpuPool; use ethkey::Signature; use ethsync::LightSync; @@ -87,16 +89,20 @@ pub trait Dispatcher: Send + Sync + Clone { pub struct FullDispatcher { client: Arc, miner: Arc, - nonces: Arc>, + nonces: Arc>>, + pool: CpuPool, } impl FullDispatcher { /// Create a `FullDispatcher` from Arc references to a client and miner. - pub fn new(client: Arc, miner: Arc, nonces: Arc>) -> Self { + pub fn new(client: Arc, miner: Arc, pool: CpuPool) -> Self { + let nonces = Arc::new(Mutex::new(HashMap::new())); + FullDispatcher { client, miner, nonces, + pool, } } } @@ -107,6 +113,7 @@ impl Clone for FullDispatcher { client: self.client.clone(), miner: self.miner.clone(), nonces: self.nonces.clone(), + pool: self.pool.clone(), } } } @@ -162,7 +169,10 @@ impl Dispatcher for FullDispatcher>, /// Nonce reservations - pub nonces: Arc>, + pub nonces: Arc>>, + /// Cpu pool + pub pool: CpuPool, } impl LightDispatcher { @@ -265,8 +277,10 @@ impl LightDispatcher { on_demand: Arc, cache: Arc>, transaction_queue: Arc>, - nonces: Arc>, + pool: CpuPool, ) -> Self { + let nonces = Arc::new(Mutex::new(HashMap::new())); + LightDispatcher { sync, client, @@ -274,6 +288,7 @@ impl LightDispatcher { cache, transaction_queue, nonces, + pool, } } @@ -379,10 +394,13 @@ impl Dispatcher for LightDispatcher { } let nonces = self.nonces.clone(); + let pool = self.pool.clone(); Box::new(self.next_nonce(filled.from) .map_err(|_| errors::no_light_peers()) .and_then(move |nonce| { - let reserved = nonces.lock().reserve_nonce(nonce); + let reserved = nonces.lock().entry(filled.from) + .or_insert(nonce::Reservations::with_pool(pool)) + .reserve_nonce(nonce); ProspectiveSigner::new(accounts, filled, chain_id, reserved, password) })) } From 5977e36687914ae956385b0b3c8e924266f670a6 Mon Sep 17 00:00:00 2001 From: Office-Julia Date: Fri, 10 Nov 2017 03:05:07 +0700 Subject: [PATCH 019/132] Update CHANGELOG-1.7.md --- docs/CHANGELOG-1.7.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/CHANGELOG-1.7.md b/docs/CHANGELOG-1.7.md index 4042d56da..361627312 100644 --- a/docs/CHANGELOG-1.7.md +++ b/docs/CHANGELOG-1.7.md @@ -1,3 +1,18 @@ +### [v1.7.8](https://github.com/paritytech/parity/releases/tag/v1.7.8) d5fcf3b8ed74e241ca24db19bab1a44f6ea398bf + +- [stable] Refactor static context check in CREATE [#6889](https://github.com/paritytech/parity/pull/6889) +- fix #6228: do not display eth price in cli for etc [#6877](https://github.com/paritytech/parity/pull/6877) +- fix mining help [#6885](https://github.com/paritytech/parity/pull/6885) +- [stable] v1.7.8 [#6890](https://github.com/paritytech/parity/pull/6890) +- Refactor static context check in CREATE. [#6886](https://github.com/paritytech/parity/pull/6886) +- Cleanup some configuration options [#6878](https://github.com/paritytech/parity/pull/6878) +- Fix serialization of non-localized transactions [#6868](https://github.com/paritytech/parity/pull/6868) +- updated ntp to version 0.3 [#6854](https://github.com/paritytech/parity/pull/6854) +- Align README with 1.8 and prepare CHANGELOG with 1.8.1 [#6833](https://github.com/paritytech/parity/pull/6833) +- Return error on timed unlock [#6777](https://github.com/paritytech/parity/pull/6777) +- Fix dapps tests in master [#6866](https://github.com/paritytech/parity/pull/6866) +- [Beta] Add ECIP1017 to Morden config (#6810) [#6845](https://github.com/paritytech/parity/pull/6845) + ## Parity [v1.7.7](https://github.com/paritytech/parity/releases/tag/v1.7.7) (2017-10-15) Parity 1.7.7 Fixes an issue with auto-update system. Updating is recommended, but not required for Byzantium. From 73d195ab79982d27209283f29d009e73d6f857bd Mon Sep 17 00:00:00 2001 From: Office-Julia Date: Fri, 10 Nov 2017 03:13:09 +0700 Subject: [PATCH 020/132] Update CHANGELOG-1.7.md --- docs/CHANGELOG-1.7.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/CHANGELOG-1.7.md b/docs/CHANGELOG-1.7.md index 361627312..fc28e6a45 100644 --- a/docs/CHANGELOG-1.7.md +++ b/docs/CHANGELOG-1.7.md @@ -1,17 +1,17 @@ -### [v1.7.8](https://github.com/paritytech/parity/releases/tag/v1.7.8) d5fcf3b8ed74e241ca24db19bab1a44f6ea398bf +### Parity [v1.7.8](https://github.com/paritytech/parity/releases/tag/v1.7.8) (2017-10-27) -- [stable] Refactor static context check in CREATE [#6889](https://github.com/paritytech/parity/pull/6889) -- fix #6228: do not display eth price in cli for etc [#6877](https://github.com/paritytech/parity/pull/6877) -- fix mining help [#6885](https://github.com/paritytech/parity/pull/6885) -- [stable] v1.7.8 [#6890](https://github.com/paritytech/parity/pull/6890) -- Refactor static context check in CREATE. [#6886](https://github.com/paritytech/parity/pull/6886) -- Cleanup some configuration options [#6878](https://github.com/paritytech/parity/pull/6878) -- Fix serialization of non-localized transactions [#6868](https://github.com/paritytech/parity/pull/6868) -- updated ntp to version 0.3 [#6854](https://github.com/paritytech/parity/pull/6854) -- Align README with 1.8 and prepare CHANGELOG with 1.8.1 [#6833](https://github.com/paritytech/parity/pull/6833) -- Return error on timed unlock [#6777](https://github.com/paritytech/parity/pull/6777) -- Fix dapps tests in master [#6866](https://github.com/paritytech/parity/pull/6866) -- [Beta] Add ECIP1017 to Morden config (#6810) [#6845](https://github.com/paritytech/parity/pull/6845) +- [stable] Refactor static context check in CREATE ([#6889](https://github.com/paritytech/parity/pull/6889)) +- Fix #6228: do not display eth price in cli for etc ([#6877](https://github.com/paritytech/parity/pull/6877)) +- Fix mining help ([#6885](https://github.com/paritytech/parity/pull/6885)) +- [stable] v1.7.8 ([#6890](https://github.com/paritytech/parity/pull/6890)) +- Refactor static context check in CREATE. ([#6886](https://github.com/paritytech/parity/pull/6886)) +- Cleanup some configuration options ([#6878](https://github.com/paritytech/parity/pull/6878)) +- Fix serialization of non-localized transactions ([#6868](https://github.com/paritytech/parity/pull/6868)) +- Updated NTP to version 0.3 ([#6854](https://github.com/paritytech/parity/pull/6854)) +- Align README with 1.8 and prepare CHANGELOG with 1.8.1 ([#6833](https://github.com/paritytech/parity/pull/6833)) +- Return error on timed unlock ([#6777](https://github.com/paritytech/parity/pull/6777)) +- Fix dapps tests in master ([#6866](https://github.com/paritytech/parity/pull/6866)) +- [Beta] Add ECIP1017 to Morden config (#6810) ([#6845](https://github.com/paritytech/parity/pull/6845)) ## Parity [v1.7.7](https://github.com/paritytech/parity/releases/tag/v1.7.7) (2017-10-15) From 261c0d53684f7f461970a41e90bc965eef8cc70a Mon Sep 17 00:00:00 2001 From: keorn Date: Thu, 9 Nov 2017 23:56:02 +0000 Subject: [PATCH 021/132] no default uncles --- ethcore/res/ethereum/kovan.json | 3 ++- ethcore/src/engines/authority_round/mod.rs | 8 ++++++++ ethcore/src/engines/mod.rs | 2 +- ethcore/src/engines/null_engine.rs | 2 ++ ethcore/src/ethereum/ethash.rs | 2 ++ json/src/spec/authority_round.rs | 2 ++ 6 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ethcore/res/ethereum/kovan.json b/ethcore/res/ethereum/kovan.json index 325b7cdf6..71eab873d 100644 --- a/ethcore/res/ethereum/kovan.json +++ b/ethcore/res/ethereum/kovan.json @@ -23,7 +23,8 @@ ] }, "validateScoreTransition": 1000000, - "validateStepTransition": 1500000 + "validateStepTransition": 1500000, + "maximumUncleCount": 2 } } }, diff --git a/ethcore/src/engines/authority_round/mod.rs b/ethcore/src/engines/authority_round/mod.rs index 27bd678a9..8c693ca07 100644 --- a/ethcore/src/engines/authority_round/mod.rs +++ b/ethcore/src/engines/authority_round/mod.rs @@ -65,6 +65,8 @@ pub struct AuthorityRoundParams { pub immediate_transitions: bool, /// Block reward in base units. pub block_reward: U256, + /// Number of accepted uncles. + pub maximum_uncle_count: usize, } impl From for AuthorityRoundParams { @@ -77,6 +79,7 @@ impl From for AuthorityRoundParams { validate_step_transition: p.validate_step_transition.map_or(0, Into::into), immediate_transitions: p.immediate_transitions.unwrap_or(false), block_reward: p.block_reward.map_or_else(Default::default, Into::into), + maximum_uncle_count: p.maximum_uncle_count.map_or(0, Into::into), } } } @@ -218,6 +221,7 @@ pub struct AuthorityRound { epoch_manager: Mutex, immediate_transitions: bool, block_reward: U256, + maximum_uncle_count: usize, machine: EthereumMachine, } @@ -365,6 +369,7 @@ impl AuthorityRound { epoch_manager: Mutex::new(EpochManager::blank()), immediate_transitions: our_params.immediate_transitions, block_reward: our_params.block_reward, + maximum_uncle_count: our_params.maximum_uncle_count, machine: machine, }); @@ -436,6 +441,8 @@ impl Engine for AuthorityRound { ] } + fn maximum_uncle_count(&self) -> usize { self.maximum_uncle_count } + fn populate_from_parent(&self, header: &mut Header, parent: &Header) { // Chain scoring: total weight is sqrt(U256::max_value())*height - step let new_difficulty = U256::from(U128::max_value()) + header_step(parent).expect("Header has been verified; qed").into() - self.step.load().into(); @@ -949,6 +956,7 @@ mod tests { validate_score_transition: 0, validate_step_transition: 0, immediate_transitions: true, + maximum_uncle_count: 0, block_reward: Default::default(), }; diff --git a/ethcore/src/engines/mod.rs b/ethcore/src/engines/mod.rs index 802b4ab88..89de861bb 100644 --- a/ethcore/src/engines/mod.rs +++ b/ethcore/src/engines/mod.rs @@ -192,7 +192,7 @@ pub trait Engine: Sync + Send { fn extra_info(&self, _header: &M::Header) -> BTreeMap { BTreeMap::new() } /// Maximum number of uncles a block is allowed to declare. - fn maximum_uncle_count(&self) -> usize { 2 } + fn maximum_uncle_count(&self) -> usize { 0 } /// The number of generations back that uncles can be. fn maximum_uncle_age(&self) -> usize { 6 } diff --git a/ethcore/src/engines/null_engine.rs b/ethcore/src/engines/null_engine.rs index 1c7edc99b..518f0f8f5 100644 --- a/ethcore/src/engines/null_engine.rs +++ b/ethcore/src/engines/null_engine.rs @@ -95,6 +95,8 @@ impl Engine for NullEngine { self.machine.note_rewards(block, &[(author, result_block_reward)], &uncle_rewards) } + fn maximum_uncle_count(&self) -> usize { 2 } + fn verify_local_seal(&self, _header: &M::Header) -> Result<(), M::Error> { Ok(()) } diff --git a/ethcore/src/ethereum/ethash.rs b/ethcore/src/ethereum/ethash.rs index a49ba2e2a..3ecccd9a8 100644 --- a/ethcore/src/ethereum/ethash.rs +++ b/ethcore/src/ethereum/ethash.rs @@ -181,6 +181,8 @@ impl Engine for Arc { } } + fn maximum_uncle_count(&self) -> usize { 2 } + fn populate_from_parent(&self, header: &mut Header, parent: &Header) { let difficulty = self.calculate_difficulty(header, parent); header.set_difficulty(difficulty); diff --git a/json/src/spec/authority_round.rs b/json/src/spec/authority_round.rs index 984e2eff2..b3e75a6b4 100644 --- a/json/src/spec/authority_round.rs +++ b/json/src/spec/authority_round.rs @@ -43,6 +43,8 @@ pub struct AuthorityRoundParams { /// Reward per block in wei. #[serde(rename="blockReward")] pub block_reward: Option, + #[serde(rename="maximumUncleCount")] + pub maximum_uncle_count: Option, } /// Authority engine deserialization. From 6ab03412eaa4e0be6a4aee4c8d74e735c50db7b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Fri, 10 Nov 2017 10:18:20 +0100 Subject: [PATCH 022/132] Fix js-glue. --- Cargo.lock | 28 ++++++++++++++-------------- dapps/js-glue/Cargo.toml | 2 +- dapps/js-glue/src/js.rs | 18 +++++++++--------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef424bae4..38801af79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2001,6 +2001,20 @@ dependencies = [ [[package]] name = "parity-dapps-glue" version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi_codegen 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_syntax 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-dapps-glue" +version = "1.9.1" dependencies = [ "aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2013,20 +2027,6 @@ dependencies = [ "syntex_syntax 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parity-dapps-glue" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "mime_guess 2.0.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "quasi 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quasi_codegen 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex_syntax 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parity-hash-fetch" version = "1.9.0" diff --git a/dapps/js-glue/Cargo.toml b/dapps/js-glue/Cargo.toml index 76c5457d7..4cad9cdab 100644 --- a/dapps/js-glue/Cargo.toml +++ b/dapps/js-glue/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Base Package for all Parity built-in dapps" name = "parity-dapps-glue" -version = "1.9.0" +version = "1.9.1" license = "GPL-3.0" authors = ["Parity Technologies "] build = "build.rs" diff --git a/dapps/js-glue/src/js.rs b/dapps/js-glue/src/js.rs index 49ccdd26f..d1d1cdda9 100644 --- a/dapps/js-glue/src/js.rs +++ b/dapps/js-glue/src/js.rs @@ -25,7 +25,7 @@ mod platform { use std::process::Command; pub static NPM_CMD: &'static str = "npm"; - pub fn handle_fd(cmd: &mut Command) -> &mut Command { + pub fn handle_cmd(cmd: &mut Command) -> &mut Command { cmd } } @@ -34,14 +34,14 @@ mod platform { mod platform { use std::process::{Command, Stdio}; - pub static NPM_CMD: &'static str = "npm.cmd"; + pub static NPM_CMD: &'static str = "cmd.exe"; // NOTE [ToDr] For some reason on windows - // We cannot have any file descriptors open when running a child process - // during build phase. - pub fn handle_fd(cmd: &mut Command) -> &mut Command { + // The command doesn't have %~dp0 set properly + // and it cannot load globally installed node.exe + pub fn handle_cmd(cmd: &mut Command) -> &mut Command { cmd.stdin(Stdio::null()) - .stdout(Stdio::null()) - .stderr(Stdio::null()) + .arg("/c") + .arg("npm.cmd") } } @@ -58,7 +58,7 @@ pub fn build(_path: &str, _dest: &str) { #[cfg(not(feature = "use-precompiled-js"))] pub fn build(path: &str, dest: &str) { - let child = platform::handle_fd(&mut Command::new(platform::NPM_CMD)) + let child = platform::handle_cmd(&mut Command::new(platform::NPM_CMD)) .arg("install") .arg("--no-progress") .current_dir(path) @@ -66,7 +66,7 @@ pub fn build(path: &str, dest: &str) { .unwrap_or_else(|e| die("Installing node.js dependencies with npm", e)); assert!(child.success(), "There was an error installing dependencies."); - let child = platform::handle_fd(&mut Command::new(platform::NPM_CMD)) + let child = platform::handle_cmd(&mut Command::new(platform::NPM_CMD)) .arg("run") .arg("build") .env("NODE_ENV", "production") From f0fc8ed5f87c90cbd4e1621bf95e8664caee3e12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Fri, 10 Nov 2017 10:50:23 +0100 Subject: [PATCH 023/132] Rimraf. --- js/package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/package.json b/js/package.json index ba4193bf2..3ff5a08ca 100644 --- a/js/package.json +++ b/js/package.json @@ -27,7 +27,7 @@ "build:embed": "cross-env EMBED=1 node webpack/embed", "build:i18n": "npm run clean && npm run build && babel-node ./scripts/build-i18n.js", "ci:build": "cross-env NODE_ENV=production npm run build", - "clean": "rm -rf ./.build ./.coverage ./.happypack ./build ./node_modules/.cache", + "clean": "rimraf ./.build ./.coverage ./.happypack ./build ./node_modules/.cache", "coveralls": "npm run testCoverage && coveralls < coverage/lcov.info", "lint": "npm run lint:css && npm run lint:js", "lint:cached": "npm run lint:css && npm run lint:js:cached", @@ -43,7 +43,7 @@ "test": "cross-env NODE_ENV=test mocha --compilers ejs:ejsify 'src/**/*.spec.js'", "test:coverage": "cross-env NODE_ENV=test istanbul cover _mocha -- --compilers ejs:ejsify 'src/**/*.spec.js'", "test:e2e": "cross-env NODE_ENV=test mocha 'src/**/*.e2e.js'", - "test:npm": "(cd .npmjs && npm i) && node test/npmParity && node test/npmJsonRpc && (rm -rf .npmjs/node_modules)", + "test:npm": "(cd .npmjs && npm i) && node test/npmParity && node test/npmJsonRpc && (rimraf .npmjs/node_modules)", "prepush": "npm run lint:cached" }, "devDependencies": { @@ -115,6 +115,7 @@ "react-addons-test-utils": "15.4.2", "react-hot-loader": "3.0.0-beta.6", "react-intl-aggregate-webpack-plugin": "0.0.1", + "rimraf": "2.6.2", "sinon": "1.17.7", "sinon-as-promised": "4.0.2", "sinon-chai": "2.8.0", From dd35c9b1f744cb907c774f6aa4fbd88decd06192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Fri, 10 Nov 2017 10:58:56 +0100 Subject: [PATCH 024/132] Bump parity-dapps-glue. --- Cargo.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 38801af79..80a7ef297 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1984,7 +1984,7 @@ dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", "node-health 0.1.0", - "parity-dapps-glue 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-hash-fetch 1.9.0", "parity-reactor 0.1.0", "parity-ui 1.9.0", @@ -1998,20 +1998,6 @@ dependencies = [ "zip 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parity-dapps-glue" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "mime_guess 2.0.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", - "quasi 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quasi_codegen 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex_syntax 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parity-dapps-glue" version = "1.9.1" @@ -2027,6 +2013,20 @@ dependencies = [ "syntex_syntax 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parity-dapps-glue" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi_codegen 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_syntax 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-hash-fetch" version = "1.9.0" @@ -2205,14 +2205,14 @@ dependencies = [ name = "parity-ui-dev" version = "1.9.0" dependencies = [ - "parity-dapps-glue 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-ui-old-dev" version = "1.9.0" dependencies = [ - "parity-dapps-glue 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2220,7 +2220,7 @@ name = "parity-ui-old-precompiled" version = "1.8.0" source = "git+https://github.com/paritytech/js-precompiled.git?branch=v1#94b0a89aac7eb5ddfdb53cd9bb039da6fdbf7583" dependencies = [ - "parity-dapps-glue 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2228,7 +2228,7 @@ name = "parity-ui-precompiled" version = "1.9.0" source = "git+https://github.com/paritytech/js-precompiled.git#1626d64235241e75c531eece004a4923d9d4fcc6" dependencies = [ - "parity-dapps-glue 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3643,7 +3643,7 @@ dependencies = [ "checksum order-stat 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "efa535d5117d3661134dbf1719b6f0ffe06f2375843b13935db186cd094105eb" "checksum ordered-float 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "58d25b6c0e47b20d05226d288ff434940296e7e2f8b877975da32f862152241f" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" -"checksum parity-dapps-glue 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9df5504a83dbbbd25ddb0645372bd09dff5a7716e18690a21211873b81606fe9" +"checksum parity-dapps-glue 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "261c025c67ba416e9fe63aa9b3236520ce3c74cfbe43590c9cdcec4ccc8180e4" "checksum parity-tokio-ipc 0.1.5 (git+https://github.com/nikvolf/parity-tokio-ipc)" = "" "checksum parity-ui-old-precompiled 1.8.0 (git+https://github.com/paritytech/js-precompiled.git?branch=v1)" = "" "checksum parity-ui-precompiled 1.9.0 (git+https://github.com/paritytech/js-precompiled.git)" = "" From 15c97336a432e3fbcb899455837feef41442b5db Mon Sep 17 00:00:00 2001 From: Nicolas Gotchac Date: Fri, 10 Nov 2017 17:11:04 +0100 Subject: [PATCH 025/132] Create hashmap in RPC Apis --- parity/rpc_apis.rs | 14 ++++++++------ rpc/src/v1/helpers/dispatch.rs | 12 +++++++----- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/parity/rpc_apis.rs b/parity/rpc_apis.rs index 6c48adb69..281b97589 100644 --- a/parity/rpc_apis.rs +++ b/parity/rpc_apis.rs @@ -15,8 +15,7 @@ // along with Parity. If not, see . use std::cmp::PartialEq; -use std::collections::BTreeMap; -use std::collections::HashSet; +use std::collections::{BTreeMap, HashSet, HashMap}; use std::str::FromStr; use std::sync::{Arc, Weak}; @@ -239,10 +238,10 @@ impl FullDependencies { use parity_rpc::v1::*; macro_rules! add_signing_methods { - ($namespace:ident, $handler:expr, $deps:expr) => { + ($namespace:ident, $handler:expr, $deps:expr, $nonces:expr) => { { let deps = &$deps; - let dispatcher = FullDispatcher::new(deps.client.clone(), deps.miner.clone(), deps.fetch.pool()); + let dispatcher = FullDispatcher::new(deps.client.clone(), deps.miner.clone(), deps.fetch.pool(), $nonces); if deps.signer_service.is_enabled() { $handler.extend_with($namespace::to_delegate(SigningQueueClient::new(&deps.signer_service, dispatcher, deps.remote.clone(), &deps.secret_store))) } else { @@ -252,10 +251,12 @@ impl FullDependencies { } } + let nonces = Arc::new(Mutex::new(HashMap::new())); let dispatcher = FullDispatcher::new( self.client.clone(), self.miner.clone(), self.fetch.pool(), + nonces.clone(), ); for api in apis { match *api { @@ -285,7 +286,7 @@ impl FullDependencies { let filter_client = EthFilterClient::new(self.client.clone(), self.miner.clone()); handler.extend_with(filter_client.to_delegate()); - add_signing_methods!(EthSigning, handler, self); + add_signing_methods!(EthSigning, handler, self, nonces.clone()); } }, Api::EthPubSub => { @@ -322,7 +323,7 @@ impl FullDependencies { ).to_delegate()); if !for_generic_pubsub { - add_signing_methods!(ParitySigning, handler, self); + add_signing_methods!(ParitySigning, handler, self, nonces.clone()); } }, Api::ParityPubSub => { @@ -440,6 +441,7 @@ impl LightDependencies { self.cache.clone(), self.transaction_queue.clone(), self.fetch.pool(), + Arc::new(Mutex::new(HashMap::new())), ); macro_rules! add_signing_methods { diff --git a/rpc/src/v1/helpers/dispatch.rs b/rpc/src/v1/helpers/dispatch.rs index 9220790e8..f17797619 100644 --- a/rpc/src/v1/helpers/dispatch.rs +++ b/rpc/src/v1/helpers/dispatch.rs @@ -95,9 +95,12 @@ pub struct FullDispatcher { impl FullDispatcher { /// Create a `FullDispatcher` from Arc references to a client and miner. - pub fn new(client: Arc, miner: Arc, pool: CpuPool) -> Self { - let nonces = Arc::new(Mutex::new(HashMap::new())); - + pub fn new( + client: Arc, + miner: Arc, + pool: CpuPool, + nonces: Arc>>, + ) -> Self { FullDispatcher { client, miner, @@ -278,9 +281,8 @@ impl LightDispatcher { cache: Arc>, transaction_queue: Arc>, pool: CpuPool, + nonces: Arc>>, ) -> Self { - let nonces = Arc::new(Mutex::new(HashMap::new())); - LightDispatcher { sync, client, From be092e7c092aa0a73f44c9eb0792a9dca8929354 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 10 Nov 2017 18:31:31 +0100 Subject: [PATCH 026/132] prepare cargo configuration for upload of crates --- Cargo.lock | 10 +++++----- ethcore/Cargo.toml | 2 +- ethcore/light/Cargo.toml | 2 +- ethcore/vm/Cargo.toml | 2 +- logger/Cargo.toml | 2 +- util/Cargo.toml | 2 +- util/bytes/Cargo.toml | 2 ++ util/hashdb/Cargo.toml | 4 +++- util/memorydb/Cargo.toml | 10 ++++++---- util/patricia_trie/Cargo.toml | 20 +++++++++----------- util/patricia_trie/src/triedbmut.rs | 1 + util/triehash/Cargo.toml | 2 ++ 12 files changed, 33 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4d139937f..103e86e7a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -529,7 +529,7 @@ dependencies = [ "num_cpus 1.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-machine 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia_trie 0.1.0", + "patricia-trie 0.1.0", "price-info 1.7.0", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -616,7 +616,7 @@ dependencies = [ "memory-cache 0.1.0", "memorydb 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia_trie 0.1.0", + "patricia-trie 0.1.0", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.0", "rlp_derive 0.1.0", @@ -754,7 +754,7 @@ dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia_trie 0.1.0", + "patricia-trie 0.1.0", "rlp 0.2.0", "rocksdb 0.4.5 (git+https://github.com/paritytech/rust-rocksdb)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2340,7 +2340,7 @@ name = "path" version = "0.1.0" [[package]] -name = "patricia_trie" +name = "patricia-trie" version = "0.1.0" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3413,7 +3413,7 @@ dependencies = [ "ethjson 0.1.0", "hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia_trie 0.1.0", + "patricia-trie 0.1.0", "rlp 0.2.0", ] diff --git a/ethcore/Cargo.toml b/ethcore/Cargo.toml index 2f77b8cb3..581889445 100644 --- a/ethcore/Cargo.toml +++ b/ethcore/Cargo.toml @@ -19,7 +19,7 @@ ethcore-bloom-journal = { path = "../util/bloom" } ethcore-bytes = { path = "../util/bytes" } hashdb = { path = "../util/hashdb" } memorydb = { path = "../util/memorydb" } -patricia_trie = { path = "../util/patricia_trie" } +patricia-trie = { path = "../util/patricia_trie" } ethcore-devtools = { path = "../devtools" } ethcore-io = { path = "../util/io" } ethcore-logger = { path = "../logger" } diff --git a/ethcore/light/Cargo.toml b/ethcore/light/Cargo.toml index 2b56a30bd..5f80bb654 100644 --- a/ethcore/light/Cargo.toml +++ b/ethcore/light/Cargo.toml @@ -13,7 +13,7 @@ ethcore-util = { path = "../../util" } ethcore-bigint = { path = "../../util/bigint" } ethcore-bytes = { path = "../../util/bytes" } memorydb = { path = "../../util/memorydb" } -patricia_trie = { path = "../../util/patricia_trie" } +patricia-trie = { path = "../../util/patricia_trie" } ethcore-network = { path = "../../util/network" } ethcore-io = { path = "../../util/io" } ethcore-devtools = { path = "../../devtools" } diff --git a/ethcore/vm/Cargo.toml b/ethcore/vm/Cargo.toml index 7f497a642..dd066dc7e 100644 --- a/ethcore/vm/Cargo.toml +++ b/ethcore/vm/Cargo.toml @@ -8,7 +8,7 @@ byteorder = "1.0" ethcore-util = { path = "../../util" } ethcore-bytes = { path = "../../util/bytes" } ethcore-bigint = { path = "../../util/bigint" } -patricia_trie = { path = "../../util/patricia_trie" } +patricia-trie = { path = "../../util/patricia_trie" } log = "0.3" common-types = { path = "../types" } ethjson = { path = "../../json" } diff --git a/logger/Cargo.toml b/logger/Cargo.toml index fc63701c4..b3424ada1 100644 --- a/logger/Cargo.toml +++ b/logger/Cargo.toml @@ -1,5 +1,5 @@ [package] -description = "Ethcore client." +description = "Log implementation for Parity" name = "ethcore-logger" version = "1.9.0" license = "GPL-3.0" diff --git a/util/Cargo.toml b/util/Cargo.toml index 9341a1bdd..a05a4d18f 100644 --- a/util/Cargo.toml +++ b/util/Cargo.toml @@ -26,7 +26,7 @@ tiny-keccak= "1.0" ethcore-logger = { path = "../logger" } triehash = { path = "triehash" } hashdb = { path = "hashdb" } -patricia_trie = { path = "patricia_trie" } +patricia-trie = { path = "patricia_trie" } ethcore-bytes = { path = "bytes" } memorydb = { path = "memorydb" } util-error = { path = "error" } diff --git a/util/bytes/Cargo.toml b/util/bytes/Cargo.toml index 96dc0abb1..b20e38a2a 100644 --- a/util/bytes/Cargo.toml +++ b/util/bytes/Cargo.toml @@ -2,5 +2,7 @@ name = "ethcore-bytes" version = "0.1.0" authors = ["Parity Technologies "] +description = "byte utilities for Parity" +license = "GPL-3.0" [dependencies] diff --git a/util/hashdb/Cargo.toml b/util/hashdb/Cargo.toml index d74e47a7e..bd4fd8a16 100644 --- a/util/hashdb/Cargo.toml +++ b/util/hashdb/Cargo.toml @@ -2,7 +2,9 @@ name = "hashdb" version = "0.1.0" authors = ["Parity Technologies "] +description = "trait for hash-keyed databases." +license = "GPL-3.0" [dependencies] elastic-array = "0.9" -ethcore-bigint = { path = "../bigint" } +ethcore-bigint = { version = "0.1.3", path = "../bigint" } diff --git a/util/memorydb/Cargo.toml b/util/memorydb/Cargo.toml index 1df95a049..f651f92d5 100644 --- a/util/memorydb/Cargo.toml +++ b/util/memorydb/Cargo.toml @@ -2,12 +2,14 @@ name = "memorydb" version = "0.1.0" authors = ["Parity Technologies "] +description = "in-memory implementation of hashdb" +license = "GPL-3.0" [dependencies] bigint = "4.0" elastic-array = "0.9" heapsize = "0.4" -ethcore-bigint = { path = "../bigint", features = ["heapsizeof"] } -hash = { path = "../hash" } -hashdb = { path = "../hashdb" } -rlp = { path = "../rlp" } +ethcore-bigint = { version = "0.1.3", path = "../bigint", features = ["heapsizeof"] } +hash = { version = "0.1.0", path = "../hash" } +hashdb = { version = "0.1.0", path = "../hashdb" } +rlp = { version = "0.2.0", path = "../rlp" } diff --git a/util/patricia_trie/Cargo.toml b/util/patricia_trie/Cargo.toml index 5886a4e35..295bae867 100644 --- a/util/patricia_trie/Cargo.toml +++ b/util/patricia_trie/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "patricia_trie" +name = "patricia-trie" version = "0.1.0" authors = ["Parity Technologies "] @@ -7,13 +7,11 @@ authors = ["Parity Technologies "] elastic-array = "0.9" log = "0.3" rand = "0.3" -ethcore-bytes = { path = "../bytes" } -ethcore-bigint = { path = "../bigint" } -hash = { path = "../hash" } -hashdb = { path = "../hashdb" } -rlp = { path = "../rlp" } -triehash = { path = "../triehash" } -memorydb = { path = "../memorydb" } -ethcore-logger = { path = "../../logger" } - - +ethcore-bytes = { version = "0.1.0", path = "../bytes" } +ethcore-bigint = { version = "0.1.3", path = "../bigint" } +hash = { version = "0.1.0", path = "../hash" } +hashdb = { version = "0.1.0", path = "../hashdb" } +rlp = { version = "0.2.0", path = "../rlp" } +triehash = { version = "0.1.0", path = "../triehash" } +memorydb = { version = "0.1.0", path = "../memorydb" } +ethcore-logger = { version = "1.9.0", path = "../../logger" } diff --git a/util/patricia_trie/src/triedbmut.rs b/util/patricia_trie/src/triedbmut.rs index d0e22d2fb..97c3c93e7 100644 --- a/util/patricia_trie/src/triedbmut.rs +++ b/util/patricia_trie/src/triedbmut.rs @@ -942,6 +942,7 @@ impl<'a> Drop for TrieDBMut<'a> { #[cfg(test)] mod tests { extern crate triehash; + use self::triehash::trie_root; use hashdb::*; use memorydb::*; diff --git a/util/triehash/Cargo.toml b/util/triehash/Cargo.toml index cc18a6ea8..1fae40dfc 100644 --- a/util/triehash/Cargo.toml +++ b/util/triehash/Cargo.toml @@ -2,6 +2,8 @@ name = "triehash" version = "0.1.0" authors = ["Parity Technologies "] +description = "in memory patricia trie operations" +license = "GPL-3.0" [dependencies] rlp = { path = "../rlp" } From 5423518e1efcf64bf4153c634d690f37ab798226 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 10 Nov 2017 18:43:18 +0100 Subject: [PATCH 027/132] update bigint version number --- util/memorydb/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/memorydb/Cargo.toml b/util/memorydb/Cargo.toml index f651f92d5..0c2f954e1 100644 --- a/util/memorydb/Cargo.toml +++ b/util/memorydb/Cargo.toml @@ -9,7 +9,7 @@ license = "GPL-3.0" bigint = "4.0" elastic-array = "0.9" heapsize = "0.4" -ethcore-bigint = { version = "0.1.3", path = "../bigint", features = ["heapsizeof"] } +ethcore-bigint = { version = "0.2", path = "../bigint", features = ["heapsizeof"] } hash = { version = "0.1.0", path = "../hash" } hashdb = { version = "0.1.0", path = "../hashdb" } rlp = { version = "0.2.0", path = "../rlp" } From 5c8f39c3bd452174b5126635a9e7a7af2fa3f979 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 10 Nov 2017 18:46:35 +0100 Subject: [PATCH 028/132] update ethcore-bigint version --- Cargo.lock | 12 ++++++------ util/hashdb/Cargo.toml | 4 ++-- util/patricia_trie/Cargo.toml | 4 ++-- util/triehash/Cargo.toml | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 177b1b5be..d2f8485cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -494,7 +494,7 @@ dependencies = [ "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "hardware-wallet 1.9.0", "hash 0.1.0", - "hashdb 0.1.0", + "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.0-a.0 (git+https://github.com/paritytech/hyper)", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -731,7 +731,7 @@ dependencies = [ "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", - "hashdb 0.1.0", + "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "journaldb 0.1.0", "kvdb 0.1.0", @@ -1037,7 +1037,7 @@ dependencies = [ [[package]] name = "hashdb" -version = "0.1.0" +version = "0.1.1" dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-bigint 0.2.1", @@ -1223,7 +1223,7 @@ dependencies = [ "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", - "hashdb 0.1.0", + "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb 0.1.0", "kvdb-memorydb 0.1.0", @@ -1513,7 +1513,7 @@ dependencies = [ "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-bigint 0.2.1", "hash 0.1.0", - "hashdb 0.1.0", + "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.0", ] @@ -2334,7 +2334,7 @@ dependencies = [ "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", "hash 0.1.0", - "hashdb 0.1.0", + "hashdb 0.1.1", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.1.0", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/util/hashdb/Cargo.toml b/util/hashdb/Cargo.toml index bd4fd8a16..0060afbaa 100644 --- a/util/hashdb/Cargo.toml +++ b/util/hashdb/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "hashdb" -version = "0.1.0" +version = "0.1.1" authors = ["Parity Technologies "] description = "trait for hash-keyed databases." license = "GPL-3.0" [dependencies] elastic-array = "0.9" -ethcore-bigint = { version = "0.1.3", path = "../bigint" } +ethcore-bigint = { version = "0.2.1", path = "../bigint" } diff --git a/util/patricia_trie/Cargo.toml b/util/patricia_trie/Cargo.toml index 295bae867..7b5ae3879 100644 --- a/util/patricia_trie/Cargo.toml +++ b/util/patricia_trie/Cargo.toml @@ -8,9 +8,9 @@ elastic-array = "0.9" log = "0.3" rand = "0.3" ethcore-bytes = { version = "0.1.0", path = "../bytes" } -ethcore-bigint = { version = "0.1.3", path = "../bigint" } +ethcore-bigint = { version = "0.2.1", path = "../bigint" } hash = { version = "0.1.0", path = "../hash" } -hashdb = { version = "0.1.0", path = "../hashdb" } +hashdb = { version = "0.1.1", path = "../hashdb" } rlp = { version = "0.2.0", path = "../rlp" } triehash = { version = "0.1.0", path = "../triehash" } memorydb = { version = "0.1.0", path = "../memorydb" } diff --git a/util/triehash/Cargo.toml b/util/triehash/Cargo.toml index 1fae40dfc..2731a4685 100644 --- a/util/triehash/Cargo.toml +++ b/util/triehash/Cargo.toml @@ -6,6 +6,6 @@ description = "in memory patricia trie operations" license = "GPL-3.0" [dependencies] -rlp = { path = "../rlp" } -ethcore-bigint = { path = "../bigint" } -hash = { path = "../hash" } +rlp = { version = "0.2", path = "../rlp" } +ethcore-bigint = { version = "0.2.1", path = "../bigint" } +hash = { version = "0.1", path = "../hash" } From ec5519ccd153fd62ebbd501bebe1f8553f85d1cf Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 10 Nov 2017 19:04:55 +0100 Subject: [PATCH 029/132] rename hash crate to keccak-hash --- Cargo.lock | 62 +++++++++++++++++------------------ Cargo.toml | 2 +- dapps/Cargo.toml | 2 +- dapps/src/lib.rs | 2 +- ethash/Cargo.toml | 2 +- ethash/src/keccak.rs | 2 +- ethcore/Cargo.toml | 2 +- ethcore/evm/Cargo.toml | 2 +- ethcore/evm/src/lib.rs | 2 +- ethcore/light/Cargo.toml | 2 +- ethcore/light/src/lib.rs | 2 +- ethcore/src/lib.rs | 2 +- ethcore/types/Cargo.toml | 2 +- ethcore/types/src/lib.rs | 2 +- ethcore/vm/Cargo.toml | 2 +- ethcore/vm/src/lib.rs | 2 +- hash-fetch/Cargo.toml | 2 +- hash-fetch/src/lib.rs | 2 +- parity/main.rs | 2 +- rpc/Cargo.toml | 2 +- rpc/src/lib.rs | 2 +- rpc_client/Cargo.toml | 2 +- rpc_client/src/lib.rs | 2 +- secret_store/Cargo.toml | 2 +- secret_store/src/lib.rs | 2 +- stratum/Cargo.toml | 2 +- stratum/src/lib.rs | 2 +- sync/Cargo.toml | 2 +- sync/src/lib.rs | 2 +- util/Cargo.toml | 2 +- util/bloomable/Cargo.toml | 2 +- util/bloomable/tests/test.rs | 2 +- util/hash/Cargo.toml | 4 +-- util/journaldb/Cargo.toml | 2 +- util/journaldb/src/lib.rs | 2 +- util/memorydb/Cargo.toml | 2 +- util/memorydb/src/lib.rs | 2 +- util/network/Cargo.toml | 2 +- util/network/src/lib.rs | 2 +- util/patricia_trie/Cargo.toml | 2 +- util/patricia_trie/src/lib.rs | 2 +- util/src/lib.rs | 2 +- util/triehash/Cargo.toml | 2 +- util/triehash/src/lib.rs | 2 +- 44 files changed, 75 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d2f8485cb..240765c6c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -168,7 +168,7 @@ name = "bloomable" version = "0.1.0" dependencies = [ "ethcore-bigint 0.2.1", - "hash 0.1.0", + "keccak-hash 0.1.0", ] [[package]] @@ -284,8 +284,8 @@ dependencies = [ "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethjson 0.1.0", - "hash 0.1.0", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.0", "rlp 0.2.0", "rlp_derive 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -459,7 +459,7 @@ version = "1.9.0" dependencies = [ "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hash 0.1.0", + "keccak-hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "memmap 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -493,12 +493,12 @@ dependencies = [ "evm 0.1.0", "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "hardware-wallet 1.9.0", - "hash 0.1.0", "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.0-a.0 (git+https://github.com/paritytech/hyper)", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", "journaldb 0.1.0", + "keccak-hash 0.1.0", "kvdb 0.1.0", "kvdb-memorydb 0.1.0", "kvdb-rocksdb 0.1.0", @@ -592,9 +592,9 @@ dependencies = [ "ethcore-util 1.9.0", "evm 0.1.0", "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "hash 0.1.0", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.0", "kvdb 0.1.0", "kvdb-memorydb 0.1.0", "kvdb-rocksdb 0.1.0", @@ -645,9 +645,9 @@ dependencies = [ "ethcore-util 1.9.0", "ethcrypto 0.1.0", "ethkey 0.2.0", - "hash 0.1.0", "igd 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "ipnetwork 0.12.7 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.0", "libc 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -680,8 +680,8 @@ dependencies = [ "ethkey 0.2.0", "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hash 0.1.0", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.0", "kvdb 0.1.0", "kvdb-rocksdb 0.1.0", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -709,10 +709,10 @@ dependencies = [ "ethcore-devtools 1.9.0", "ethcore-logger 1.9.0", "ethcore-util 1.9.0", - "hash 0.1.0", "jsonrpc-core 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "jsonrpc-macros 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "jsonrpc-tcp-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", + "keccak-hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -730,10 +730,10 @@ dependencies = [ "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", - "hash 0.1.0", "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "journaldb 0.1.0", + "keccak-hash 0.1.0", "kvdb 0.1.0", "kvdb-memorydb 0.1.0", "libc 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -853,9 +853,9 @@ dependencies = [ "ethcore-network 1.9.0", "ethcore-util 1.9.0", "ethkey 0.2.0", - "hash 0.1.0", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "ipnetwork 0.12.7 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.0", "kvdb 0.1.0", "kvdb-memorydb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -877,8 +877,8 @@ dependencies = [ "ethcore-bigint 0.2.1", "ethcore-util 1.9.0", "evmjit 1.9.0", - "hash 0.1.0", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.0", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "memory-cache 0.1.0", @@ -1025,16 +1025,6 @@ dependencies = [ "trezor-sys 1.0.0 (git+https://github.com/paritytech/trezor-sys)", ] -[[package]] -name = "hash" -version = "0.1.0" -dependencies = [ - "cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1", - "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "hashdb" version = "0.1.1" @@ -1222,9 +1212,9 @@ dependencies = [ "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", - "hash 0.1.0", "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.0", "kvdb 0.1.0", "kvdb-memorydb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1329,6 +1319,16 @@ dependencies = [ "ws 0.7.1 (git+https://github.com/tomusdrw/ws-rs)", ] +[[package]] +name = "keccak-hash" +version = "0.1.0" +dependencies = [ + "cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ethcore-bigint 0.2.1", + "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -1512,9 +1512,9 @@ dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-bigint 0.2.1", - "hash 0.1.0", "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.0", "rlp 0.2.0", ] @@ -1920,11 +1920,11 @@ dependencies = [ "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hash 0.1.0", "ipnetwork 0.12.7 (registry+https://github.com/rust-lang/crates.io-index)", "isatty 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "journaldb 0.1.0", "jsonrpc-core 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", + "keccak-hash 0.1.0", "kvdb 0.1.0", "kvdb-rocksdb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1976,10 +1976,10 @@ dependencies = [ "fetch 0.1.0", "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hash 0.1.0", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "jsonrpc-http-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", + "keccak-hash 0.1.0", "linked-hash-map 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2037,7 +2037,7 @@ dependencies = [ "ethcore-util 1.9.0", "fetch 0.1.0", "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "hash 0.1.0", + "keccak-hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2123,7 +2123,6 @@ dependencies = [ "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "hardware-wallet 1.9.0", - "hash 0.1.0", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "jsonrpc-http-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", @@ -2131,6 +2130,7 @@ dependencies = [ "jsonrpc-macros 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "jsonrpc-pubsub 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "jsonrpc-ws-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", + "keccak-hash 0.1.0", "kvdb-memorydb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "macros 0.1.0", @@ -2161,9 +2161,9 @@ name = "parity-rpc-client" version = "1.4.0" dependencies = [ "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "hash 0.1.0", "jsonrpc-core 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "jsonrpc-ws-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", + "keccak-hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-rpc 1.9.0", @@ -2333,8 +2333,8 @@ dependencies = [ "ethcore-bigint 0.2.1", "ethcore-bytes 0.1.0", "ethcore-logger 1.9.0", - "hash 0.1.0", "hashdb 0.1.1", + "keccak-hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.1.0", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3246,7 +3246,7 @@ name = "triehash" version = "0.1.0" dependencies = [ "ethcore-bigint 0.2.1", - "hash 0.1.0", + "keccak-hash 0.1.0", "rlp 0.2.0", ] @@ -3397,7 +3397,7 @@ dependencies = [ "ethcore-bytes 0.1.0", "ethcore-util 1.9.0", "ethjson 0.1.0", - "hash 0.1.0", + "keccak-hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.1.0", "rlp 0.2.0", diff --git a/Cargo.toml b/Cargo.toml index a953dcef8..26dd940a6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,7 +58,7 @@ parity-updater = { path = "updater" } parity-whisper = { path = "whisper" } path = { path = "util/path" } panic_hook = { path = "panic_hook" } -hash = { path = "util/hash" } +keccak-hash = { path = "util/hash" } migration = { path = "util/migration" } kvdb = { path = "util/kvdb" } kvdb-rocksdb = { path = "util/kvdb-rocksdb" } diff --git a/dapps/Cargo.toml b/dapps/Cargo.toml index c0e856791..cd8497954 100644 --- a/dapps/Cargo.toml +++ b/dapps/Cargo.toml @@ -36,7 +36,7 @@ node-health = { path = "./node-health" } parity-hash-fetch = { path = "../hash-fetch" } parity-reactor = { path = "../util/reactor" } parity-ui = { path = "./ui" } -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } clippy = { version = "0.0.103", optional = true} diff --git a/dapps/src/lib.rs b/dapps/src/lib.rs index 36b5bec4c..9198222ee 100644 --- a/dapps/src/lib.rs +++ b/dapps/src/lib.rs @@ -43,7 +43,7 @@ extern crate node_health; extern crate parity_dapps_glue as parity_dapps; extern crate parity_hash_fetch as hash_fetch; extern crate parity_ui; -extern crate hash; +extern crate keccak_hash as hash; #[macro_use] extern crate futures; diff --git a/ethash/Cargo.toml b/ethash/Cargo.toml index e60d63c22..b6986af83 100644 --- a/ethash/Cargo.toml +++ b/ethash/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] [dependencies] log = "0.3" -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } primal = "0.2.3" parking_lot = "0.4" crunchy = "0.1.0" diff --git a/ethash/src/keccak.rs b/ethash/src/keccak.rs index 752b0230b..8ca4f5438 100644 --- a/ethash/src/keccak.rs +++ b/ethash/src/keccak.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -extern crate hash; +extern crate keccak_hash as hash; pub type H256 = [u8; 32]; diff --git a/ethcore/Cargo.toml b/ethcore/Cargo.toml index 581889445..56f06d1bf 100644 --- a/ethcore/Cargo.toml +++ b/ethcore/Cargo.toml @@ -67,7 +67,7 @@ table = { path = "../util/table" } bloomable = { path = "../util/bloomable" } vm = { path = "vm" } wasm = { path = "wasm" } -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } triehash = { path = "../util/triehash" } semantic_version = { path = "../util/semantic_version" } unexpected = { path = "../util/unexpected" } diff --git a/ethcore/evm/Cargo.toml b/ethcore/evm/Cargo.toml index 5cef517f4..b57e599bb 100644 --- a/ethcore/evm/Cargo.toml +++ b/ethcore/evm/Cargo.toml @@ -12,7 +12,7 @@ heapsize = "0.4" lazy_static = "0.2" log = "0.3" vm = { path = "../vm" } -hash = { path = "../../util/hash" } +keccak-hash = { path = "../../util/hash" } parking_lot = "0.4" memory-cache = { path = "../../util/memory_cache" } diff --git a/ethcore/evm/src/lib.rs b/ethcore/evm/src/lib.rs index 7ddbed19e..8a250f847 100644 --- a/ethcore/evm/src/lib.rs +++ b/ethcore/evm/src/lib.rs @@ -22,7 +22,7 @@ extern crate ethcore_bigint as bigint; extern crate parking_lot; extern crate heapsize; extern crate vm; -extern crate hash; +extern crate keccak_hash as hash; extern crate memory_cache; #[macro_use] diff --git a/ethcore/light/Cargo.toml b/ethcore/light/Cargo.toml index 5f80bb654..178a46650 100644 --- a/ethcore/light/Cargo.toml +++ b/ethcore/light/Cargo.toml @@ -32,7 +32,7 @@ serde = "1.0" serde_derive = "1.0" parking_lot = "0.4" stats = { path = "../../util/stats" } -hash = { path = "../../util/hash" } +keccak-hash = { path = "../../util/hash" } triehash = { path = "../../util/triehash" } kvdb = { path = "../../util/kvdb" } kvdb-rocksdb = { path = "../../util/kvdb-rocksdb" } diff --git a/ethcore/light/src/lib.rs b/ethcore/light/src/lib.rs index f9c3d89b8..039ed0e79 100644 --- a/ethcore/light/src/lib.rs +++ b/ethcore/light/src/lib.rs @@ -76,7 +76,7 @@ extern crate smallvec; extern crate stats; extern crate time; extern crate vm; -extern crate hash; +extern crate keccak_hash as hash; extern crate triehash; extern crate kvdb; extern crate kvdb_memorydb; diff --git a/ethcore/src/lib.rs b/ethcore/src/lib.rs index 4620cc892..b969a39dd 100644 --- a/ethcore/src/lib.rs +++ b/ethcore/src/lib.rs @@ -103,7 +103,7 @@ extern crate price_info; extern crate rand; extern crate rayon; extern crate rlp; -extern crate hash; +extern crate keccak_hash as hash; extern crate heapsize; extern crate memorydb; extern crate patricia_trie as trie; diff --git a/ethcore/types/Cargo.toml b/ethcore/types/Cargo.toml index 73d7b2932..5e037c2a4 100644 --- a/ethcore/types/Cargo.toml +++ b/ethcore/types/Cargo.toml @@ -12,7 +12,7 @@ ethcore-util = { path = "../../util" } ethcore-bigint = { path = "../../util/bigint" } ethjson = { path = "../../json" } bloomable = { path = "../../util/bloomable" } -hash = { path = "../../util/hash" } +keccak-hash = { path = "../../util/hash" } heapsize = "0.4" [dev-dependencies] diff --git a/ethcore/types/src/lib.rs b/ethcore/types/src/lib.rs index 85d36b200..51e2890d4 100644 --- a/ethcore/types/src/lib.rs +++ b/ethcore/types/src/lib.rs @@ -24,7 +24,7 @@ extern crate rlp; #[macro_use] extern crate rlp_derive; extern crate bloomable; -extern crate hash; +extern crate keccak_hash as hash; extern crate heapsize; #[cfg(test)] diff --git a/ethcore/vm/Cargo.toml b/ethcore/vm/Cargo.toml index dd066dc7e..24e75be2e 100644 --- a/ethcore/vm/Cargo.toml +++ b/ethcore/vm/Cargo.toml @@ -13,4 +13,4 @@ log = "0.3" common-types = { path = "../types" } ethjson = { path = "../../json" } rlp = { path = "../../util/rlp" } -hash = { path = "../../util/hash" } +keccak-hash = { path = "../../util/hash" } diff --git a/ethcore/vm/src/lib.rs b/ethcore/vm/src/lib.rs index 1f88bf625..08f0aa639 100644 --- a/ethcore/vm/src/lib.rs +++ b/ethcore/vm/src/lib.rs @@ -22,7 +22,7 @@ extern crate ethcore_bytes as bytes; extern crate common_types as types; extern crate ethjson; extern crate rlp; -extern crate hash; +extern crate keccak_hash as hash; extern crate patricia_trie as trie; mod action_params; diff --git a/hash-fetch/Cargo.toml b/hash-fetch/Cargo.toml index 7b0e8b7cd..312aa028c 100644 --- a/hash-fetch/Cargo.toml +++ b/hash-fetch/Cargo.toml @@ -19,7 +19,7 @@ ethcore-bigint = { path = "../util/bigint" } ethcore-bytes = { path = "../util/bytes" } parity-reactor = { path = "../util/reactor" } native-contracts = { path = "../ethcore/native_contracts" } -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } [dev-dependencies] ethabi = "4.0" diff --git a/hash-fetch/src/lib.rs b/hash-fetch/src/lib.rs index 858a04ea5..0610459ee 100644 --- a/hash-fetch/src/lib.rs +++ b/hash-fetch/src/lib.rs @@ -25,7 +25,7 @@ extern crate ethcore_util as util; extern crate ethcore_bigint as bigint; extern crate ethcore_bytes as bytes; extern crate futures; -extern crate hash; +extern crate keccak_hash as hash; extern crate mime; extern crate mime_guess; extern crate native_contracts; diff --git a/parity/main.rs b/parity/main.rs index 10e825d8b..eae471dce 100644 --- a/parity/main.rs +++ b/parity/main.rs @@ -75,7 +75,7 @@ extern crate parity_whisper; extern crate path; extern crate rpc_cli; extern crate node_filter; -extern crate hash; +extern crate keccak_hash as hash; extern crate journaldb; #[macro_use] diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 360a7b776..f257a0b68 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -56,7 +56,7 @@ parity-updater = { path = "../updater" } rlp = { path = "../util/rlp" } stats = { path = "../util/stats" } vm = { path = "../ethcore/vm" } -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } hardware-wallet = { path = "../hw" } clippy = { version = "0.0.103", optional = true} diff --git a/rpc/src/lib.rs b/rpc/src/lib.rs index ab0b9082d..ed8d1d972 100644 --- a/rpc/src/lib.rs +++ b/rpc/src/lib.rs @@ -65,7 +65,7 @@ extern crate parity_reactor; extern crate parity_updater as updater; extern crate rlp; extern crate stats; -extern crate hash; +extern crate keccak_hash as hash; extern crate hardware_wallet; #[macro_use] diff --git a/rpc_client/Cargo.toml b/rpc_client/Cargo.toml index cada20fa1..d1526661e 100644 --- a/rpc_client/Cargo.toml +++ b/rpc_client/Cargo.toml @@ -17,4 +17,4 @@ parking_lot = "0.4" jsonrpc-core = { git = "https://github.com/paritytech/jsonrpc.git", branch = "parity-1.8" } jsonrpc-ws-server = { git = "https://github.com/paritytech/jsonrpc.git", branch = "parity-1.8" } parity-rpc = { path = "../rpc" } -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } diff --git a/rpc_client/src/lib.rs b/rpc_client/src/lib.rs index 680c0484b..6b2bfc5cf 100644 --- a/rpc_client/src/lib.rs +++ b/rpc_client/src/lib.rs @@ -9,7 +9,7 @@ extern crate parking_lot; extern crate serde; extern crate serde_json; extern crate url; -extern crate hash; +extern crate keccak_hash as hash; #[macro_use] extern crate log; diff --git a/secret_store/Cargo.toml b/secret_store/Cargo.toml index 8357b530b..5ba7d5773 100644 --- a/secret_store/Cargo.toml +++ b/secret_store/Cargo.toml @@ -29,7 +29,7 @@ ethcore-util = { path = "../util" } ethcore-bigint = { path = "../util/bigint" } kvdb = { path = "../util/kvdb" } kvdb-rocksdb = { path = "../util/kvdb-rocksdb" } -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } ethcore-logger = { path = "../logger" } ethcrypto = { path = "../ethcrypto" } ethkey = { path = "../ethkey" } diff --git a/secret_store/src/lib.rs b/secret_store/src/lib.rs index 5951be508..80242c078 100644 --- a/secret_store/src/lib.rs +++ b/secret_store/src/lib.rs @@ -45,7 +45,7 @@ extern crate ethcore_logger as logger; extern crate ethcrypto; extern crate ethkey; extern crate native_contracts; -extern crate hash; +extern crate keccak_hash as hash; extern crate kvdb; extern crate kvdb_rocksdb; diff --git a/stratum/Cargo.toml b/stratum/Cargo.toml index 911e2ad0e..4216dabb5 100644 --- a/stratum/Cargo.toml +++ b/stratum/Cargo.toml @@ -18,4 +18,4 @@ tokio-core = "0.1" tokio-io = "0.1" parking_lot = "0.4" ethcore-logger = { path = "../logger" } -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } diff --git a/stratum/src/lib.rs b/stratum/src/lib.rs index 229f36acc..a647ac8e8 100644 --- a/stratum/src/lib.rs +++ b/stratum/src/lib.rs @@ -22,7 +22,7 @@ extern crate jsonrpc_macros; #[macro_use] extern crate log; extern crate ethcore_util as util; extern crate ethcore_bigint as bigint; -extern crate hash; +extern crate keccak_hash as hash; extern crate parking_lot; #[cfg(test)] extern crate tokio_core; diff --git a/sync/Cargo.toml b/sync/Cargo.toml index a1941fec4..9eebda261 100644 --- a/sync/Cargo.toml +++ b/sync/Cargo.toml @@ -16,7 +16,7 @@ ethcore-io = { path = "../util/io" } ethcore-light = { path = "../ethcore/light"} ethcore = { path = "../ethcore" } rlp = { path = "../util/rlp" } -hash = { path = "../util/hash" } +keccak-hash = { path = "../util/hash" } triehash = { path = "../util/triehash" } kvdb = { path = "../util/kvdb" } macros = { path = "../util/macros" } diff --git a/sync/src/lib.rs b/sync/src/lib.rs index 0495d72a7..4e9873c6e 100644 --- a/sync/src/lib.rs +++ b/sync/src/lib.rs @@ -40,7 +40,7 @@ extern crate parking_lot; extern crate smallvec; extern crate rlp; extern crate ipnetwork; -extern crate hash; +extern crate keccak_hash as hash; extern crate triehash; extern crate kvdb; diff --git a/util/Cargo.toml b/util/Cargo.toml index a05a4d18f..65d1c88b4 100644 --- a/util/Cargo.toml +++ b/util/Cargo.toml @@ -16,7 +16,7 @@ eth-secp256k1 = { git = "https://github.com/paritytech/rust-secp256k1" } elastic-array = "0.9" rlp = { path = "rlp" } heapsize = "0.4" -hash = { path = "hash" } +keccak-hash = { path = "hash" } clippy = { version = "0.0.103", optional = true} libc = "0.2.7" target_info = "0.1" diff --git a/util/bloomable/Cargo.toml b/util/bloomable/Cargo.toml index 94ca4856b..d919e2163 100644 --- a/util/bloomable/Cargo.toml +++ b/util/bloomable/Cargo.toml @@ -7,4 +7,4 @@ authors = ["debris "] ethcore-bigint = { path = "../bigint" } [dev-dependencies] -hash = { path = "../hash" } +keccak-hash = { path = "../hash" } diff --git a/util/bloomable/tests/test.rs b/util/bloomable/tests/test.rs index f3fa908e2..6e9cde484 100644 --- a/util/bloomable/tests/test.rs +++ b/util/bloomable/tests/test.rs @@ -1,4 +1,4 @@ -extern crate hash; +extern crate keccak_hash as hash; extern crate ethcore_bigint; extern crate bloomable; diff --git a/util/hash/Cargo.toml b/util/hash/Cargo.toml index 0b0502721..e4225c85c 100644 --- a/util/hash/Cargo.toml +++ b/util/hash/Cargo.toml @@ -2,13 +2,13 @@ description = "Rust bindings for tinykeccak C library" homepage = "http://parity.io" license = "GPL-3.0" -name = "hash" +name = "keccak-hash" version = "0.1.0" authors = ["Parity Technologies "] build = "build.rs" [dependencies] -ethcore-bigint = { path = "../bigint" } +ethcore-bigint = { version = "0.2.1", path = "../bigint" } tiny-keccak = "1.3" [build-dependencies] diff --git a/util/journaldb/Cargo.toml b/util/journaldb/Cargo.toml index a70631836..3d92d9ed6 100644 --- a/util/journaldb/Cargo.toml +++ b/util/journaldb/Cargo.toml @@ -19,5 +19,5 @@ util-error = { path = "../error" } [dev-dependencies] ethcore-logger = { path = "../../logger" } -hash = { path = "../hash" } +keccak-hash = { path = "../hash" } kvdb-memorydb = { path = "../kvdb-memorydb" } diff --git a/util/journaldb/src/lib.rs b/util/journaldb/src/lib.rs index ef26cb8d6..1e805abe6 100644 --- a/util/journaldb/src/lib.rs +++ b/util/journaldb/src/lib.rs @@ -32,7 +32,7 @@ extern crate util_error as error; #[cfg(test)] extern crate ethcore_logger; #[cfg(test)] -extern crate hash as keccak; +extern crate keccak_hash as keccak; #[cfg(test)] extern crate kvdb_memorydb; diff --git a/util/memorydb/Cargo.toml b/util/memorydb/Cargo.toml index 0c2f954e1..a8c6230d1 100644 --- a/util/memorydb/Cargo.toml +++ b/util/memorydb/Cargo.toml @@ -10,6 +10,6 @@ bigint = "4.0" elastic-array = "0.9" heapsize = "0.4" ethcore-bigint = { version = "0.2", path = "../bigint", features = ["heapsizeof"] } -hash = { version = "0.1.0", path = "../hash" } +keccak-hash = { version = "0.1.0", path = "../hash" } hashdb = { version = "0.1.0", path = "../hashdb" } rlp = { version = "0.2.0", path = "../rlp" } diff --git a/util/memorydb/src/lib.rs b/util/memorydb/src/lib.rs index 041d97250..d8e342d98 100644 --- a/util/memorydb/src/lib.rs +++ b/util/memorydb/src/lib.rs @@ -18,7 +18,7 @@ extern crate heapsize; extern crate ethcore_bigint as bigint; extern crate rlp; -extern crate hash as keccak; +extern crate keccak_hash as keccak; extern crate hashdb; use std::mem; diff --git a/util/network/Cargo.toml b/util/network/Cargo.toml index d7928b492..8c4d2398b 100644 --- a/util/network/Cargo.toml +++ b/util/network/Cargo.toml @@ -31,7 +31,7 @@ rlp = { path = "../rlp" } path = { path = "../path" } ethcore-logger = { path ="../../logger" } ipnetwork = "0.12.6" -hash = { path = "../hash" } +keccak-hash = { path = "../hash" } snappy = { path = "../snappy" } serde_json = "1.0" diff --git a/util/network/src/lib.rs b/util/network/src/lib.rs index 6cf81fa9d..730a368a6 100644 --- a/util/network/src/lib.rs +++ b/util/network/src/lib.rs @@ -79,7 +79,7 @@ extern crate bytes; extern crate path; extern crate ethcore_logger; extern crate ipnetwork; -extern crate hash; +extern crate keccak_hash as hash; extern crate serde_json; extern crate snappy; diff --git a/util/patricia_trie/Cargo.toml b/util/patricia_trie/Cargo.toml index 7b5ae3879..a7b1fa421 100644 --- a/util/patricia_trie/Cargo.toml +++ b/util/patricia_trie/Cargo.toml @@ -9,7 +9,7 @@ log = "0.3" rand = "0.3" ethcore-bytes = { version = "0.1.0", path = "../bytes" } ethcore-bigint = { version = "0.2.1", path = "../bigint" } -hash = { version = "0.1.0", path = "../hash" } +keccak-hash = { version = "0.1.0", path = "../hash" } hashdb = { version = "0.1.1", path = "../hashdb" } rlp = { version = "0.2.0", path = "../rlp" } triehash = { version = "0.1.0", path = "../triehash" } diff --git a/util/patricia_trie/src/lib.rs b/util/patricia_trie/src/lib.rs index 8c4c0d3ef..07fd43bdf 100644 --- a/util/patricia_trie/src/lib.rs +++ b/util/patricia_trie/src/lib.rs @@ -17,7 +17,7 @@ //! Trie interface and implementation. extern crate rand; extern crate ethcore_bigint as bigint; -extern crate hash as keccak; +extern crate keccak_hash as keccak; extern crate rlp; extern crate hashdb; extern crate ethcore_bytes as bytes; diff --git a/util/src/lib.rs b/util/src/lib.rs index 6d5db7938..321c85dd4 100644 --- a/util/src/lib.rs +++ b/util/src/lib.rs @@ -101,7 +101,7 @@ extern crate tiny_keccak; extern crate rlp; extern crate heapsize; extern crate ethcore_logger; -extern crate hash as keccak; +extern crate keccak_hash as keccak; extern crate hashdb; extern crate memorydb; extern crate patricia_trie as trie; diff --git a/util/triehash/Cargo.toml b/util/triehash/Cargo.toml index 2731a4685..d9ff4809c 100644 --- a/util/triehash/Cargo.toml +++ b/util/triehash/Cargo.toml @@ -8,4 +8,4 @@ license = "GPL-3.0" [dependencies] rlp = { version = "0.2", path = "../rlp" } ethcore-bigint = { version = "0.2.1", path = "../bigint" } -hash = { version = "0.1", path = "../hash" } +keccak-hash = { version = "0.1", path = "../hash" } diff --git a/util/triehash/src/lib.rs b/util/triehash/src/lib.rs index d166aa5d0..78c22fb87 100644 --- a/util/triehash/src/lib.rs +++ b/util/triehash/src/lib.rs @@ -19,7 +19,7 @@ //! This module should be used to generate trie root hash. extern crate ethcore_bigint; -extern crate hash; +extern crate keccak_hash as hash; extern crate rlp; use std::collections::BTreeMap; From 75cfab855942ecbe200a8510024d0a4986d13f33 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 10 Nov 2017 20:15:37 +0100 Subject: [PATCH 030/132] update memorydb --- Cargo.lock | 12 ++++++------ util/memorydb/Cargo.toml | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 240765c6c..8e5aea5f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -508,7 +508,7 @@ dependencies = [ "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "macros 0.1.0", "memory-cache 0.1.0", - "memorydb 0.1.0", + "memorydb 0.1.1", "migration 0.1.0", "native-contracts 0.1.0", "num 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", @@ -600,7 +600,7 @@ dependencies = [ "kvdb-rocksdb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "memory-cache 0.1.0", - "memorydb 0.1.0", + "memorydb 0.1.1", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.1.0", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -738,7 +738,7 @@ dependencies = [ "kvdb-memorydb 0.1.0", "libc 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.0", + "memorydb 0.1.1", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.1.0", "rlp 0.2.0", @@ -1218,7 +1218,7 @@ dependencies = [ "kvdb 0.1.0", "kvdb-memorydb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.0", + "memorydb 0.1.1", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.0", "util-error 0.1.0", @@ -1507,7 +1507,7 @@ dependencies = [ [[package]] name = "memorydb" -version = "0.1.0" +version = "0.1.1" dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2336,7 +2336,7 @@ dependencies = [ "hashdb 0.1.1", "keccak-hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.0", + "memorydb 0.1.1", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.0", "triehash 0.1.0", diff --git a/util/memorydb/Cargo.toml b/util/memorydb/Cargo.toml index a8c6230d1..785f16590 100644 --- a/util/memorydb/Cargo.toml +++ b/util/memorydb/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "memorydb" -version = "0.1.0" +version = "0.1.1" authors = ["Parity Technologies "] description = "in-memory implementation of hashdb" license = "GPL-3.0" @@ -11,5 +11,5 @@ elastic-array = "0.9" heapsize = "0.4" ethcore-bigint = { version = "0.2", path = "../bigint", features = ["heapsizeof"] } keccak-hash = { version = "0.1.0", path = "../hash" } -hashdb = { version = "0.1.0", path = "../hashdb" } +hashdb = { version = "0.1.1", path = "../hashdb" } rlp = { version = "0.2.0", path = "../rlp" } From cffbf3cab1659454a735a56b42a4fe6f39b9d400 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 10 Nov 2017 20:21:24 +0100 Subject: [PATCH 031/132] update rlp --- Cargo.lock | 42 +++++++++++++++++------------------ util/memorydb/Cargo.toml | 2 +- util/patricia_trie/Cargo.toml | 2 +- util/rlp/Cargo.toml | 4 ++-- util/triehash/Cargo.toml | 2 +- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e5aea5f7..288decc43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -286,7 +286,7 @@ dependencies = [ "ethjson 0.1.0", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.0", - "rlp 0.2.0", + "rlp 0.2.1", "rlp_derive 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -519,7 +519,7 @@ dependencies = [ "price-info 1.7.0", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "rlp_derive 0.1.0", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -604,7 +604,7 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.1.0", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "rlp_derive 0.1.0", "serde 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -654,7 +654,7 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "path 0.1.0", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -741,7 +741,7 @@ dependencies = [ "memorydb 0.1.1", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.1.0", - "rlp 0.2.0", + "rlp 0.2.1", "rocksdb 0.4.5 (git+https://github.com/paritytech/rust-rocksdb)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -862,7 +862,7 @@ dependencies = [ "macros 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1220,7 +1220,7 @@ dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.1.1", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "util-error 0.1.0", ] @@ -1353,7 +1353,7 @@ version = "0.1.0" dependencies = [ "kvdb 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", ] [[package]] @@ -1366,7 +1366,7 @@ dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "rocksdb 0.4.5 (git+https://github.com/paritytech/rust-rocksdb)", "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1515,7 +1515,7 @@ dependencies = [ "hashdb 0.1.1", "heapsize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.0", - "rlp 0.2.0", + "rlp 0.2.1", ] [[package]] @@ -1947,7 +1947,7 @@ dependencies = [ "path 0.1.0", "pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "rpassword 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "rpc-cli 1.4.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2060,7 +2060,7 @@ dependencies = [ "jsonrpc-core 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "jsonrpc-http-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.8)", "multihash 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "unicase 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2075,7 +2075,7 @@ dependencies = [ "kvdb 0.1.0", "kvdb-memorydb 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "serde 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2142,7 +2142,7 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2280,7 +2280,7 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.9.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "serde 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2338,7 +2338,7 @@ dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.1.1", "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "triehash 0.1.0", ] @@ -2616,7 +2616,7 @@ dependencies = [ [[package]] name = "rlp" -version = "0.2.0" +version = "0.2.1" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2630,7 +2630,7 @@ name = "rlp_derive" version = "0.1.0" dependencies = [ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.0", + "rlp 0.2.1", "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3247,7 +3247,7 @@ version = "0.1.0" dependencies = [ "ethcore-bigint 0.2.1", "keccak-hash 0.1.0", - "rlp 0.2.0", + "rlp 0.2.1", ] [[package]] @@ -3350,7 +3350,7 @@ dependencies = [ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-bigint 0.2.1", "kvdb 0.1.0", - "rlp 0.2.0", + "rlp 0.2.1", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3400,7 +3400,7 @@ dependencies = [ "keccak-hash 0.1.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.1.0", - "rlp 0.2.0", + "rlp 0.2.1", ] [[package]] diff --git a/util/memorydb/Cargo.toml b/util/memorydb/Cargo.toml index 785f16590..4ea50a736 100644 --- a/util/memorydb/Cargo.toml +++ b/util/memorydb/Cargo.toml @@ -12,4 +12,4 @@ heapsize = "0.4" ethcore-bigint = { version = "0.2", path = "../bigint", features = ["heapsizeof"] } keccak-hash = { version = "0.1.0", path = "../hash" } hashdb = { version = "0.1.1", path = "../hashdb" } -rlp = { version = "0.2.0", path = "../rlp" } +rlp = { version = "0.2.1", path = "../rlp" } diff --git a/util/patricia_trie/Cargo.toml b/util/patricia_trie/Cargo.toml index a7b1fa421..ee9d472a0 100644 --- a/util/patricia_trie/Cargo.toml +++ b/util/patricia_trie/Cargo.toml @@ -11,7 +11,7 @@ ethcore-bytes = { version = "0.1.0", path = "../bytes" } ethcore-bigint = { version = "0.2.1", path = "../bigint" } keccak-hash = { version = "0.1.0", path = "../hash" } hashdb = { version = "0.1.1", path = "../hashdb" } -rlp = { version = "0.2.0", path = "../rlp" } +rlp = { version = "0.2.1", path = "../rlp" } triehash = { version = "0.1.0", path = "../triehash" } memorydb = { version = "0.1.0", path = "../memorydb" } ethcore-logger = { version = "1.9.0", path = "../../logger" } diff --git a/util/rlp/Cargo.toml b/util/rlp/Cargo.toml index aa682e469..83ac3a9d6 100644 --- a/util/rlp/Cargo.toml +++ b/util/rlp/Cargo.toml @@ -3,12 +3,12 @@ description = "Recursive-length prefix encoding, decoding, and compression" repository = "https://github.com/paritytech/parity" license = "MIT/Apache-2.0" name = "rlp" -version = "0.2.0" +version = "0.2.1" authors = ["Parity Technologies "] [dependencies] elastic-array = "0.9" -ethcore-bigint = { path = "../bigint" } +ethcore-bigint = { version = "0.2.1", path = "../bigint" } lazy_static = "0.2" rustc-hex = "1.0" byteorder = "1.0" diff --git a/util/triehash/Cargo.toml b/util/triehash/Cargo.toml index d9ff4809c..53d6b56d8 100644 --- a/util/triehash/Cargo.toml +++ b/util/triehash/Cargo.toml @@ -6,6 +6,6 @@ description = "in memory patricia trie operations" license = "GPL-3.0" [dependencies] -rlp = { version = "0.2", path = "../rlp" } +rlp = { version = "0.2.1", path = "../rlp" } ethcore-bigint = { version = "0.2.1", path = "../bigint" } keccak-hash = { version = "0.1", path = "../hash" } From c4466f450b4e2e62df27e686a8497130fb1e0a3d Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 10 Nov 2017 20:26:19 +0100 Subject: [PATCH 032/132] update patricia-trie cargo.toml --- util/patricia_trie/Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/patricia_trie/Cargo.toml b/util/patricia_trie/Cargo.toml index ee9d472a0..ae0027cf4 100644 --- a/util/patricia_trie/Cargo.toml +++ b/util/patricia_trie/Cargo.toml @@ -2,6 +2,8 @@ name = "patricia-trie" version = "0.1.0" authors = ["Parity Technologies "] +description = "Merkle-Patricia Trie (Ethereum Style)" +license = "GPL-3.0" [dependencies] elastic-array = "0.9" From 72907da2aed962715c6efc5e98162e0d11500089 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Sun, 12 Nov 2017 12:36:41 +0100 Subject: [PATCH 033/132] Garbage collect hashmap entries. --- parity/rpc_apis.rs | 10 ++-- rpc/src/v1/helpers/dispatch.rs | 28 +++------- rpc/src/v1/helpers/nonce.rs | 95 +++++++++++++++++++++++++++++----- 3 files changed, 93 insertions(+), 40 deletions(-) diff --git a/parity/rpc_apis.rs b/parity/rpc_apis.rs index 281b97589..a5bc1e154 100644 --- a/parity/rpc_apis.rs +++ b/parity/rpc_apis.rs @@ -15,7 +15,7 @@ // along with Parity. If not, see . use std::cmp::PartialEq; -use std::collections::{BTreeMap, HashSet, HashMap}; +use std::collections::{BTreeMap, HashSet}; use std::str::FromStr; use std::sync::{Arc, Weak}; @@ -241,7 +241,7 @@ impl FullDependencies { ($namespace:ident, $handler:expr, $deps:expr, $nonces:expr) => { { let deps = &$deps; - let dispatcher = FullDispatcher::new(deps.client.clone(), deps.miner.clone(), deps.fetch.pool(), $nonces); + let dispatcher = FullDispatcher::new(deps.client.clone(), deps.miner.clone(), $nonces); if deps.signer_service.is_enabled() { $handler.extend_with($namespace::to_delegate(SigningQueueClient::new(&deps.signer_service, dispatcher, deps.remote.clone(), &deps.secret_store))) } else { @@ -251,11 +251,10 @@ impl FullDependencies { } } - let nonces = Arc::new(Mutex::new(HashMap::new())); + let nonces = Arc::new(Mutex::new(dispatch::Reservations::with_pool(self.fetch.pool()))); let dispatcher = FullDispatcher::new( self.client.clone(), self.miner.clone(), - self.fetch.pool(), nonces.clone(), ); for api in apis { @@ -440,8 +439,7 @@ impl LightDependencies { self.on_demand.clone(), self.cache.clone(), self.transaction_queue.clone(), - self.fetch.pool(), - Arc::new(Mutex::new(HashMap::new())), + Arc::new(Mutex::new(dispatch::Reservations::with_pool(self.fetch.pool()))), ); macro_rules! add_signing_methods { diff --git a/rpc/src/v1/helpers/dispatch.rs b/rpc/src/v1/helpers/dispatch.rs index f17797619..35e16f573 100644 --- a/rpc/src/v1/helpers/dispatch.rs +++ b/rpc/src/v1/helpers/dispatch.rs @@ -19,7 +19,6 @@ use std::fmt::Debug; use std::ops::Deref; use std::sync::Arc; -use std::collections::HashMap; use light::cache::Cache as LightDataCache; use light::client::LightChainClient; @@ -33,7 +32,6 @@ use util::Address; use bytes::Bytes; use parking_lot::{Mutex, RwLock}; use stats::Corpus; -use futures_cpupool::CpuPool; use ethkey::Signature; use ethsync::LightSync; @@ -89,8 +87,7 @@ pub trait Dispatcher: Send + Sync + Clone { pub struct FullDispatcher { client: Arc, miner: Arc, - nonces: Arc>>, - pool: CpuPool, + nonces: Arc>, } impl FullDispatcher { @@ -98,14 +95,12 @@ impl FullDispatcher { pub fn new( client: Arc, miner: Arc, - pool: CpuPool, - nonces: Arc>>, + nonces: Arc>, ) -> Self { FullDispatcher { client, miner, nonces, - pool, } } } @@ -116,7 +111,6 @@ impl Clone for FullDispatcher { client: self.client.clone(), miner: self.miner.clone(), nonces: self.nonces.clone(), - pool: self.pool.clone(), } } } @@ -172,9 +166,7 @@ impl Dispatcher for FullDispatcher>, /// Nonce reservations - pub nonces: Arc>>, - /// Cpu pool - pub pool: CpuPool, + pub nonces: Arc>, } impl LightDispatcher { @@ -280,8 +270,7 @@ impl LightDispatcher { on_demand: Arc, cache: Arc>, transaction_queue: Arc>, - pool: CpuPool, - nonces: Arc>>, + nonces: Arc>, ) -> Self { LightDispatcher { sync, @@ -290,7 +279,6 @@ impl LightDispatcher { cache, transaction_queue, nonces, - pool, } } @@ -396,13 +384,11 @@ impl Dispatcher for LightDispatcher { } let nonces = self.nonces.clone(); - let pool = self.pool.clone(); Box::new(self.next_nonce(filled.from) .map_err(|_| errors::no_light_peers()) .and_then(move |nonce| { - let reserved = nonces.lock().entry(filled.from) - .or_insert(nonce::Reservations::with_pool(pool)) - .reserve_nonce(nonce); + let reserved = nonces.lock().reserve(filled.from, nonce); + ProspectiveSigner::new(accounts, filled, chain_id, reserved, password) })) } diff --git a/rpc/src/v1/helpers/nonce.rs b/rpc/src/v1/helpers/nonce.rs index a048d9a87..2b4df49ae 100644 --- a/rpc/src/v1/helpers/nonce.rs +++ b/rpc/src/v1/helpers/nonce.rs @@ -15,35 +15,84 @@ // along with Parity. If not, see . use std::{cmp, mem}; +use std::collections::HashMap; use std::sync::{atomic, Arc}; -use std::sync::atomic::AtomicUsize; +use std::sync::atomic::{AtomicBool, AtomicUsize}; use bigint::prelude::U256; use futures::{Future, future, Poll, Async}; use futures::future::Either; use futures::sync::oneshot; use futures_cpupool::CpuPool; +use util::Address; -/// Manages currently reserved and prospective nonces. +/// Manages currently reserved and prospective nonces +/// for multiple senders. #[derive(Debug)] pub struct Reservations { - previous: Option>, + nonces: HashMap, pool: CpuPool, - prospective_value: U256, - dropped: Arc, } - impl Reservations { + /// A maximal number of reserved nonces in the hashmap + /// before we start clearing the unused ones. + const CLEAN_AT: usize = 512; + /// Create new nonces manager and spawn a single-threaded cpu pool /// for progressing execution of dropped nonces. pub fn new() -> Self { Self::with_pool(CpuPool::new(1)) } - /// Create new nonces manager with given cpu pool. + /// Create new nonces manager with given cpupool. pub fn with_pool(pool: CpuPool) -> Self { Reservations { + nonces: Default::default(), + pool, + } + } + + /// Reserve a nonce for particular address. + /// + /// The reserved nonce cannot be smaller than the minimal nonce. + pub fn reserve(&mut self, sender: Address, minimal: U256) -> Reserved { + if self.nonces.len() + 1 > Self::CLEAN_AT { + let to_remove = self.nonces.iter().filter(|&(_, v)| v.is_empty()).map(|(k, _)| *k).collect::>(); + for address in to_remove { + self.nonces.remove(&address); + } + } + + let pool = &self.pool; + self.nonces.entry(sender) + .or_insert_with(move || SenderReservations::with_pool(pool.clone())) + .reserve_nonce(minimal) + } +} + +/// Manages currently reserved and prospective nonces. +#[derive(Debug)] +pub struct SenderReservations { + previous: Option>, + previous_ready: Arc, + pool: CpuPool, + prospective_value: U256, + dropped: Arc, +} + +impl SenderReservations { + /// Create new nonces manager and spawn a single-threaded cpu pool + /// for progressing execution of dropped nonces. + #[cfg(test)] + pub fn new() -> Self { + Self::with_pool(CpuPool::new(1)) + } + + /// Create new nonces manager with given cpu pool. + pub fn with_pool(pool: CpuPool) -> Self { + SenderReservations { previous: None, + previous_ready: Arc::new(AtomicBool::new(true)), pool, prospective_value: Default::default(), dropped: Default::default(), @@ -64,12 +113,15 @@ impl Reservations { let (next, rx) = oneshot::channel(); let next = Some(next); + let next_sent = Arc::new(AtomicBool::default()); let pool = self.pool.clone(); let dropped = self.dropped.clone(); + self.previous_ready = next_sent.clone(); match mem::replace(&mut self.previous, Some(rx)) { Some(previous) => Reserved { previous: Either::A(previous), next, + next_sent, minimal, prospective_value, pool, @@ -78,6 +130,7 @@ impl Reservations { None => Reserved { previous: Either::B(future::ok(minimal)), next, + next_sent, minimal, prospective_value, pool, @@ -85,6 +138,11 @@ impl Reservations { }, } } + + /// Returns true if there are no reserved nonces. + pub fn is_empty(&self) -> bool { + self.previous_ready.load(atomic::Ordering::SeqCst) + } } /// Represents a future nonce. @@ -92,9 +150,10 @@ impl Reservations { pub struct Reserved { previous: Either< oneshot::Receiver, - future::FutureResult + future::FutureResult, >, next: Option>, + next_sent: Arc, minimal: U256, prospective_value: U256, pool: CpuPool, @@ -128,6 +187,7 @@ impl Future for Reserved { value, matches_prospective, next: self.next.take(), + next_sent: self.next_sent.clone(), dropped: self.dropped.clone(), })) } @@ -136,10 +196,12 @@ impl Future for Reserved { impl Drop for Reserved { fn drop(&mut self) { if let Some(next) = self.next.take() { + let next_sent = self.next_sent.clone(); self.dropped.fetch_add(1, atomic::Ordering::SeqCst); // If Reserved is dropped just pipe previous and next together. let previous = mem::replace(&mut self.previous, Either::B(future::ok(U256::default()))); - self.pool.spawn(previous.map(|nonce| { + self.pool.spawn(previous.map(move |nonce| { + next_sent.store(true, atomic::Ordering::SeqCst); next.send(nonce).expect(Ready::RECV_PROOF) })).forget() } @@ -156,6 +218,7 @@ pub struct Ready { value: U256, matches_prospective: bool, next: Option>, + next_sent: Arc, dropped: Arc, } @@ -176,15 +239,17 @@ impl Ready { /// Make sure to call that method after this nonce has been consumed. pub fn mark_used(mut self) { let next = self.next.take().expect("Nonce can be marked as used only once; qed"); + self.next_sent.store(true, atomic::Ordering::SeqCst); next.send(self.value + 1.into()).expect(Self::RECV_PROOF); } } impl Drop for Ready { fn drop(&mut self) { - if let Some(send) = self.next.take() { + if let Some(next) = self.next.take() { self.dropped.fetch_add(1, atomic::Ordering::SeqCst); - send.send(self.value).expect(Self::RECV_PROOF); + self.next_sent.store(true, atomic::Ordering::SeqCst); + next.send(self.value).expect(Self::RECV_PROOF); } } } @@ -195,12 +260,14 @@ mod tests { #[test] fn should_reserve_a_set_of_nonces_and_resolve_them() { - let mut nonces = Reservations::new(); + let mut nonces = SenderReservations::new(); + assert!(nonces.is_empty()); let n1 = nonces.reserve_nonce(5.into()); let n2 = nonces.reserve_nonce(5.into()); let n3 = nonces.reserve_nonce(5.into()); let n4 = nonces.reserve_nonce(5.into()); + assert!(!nonces.is_empty()); // Check first nonce let r = n1.wait().unwrap(); @@ -234,11 +301,13 @@ mod tests { assert_eq!(r.value(), &U256::from(10)); assert!(r.matches_prospective()); r.mark_used(); + + assert!(nonces.is_empty()); } #[test] fn should_return_prospective_nonce() { - let mut nonces = Reservations::new(); + let mut nonces = SenderReservations::new(); let n1 = nonces.reserve_nonce(5.into()); let n2 = nonces.reserve_nonce(5.into()); From bcdfc50a0b3c7924702405e75994c0c28e7f2b3a Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Mon, 13 Nov 2017 00:21:15 +0300 Subject: [PATCH 034/132] pwasm-std update (#7018) --- Cargo.lock | 8 +- ethcore/res/wasm-tests | 2 +- ethcore/vm/src/schedule.rs | 14 ++-- ethcore/wasm/src/env.rs | 29 ++++++-- ethcore/wasm/src/runtime.rs | 102 ++++++++++++++++---------- ethcore/wasm/src/tests.rs | 142 +++++++++++++++++++++++++++++------- 6 files changed, 212 insertions(+), 85 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 80a7ef297..fcbb12ab3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2253,7 +2253,7 @@ dependencies = [ [[package]] name = "parity-wasm" -version = "0.15.1" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3417,7 +3417,7 @@ dependencies = [ "ethcore-logger 1.9.0", "ethcore-util 1.9.0", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)", "vm 0.1.0", "wasm-utils 0.1.0 (git+https://github.com/paritytech/wasm-utils)", ] @@ -3433,7 +3433,7 @@ dependencies = [ "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3647,7 +3647,7 @@ dependencies = [ "checksum parity-tokio-ipc 0.1.5 (git+https://github.com/nikvolf/parity-tokio-ipc)" = "" "checksum parity-ui-old-precompiled 1.8.0 (git+https://github.com/paritytech/js-precompiled.git?branch=v1)" = "" "checksum parity-ui-precompiled 1.9.0 (git+https://github.com/paritytech/js-precompiled.git)" = "" -"checksum parity-wasm 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "95f6243c2d6fadf903b5edfd0011817efc20522ce5f360abf4648c24ea87581a" +"checksum parity-wasm 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8431a184ad88cfbcd71a792aaca319cc7203a94300c26b8dce2d0df0681ea87d" "checksum parity-wordlist 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81451bfab101d186f8fc4a0aa13cb5539b31b02c4ed96425a0842e2a413daba6" "checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" "checksum parking_lot_core 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4f610cb9664da38e417ea3225f23051f589851999535290e077939838ab7a595" diff --git a/ethcore/res/wasm-tests b/ethcore/res/wasm-tests index 94b7877b5..9a1fcbf0d 160000 --- a/ethcore/res/wasm-tests +++ b/ethcore/res/wasm-tests @@ -1 +1 @@ -Subproject commit 94b7877b5826a53627b8732ea0feb45869dd04ab +Subproject commit 9a1fcbf0d4e73bea437577e807bc38c7ba243d80 diff --git a/ethcore/vm/src/schedule.rs b/ethcore/vm/src/schedule.rs index 21924afea..e250bfa1c 100644 --- a/ethcore/vm/src/schedule.rs +++ b/ethcore/vm/src/schedule.rs @@ -127,12 +127,14 @@ pub struct WasmCosts { pub mul: u32, /// Memory (load/store) operations multiplier. pub mem: u32, - /// Memory copy operation. + /// Memory copy operation, per byte. pub mem_copy: u32, + /// Memory move operation, per byte. + pub mem_move: u32, + /// Memory set operation, per byte. + pub mem_set: u32, /// Static region charge, per byte. pub static_region: u32, - /// General static query of u64 value from env-info - pub static_u64: u32, /// General static query of U256 value from env-info pub static_u256: u32, /// General static query of Address value from env-info @@ -147,11 +149,9 @@ impl Default for WasmCosts { mul: 4, mem: 2, mem_copy: 1, + mem_move: 1, + mem_set: 1, static_region: 1, - - // due to runtime issues, this can be slow - static_u64: 32, - static_u256: 64, static_address: 40, } diff --git a/ethcore/wasm/src/env.rs b/ethcore/wasm/src/env.rs index 4a518beec..1a2f5fd3b 100644 --- a/ethcore/wasm/src/env.rs +++ b/ethcore/wasm/src/env.rs @@ -38,12 +38,12 @@ pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[ None, ), Static( - "_malloc", + "_ext_malloc", &[I32], Some(I32), ), Static( - "_free", + "_ext_free", &[I32], None, ), @@ -92,6 +92,21 @@ pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[ &[I32; 3], Some(I32), ), + Static( + "_ext_memcpy", + &[I32; 3], + Some(I32), + ), + Static( + "_ext_memset", + &[I32; 3], + Some(I32), + ), + Static( + "_ext_memmove", + &[I32; 3], + Some(I32), + ), Static( "_panic", &[I32; 2], @@ -99,7 +114,7 @@ pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[ ), Static( "_blockhash", - &[I32; 3], + &[I64, I32], Some(I32), ), Static( @@ -130,12 +145,12 @@ pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[ Static( "_timestamp", &[], - Some(I32), + Some(I64), ), Static( "_blocknumber", &[], - Some(I32), + Some(I64), ), Static( "_difficulty", @@ -162,8 +177,8 @@ pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[ Static( "_llvm_bswap_i64", - &[I32; 2], - Some(I32) + &[I64], + Some(I64) ), ]; diff --git a/ethcore/wasm/src/runtime.rs b/ethcore/wasm/src/runtime.rs index 39b239fe8..e5a6dc910 100644 --- a/ethcore/wasm/src/runtime.rs +++ b/ethcore/wasm/src/runtime.rs @@ -560,32 +560,67 @@ impl<'a, 'b> Runtime<'a, 'b> { fn mem_copy(&mut self, context: InterpreterCallerContext) -> Result, InterpreterError> { + // + // method signature: + // fn memcpy(dest: *const u8, src: *const u8, len: u32) -> *mut u8; + // + let len = context.value_stack.pop_as::()? as u32; - let dst = context.value_stack.pop_as::()? as u32; let src = context.value_stack.pop_as::()? as u32; + let dst = context.value_stack.pop_as::()? as u32; self.charge(|schedule| schedule.wasm.mem_copy as u64 * len as u64)?; - let mem = self.memory().get(src, len as usize)?; - self.memory().set(dst, &mem)?; + self.memory().copy_nonoverlapping(src as usize, dst as usize, len as usize)?; - Ok(Some(0i32.into())) + Ok(Some(Into::into(dst as i32))) } - fn bswap_32(x: u32) -> u32 { - x >> 24 | x >> 8 & 0xff00 | x << 8 & 0xff0000 | x << 24 + fn mem_move(&mut self, context: InterpreterCallerContext) + -> Result, InterpreterError> + { + // + // method signature: + // fn memmove(dest: *const u8, src: *const u8, len: u32) -> *mut u8; + // + + let len = context.value_stack.pop_as::()? as u32; + let src = context.value_stack.pop_as::()? as u32; + let dst = context.value_stack.pop_as::()? as u32; + + self.charge(|schedule| schedule.wasm.mem_move as u64 * len as u64)?; + + self.memory().copy(src as usize, dst as usize, len as usize)?; + + Ok(Some(Into::into(dst as i32))) + } + + fn mem_set(&mut self, context: InterpreterCallerContext) + -> Result, InterpreterError> + { + // + // method signature: + // fn memset(dest: *const u8, c: u32, len: u32) -> *mut u8; + // + + let len = context.value_stack.pop_as::()? as u32; + let c = context.value_stack.pop_as::()? as u32; + let dst = context.value_stack.pop_as::()? as u32; + + self.charge(|schedule| schedule.wasm.mem_set as u64 * len as u64)?; + + self.memory().clear(dst as usize, c as u8, len as usize)?; + + Ok(Some(Into::into(dst as i32))) } fn bitswap_i64(&mut self, context: InterpreterCallerContext) -> Result, InterpreterError> { - let x1 = context.value_stack.pop_as::()?; - let x2 = context.value_stack.pop_as::()?; + let x = context.value_stack.pop_as::()?; + let result = x.swap_bytes(); - let result = ((Runtime::bswap_32(x2 as u32) as u64) << 32 - | Runtime::bswap_32(x1 as u32) as u64) as i64; - - self.return_i64(result) + Ok(Some(result.into())) } fn user_panic(&mut self, context: InterpreterCallerContext) @@ -606,13 +641,10 @@ impl<'a, 'b> Runtime<'a, 'b> { -> Result, InterpreterError> { let return_ptr = context.value_stack.pop_as::()? as u32; - let block_hi = context.value_stack.pop_as::()? as u32; - let block_lo = context.value_stack.pop_as::()? as u32; + let block_num = context.value_stack.pop_as::()? as u64; self.charge(|schedule| schedule.blockhash_gas as u64)?; - let block_num = (block_hi as u64) << 32 | block_lo as u64; - trace!("Requesting block hash for block #{}", block_num); let hash = self.ext.blockhash(&U256::from(block_num)); @@ -694,14 +726,14 @@ impl<'a, 'b> Runtime<'a, 'b> { -> Result, InterpreterError> { let timestamp = self.ext.env_info().timestamp as i64; - self.return_i64(timestamp) + Ok(Some(timestamp.into())) } fn block_number(&mut self, _context: InterpreterCallerContext) -> Result, InterpreterError> { - let block_number: u64 = self.ext.env_info().number.into(); - self.return_i64(block_number as i64) + let block_number = self.ext.env_info().number as i64; + Ok(Some(block_number.into())) } fn difficulty(&mut self, context: InterpreterCallerContext) @@ -726,25 +758,6 @@ impl<'a, 'b> Runtime<'a, 'b> { Ok(None) } - fn return_i64(&mut self, val: i64) -> Result, InterpreterError> { - self.charge(|schedule| schedule.wasm.static_u64 as u64)?; - - let uval = val as u64; - let hi = (uval >> 32) as i32; - let lo = (uval << 32 >> 32) as i32; - - let target = self.instance.module("contract").ok_or(UserTrap::Other)?; - target.execute_export( - "setTempRet0", - self.execution_params().add_argument( - interpreter::RuntimeValue::I32(hi).into() - ), - )?; - Ok(Some( - (lo).into() - )) - } - pub fn execution_params(&mut self) -> interpreter::ExecutionParams { use super::env; @@ -812,10 +825,10 @@ impl<'a, 'b> interpreter::UserFunctionExecutor for Runtime<'a, 'b> { -> Result, InterpreterError> { match name { - "_malloc" => { + "_ext_malloc" => { self.malloc(context) }, - "_free" => { + "_ext_free" => { // Since it is arena allocator, free does nothing // todo: update if changed self.user_noop(context) @@ -853,6 +866,15 @@ impl<'a, 'b> interpreter::UserFunctionExecutor for Runtime<'a, 'b> { "_emscripten_memcpy_big" => { self.mem_copy(context) }, + "_ext_memcpy" => { + self.mem_copy(context) + }, + "_ext_memmove" => { + self.mem_move(context) + }, + "_ext_memset" => { + self.mem_set(context) + }, "_llvm_bswap_i64" => { self.bitswap_i64(context) }, diff --git a/ethcore/wasm/src/tests.rs b/ethcore/wasm/src/tests.rs index 245f27536..0a93be11c 100644 --- a/ethcore/wasm/src/tests.rs +++ b/ethcore/wasm/src/tests.rs @@ -60,7 +60,7 @@ fn empty() { test_finalize(interpreter.exec(params, &mut ext)).unwrap() }; - assert_eq!(gas_left, U256::from(99_976)); + assert_eq!(gas_left, U256::from(99_982)); } // This test checks if the contract deserializes payload header properly. @@ -89,7 +89,6 @@ fn logger() { test_finalize(interpreter.exec(params, &mut ext)).unwrap() }; - assert_eq!(gas_left, U256::from(15_177)); let address_val: H256 = address.into(); assert_eq!( ext.store.get(&"0100000000000000000000000000000000000000000000000000000000000000".parse().unwrap()).expect("storage key to exist"), @@ -113,6 +112,7 @@ fn logger() { U256::from(1_000_000_000), "Logger sets 0x04 key to the trasferred value" ); + assert_eq!(gas_left, U256::from(19_143)); } // This test checks if the contract can allocate memory and pass pointer to the result stream properly. @@ -142,13 +142,12 @@ fn identity() { } }; - assert_eq!(gas_left, U256::from(99_695)); - assert_eq!( Address::from_slice(&result), sender, "Idenity test contract does not return the sender passed" ); + assert_eq!(gas_left, U256::from(99_844)); } // Dispersion test sends byte array and expect the contract to 'disperse' the original elements with @@ -176,12 +175,12 @@ fn dispersion() { } }; - assert_eq!(gas_left, U256::from(96_543)); assert_eq!( result, vec![0u8, 0, 125, 11, 197, 7, 255, 8, 19, 0] ); + assert_eq!(gas_left, U256::from(99_469)); } #[test] @@ -205,12 +204,11 @@ fn suicide_not() { } }; - assert_eq!(gas_left, U256::from(96_822)); - assert_eq!( result, vec![0u8] ); + assert_eq!(gas_left, U256::from(99_724)); } #[test] @@ -241,8 +239,8 @@ fn suicide() { } }; - assert_eq!(gas_left, U256::from(96_580)); assert!(ext.suicides.contains(&refund)); + assert_eq!(gas_left, U256::from(99_663)); } #[test] @@ -272,7 +270,7 @@ fn create() { assert!(ext.calls.contains( &FakeCall { call_type: FakeCallType::Create, - gas: U256::from(62_324), + gas: U256::from(65_903), sender_address: None, receive_address: None, value: Some(1_000_000_000.into()), @@ -280,7 +278,7 @@ fn create() { code_address: None, } )); - assert_eq!(gas_left, U256::from(62_289)); + assert_eq!(gas_left, U256::from(65_896)); } @@ -314,7 +312,7 @@ fn call_code() { assert!(ext.calls.contains( &FakeCall { call_type: FakeCallType::Call, - gas: U256::from(95_585), + gas: U256::from(98_709), sender_address: Some(sender), receive_address: Some(receiver), value: None, @@ -322,11 +320,11 @@ fn call_code() { code_address: Some("0d13710000000000000000000000000000000000".parse().unwrap()), } )); - assert_eq!(gas_left, U256::from(90_665)); // siphash result let res = LittleEndian::read_u32(&result[..]); assert_eq!(res, 4198595614); + assert_eq!(gas_left, U256::from(93_851)); } #[test] @@ -359,7 +357,7 @@ fn call_static() { assert!(ext.calls.contains( &FakeCall { call_type: FakeCallType::Call, - gas: U256::from(95_585), + gas: U256::from(98_709), sender_address: Some(sender), receive_address: Some(receiver), value: None, @@ -367,11 +365,12 @@ fn call_static() { code_address: Some("13077bfb00000000000000000000000000000000".parse().unwrap()), } )); - assert_eq!(gas_left, U256::from(90_665)); // siphash result let res = LittleEndian::read_u32(&result[..]); assert_eq!(res, 317632590); + + assert_eq!(gas_left, U256::from(93_851)); } // Realloc test @@ -393,8 +392,8 @@ fn realloc() { GasLeft::NeedsReturn { gas_left: gas, data: result, apply_state: _apply } => (gas, result.to_vec()), } }; - assert_eq!(gas_left, U256::from(96_811)); assert_eq!(result, vec![0u8; 2]); + assert_eq!(gas_left, U256::from(99_787)); } // Tests that contract's ability to read from a storage @@ -419,8 +418,8 @@ fn storage_read() { } }; - assert_eq!(gas_left, U256::from(96_645)); assert_eq!(Address::from(&result[12..32]), address); + assert_eq!(gas_left, U256::from(99_702)); } // Tests keccak calculation @@ -446,9 +445,97 @@ fn keccak() { }; assert_eq!(H256::from_slice(&result), H256::from("68371d7e884c168ae2022c82bd837d51837718a7f7dfb7aa3f753074a35e1d87")); - assert_eq!(gas_left, U256::from(80_452)); + assert_eq!(gas_left, U256::from(84_520)); } +// memcpy test. +#[test] +fn memcpy() { + ::ethcore_logger::init_log(); + let code = load_sample!("mem.wasm"); + + let mut test_payload = Vec::with_capacity(8192); + for i in 0..8192 { + test_payload.push((i % 255) as u8); + } + let mut data = vec![0u8]; + data.extend(&test_payload); + + let mut params = ActionParams::default(); + params.gas = U256::from(100_000); + params.code = Some(Arc::new(code)); + params.data = Some(data); + let mut ext = FakeExt::new(); + + let (gas_left, result) = { + let mut interpreter = wasm_interpreter(); + let result = interpreter.exec(params, &mut ext).expect("Interpreter to execute without any errors"); + match result { + GasLeft::Known(_) => { panic!("mem should return payload"); }, + GasLeft::NeedsReturn { gas_left: gas, data: result, apply_state: _apply } => (gas, result.to_vec()), + } + }; + + assert_eq!(result, test_payload); + assert_eq!(gas_left, U256::from(75_324)); +} + +// memmove test. +#[test] +fn memmove() { + ::ethcore_logger::init_log(); + let code = load_sample!("mem.wasm"); + + let mut test_payload = Vec::with_capacity(8192); + for i in 0..8192 { + test_payload.push((i % 255) as u8); + } + let mut data = vec![1u8]; + data.extend(&test_payload); + + let mut params = ActionParams::default(); + params.gas = U256::from(100_000); + params.code = Some(Arc::new(code)); + params.data = Some(data); + let mut ext = FakeExt::new(); + + let (gas_left, result) = { + let mut interpreter = wasm_interpreter(); + let result = interpreter.exec(params, &mut ext).expect("Interpreter to execute without any errors"); + match result { + GasLeft::Known(_) => { panic!("mem should return payload"); }, + GasLeft::NeedsReturn { gas_left: gas, data: result, apply_state: _apply } => (gas, result.to_vec()), + } + }; + + assert_eq!(result, test_payload); + assert_eq!(gas_left, U256::from(75_324)); +} + +// memset test +#[test] +fn memset() { + ::ethcore_logger::init_log(); + let code = load_sample!("mem.wasm"); + + let mut params = ActionParams::default(); + params.gas = U256::from(100_000); + params.code = Some(Arc::new(code)); + params.data = Some(vec![2u8, 228u8]); + let mut ext = FakeExt::new(); + + let (gas_left, result) = { + let mut interpreter = wasm_interpreter(); + let result = interpreter.exec(params, &mut ext).expect("Interpreter to execute without any errors"); + match result { + GasLeft::Known(_) => { panic!("mem should return payload"); }, + GasLeft::NeedsReturn { gas_left: gas, data: result, apply_state: _apply } => (gas, result.to_vec()), + } + }; + + assert_eq!(result, vec![228u8; 8192]); + assert_eq!(gas_left, U256::from(75_324)); +} macro_rules! reqrep_test { ($name: expr, $input: expr) => { @@ -500,11 +587,11 @@ fn math_add() { } ).expect("Interpreter to execute without any errors"); - assert_eq!(gas_left, U256::from(94_666)); assert_eq!( U256::from_dec_str("1888888888888888888888888888887").unwrap(), (&result[..]).into() ); + assert_eq!(gas_left, U256::from(98_576)); } // multiplication @@ -522,11 +609,11 @@ fn math_mul() { } ).expect("Interpreter to execute without any errors"); - assert_eq!(gas_left, U256::from(93_719)); assert_eq!( U256::from_dec_str("888888888888888888888888888887111111111111111111111111111112").unwrap(), (&result[..]).into() ); + assert_eq!(gas_left, U256::from(97_726)); } // subtraction @@ -544,11 +631,11 @@ fn math_sub() { } ).expect("Interpreter to execute without any errors"); - assert_eq!(gas_left, U256::from(94_718)); assert_eq!( U256::from_dec_str("111111111111111111111111111111").unwrap(), (&result[..]).into() ); + assert_eq!(gas_left, U256::from(98_568)); } // subtraction with overflow @@ -566,7 +653,10 @@ fn math_sub_with_overflow() { } ); - assert_eq!(result, Err(vm::Error::Wasm("Wasm runtime error: User(Panic(\"arithmetic operation overflow\"))".into()))); + match result { + Err(vm::Error::Wasm(_)) => {}, + _ => panic!("Unexpected result {:?}", result), + } } #[test] @@ -583,11 +673,11 @@ fn math_div() { } ).expect("Interpreter to execute without any errors"); - assert_eq!(gas_left, U256::from(86_996)); assert_eq!( U256::from_dec_str("1125000").unwrap(), (&result[..]).into() ); + assert_eq!(gas_left, U256::from(91_564)); } // This test checks the ability of wasm contract to invoke @@ -675,7 +765,7 @@ fn externs() { "Gas limit requested and returned does not match" ); - assert_eq!(gas_left, U256::from(91_857)); + assert_eq!(gas_left, U256::from(97_740)); } #[test] @@ -701,7 +791,7 @@ fn embedded_keccak() { }; assert_eq!(H256::from_slice(&result), H256::from("68371d7e884c168ae2022c82bd837d51837718a7f7dfb7aa3f753074a35e1d87")); - assert_eq!(gas_left, U256::from(80_452)); + assert_eq!(gas_left, U256::from(84_520)); } /// This test checks the correctness of log extern @@ -736,5 +826,5 @@ fn events() { assert_eq!(&log_entry.data, b"gnihtemos"); assert_eq!(&result, b"gnihtemos"); - assert_eq!(gas_left, U256::from(78039)); -} \ No newline at end of file + assert_eq!(gas_left, U256::from(82_721)); +} From ce1609726f41d683bea0bd5f99ff273d3411f171 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Mon, 13 Nov 2017 09:31:08 +0100 Subject: [PATCH 035/132] Update v1 Wallet Dapp (#6935) * Start removing duplicated functionality (v1 inside v2) * Update compilation targets * Update locks * Fix js-old build * Update with removed extra references * Adapt dev.{parity,web3}.html for extra debug info * Update dependencies * Remove Tooltips * Update dependencies * Only inject window.ethereum once * Fix versions to 2.0.x for @parity libraries * Update to @parity/api 2.1.x * Update for @parity/api 2.1.x * Freeze signer plugin dependency hashes * Fix lint * Move local account handling from API * Update for 2.2.x @parity/{shared,ui} * Update API references for middleware * Install updated dependencies * Update for build * Always do local builds for development * Remove unused hasAccounts property * Fix Windows build for js-old * Adjust inclusing rules to be Windows friendly * Explicitly add --config option to webpack * Add process.env.EMBED flag for Windows compatability * Revert embed flag * Fix build * Merge changes from beta * Update packages after merge * Update Accounts from beta * Update with beta * Remove upgrade check * Fix CI build script execution * Make rm -rf commands cross-platform * Remove ability to deploy wallets (only watch) * Update path references for js-old (Windows) * Render local dapps first * Cleanup dependencies --- js-old/package-lock.json | 5325 ++++++---- js-old/package.json | 47 +- js-old/src/index.ejs | 1 + js-old/src/index.js | 24 +- js-old/src/lib.rs.in | 4 +- js-old/src/manifest.json | 7 + .../CreateWallet/WalletType/walletType.js | 54 +- .../modals/CreateWallet/createWalletStore.js | 2 +- js-old/src/modals/Transfer/store.js | 3 +- js-old/src/redux/providers/apiReducer.js | 2 +- js-old/src/redux/providers/balances.js | 288 +- js-old/src/redux/providers/balancesActions.js | 256 +- .../redux/providers/certifications/actions.js | 8 - .../certifications/certifiers.monitor.js | 343 + .../certifications/enhanced-querier.js | 96 + .../providers/certifications/middleware.js | 208 +- .../redux/providers/certifications/reducer.js | 24 +- js-old/src/redux/providers/index.js | 1 + js-old/src/redux/providers/personal.js | 114 +- js-old/src/redux/providers/personalActions.js | 24 +- js-old/src/redux/providers/requestsActions.js | 31 +- .../redux/providers/signerMiddleware.spec.js | 6 + js-old/src/redux/providers/status.js | 264 +- js-old/src/redux/providers/tokens.js | 166 + js-old/src/redux/providers/tokensActions.js | 210 +- js-old/src/redux/providers/tokensReducer.js | 13 +- js-old/src/redux/store.js | 55 +- js-old/src/util/notifications.js | 4 +- js-old/src/util/tokens.js | 133 - js-old/src/util/tokens/bytecodes.js | 23 + js-old/src/util/tokens/index.js | 299 + js-old/src/util/tx.js | 9 +- js-old/src/util/wallets.js | 30 +- js-old/src/util/wallets/consensys-wallet.js | 1 + js-old/src/util/wallets/foundation-wallet.js | 128 +- js-old/src/views/Account/account.js | 17 +- js-old/src/views/Account/account.spec.js | 11 +- js-old/src/views/Accounts/List/list.js | 22 +- js-old/src/views/Accounts/accounts.spec.js | 6 +- .../views/Application/Container/container.js | 14 +- js-old/src/views/Application/TabBar/tabBar.js | 12 +- js-old/src/views/Application/application.js | 48 +- js-old/src/views/Settings/Views/defaults.js | 9 +- js-old/src/views/Settings/Views/views.js | 11 - js-old/webpack/app.js | 8 +- js-old/webpack/libraries.js | 2 +- js-old/webpack/npm.js | 2 +- js-old/yarn.lock | 8651 ----------------- js/package-lock.json | 3289 +++---- js/package.json | 43 +- js/src/Application/application.js | 10 +- js/src/Connection/connection.js | 6 +- js/src/Dapp/dapp.js | 10 +- js/src/DappRequests/Request/request.js | 4 +- js/src/DappRequests/dappRequests.css | 4 +- js/src/DappRequests/store.js | 2 +- js/src/Dapps/dapps.js | 12 +- js/src/Extension/extension.js | 6 +- js/src/FirstRun/TnC/tnc.js | 2 +- js/src/FirstRun/firstRun.js | 10 +- js/src/ParityBar/parityBar.js | 18 +- js/src/PinMatrix/pinMatrix.js | 2 +- js/src/Requests/requests.js | 12 +- js/src/Signer/Embedded/embedded.js | 4 +- js/src/Signer/PendingItem/pendingItem.js | 2 +- js/src/Snackbar/snackbar.js | 4 +- js/src/Status/status.js | 16 +- js/src/SyncWarning/syncWarning.js | 2 +- js/src/UpgradeParity/upgradeParity.js | 8 +- js/src/api-local/accounts/account.js | 118 + js/src/api-local/accounts/accounts.js | 238 + js/src/api-local/accounts/index.js | 21 + js/src/api-local/ethkey/ethkey.js | 160 + js/src/api-local/ethkey/ethkey.wasm.js | 1 + js/src/api-local/ethkey/index.js | 55 + js/src/api-local/ethkey/index.spec.js | 59 + js/src/api-local/ethkey/worker.js | 139 + js/src/api-local/ethkey/workerPool.js | 110 + js/src/api-local/localAccountsMiddleware.js | 309 + .../api-local/localAccountsMiddleware.spec.js | 160 + js/src/api-local/transactions.js | 161 + js/src/api-local/transactions.spec.js | 88 + js/src/dev.parity.html | 6 +- js/src/dev.web3.html | 12 +- js/src/embed.js | 12 +- js/src/index.parity.js | 8 +- js/src/inject.js | 20 +- js/src/inject.script.js | 23 + js/src/secureApi.js | 2 +- js/src/shellMiddleware.js | 4 +- js/src/web3.extensions.js | 6 +- js/webpack/app.js | 14 +- js/webpack/embed.js | 1 - js/webpack/{libraries.js => inject.js} | 12 +- js/webpack/npm.js | 127 - js/webpack/rules/es6.js | 2 +- js/webpack/rules/parity.js | 2 +- 97 files changed, 8062 insertions(+), 14290 deletions(-) create mode 100644 js-old/src/manifest.json create mode 100644 js-old/src/redux/providers/certifications/certifiers.monitor.js create mode 100644 js-old/src/redux/providers/certifications/enhanced-querier.js create mode 100644 js-old/src/redux/providers/tokens.js delete mode 100644 js-old/src/util/tokens.js create mode 100644 js-old/src/util/tokens/bytecodes.js create mode 100644 js-old/src/util/tokens/index.js delete mode 100644 js-old/yarn.lock create mode 100644 js/src/api-local/accounts/account.js create mode 100644 js/src/api-local/accounts/accounts.js create mode 100644 js/src/api-local/accounts/index.js create mode 100644 js/src/api-local/ethkey/ethkey.js create mode 100644 js/src/api-local/ethkey/ethkey.wasm.js create mode 100644 js/src/api-local/ethkey/index.js create mode 100644 js/src/api-local/ethkey/index.spec.js create mode 100644 js/src/api-local/ethkey/worker.js create mode 100644 js/src/api-local/ethkey/workerPool.js create mode 100644 js/src/api-local/localAccountsMiddleware.js create mode 100644 js/src/api-local/localAccountsMiddleware.spec.js create mode 100644 js/src/api-local/transactions.js create mode 100644 js/src/api-local/transactions.spec.js create mode 100644 js/src/inject.script.js rename js/webpack/{libraries.js => inject.js} (92%) delete mode 100644 js/webpack/npm.js diff --git a/js-old/package-lock.json b/js-old/package-lock.json index ddfb8e2af..7677b6335 100644 --- a/js-old/package-lock.json +++ b/js-old/package-lock.json @@ -1,13 +1,64 @@ { - "name": "parity.js", - "version": "1.8.18", + "name": "@parity/dapp-v1", + "version": "1.9.99", "lockfileVersion": 1, "requires": true, "dependencies": { + "@parity/abi": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@parity/abi/-/abi-2.1.1.tgz", + "integrity": "sha512-AWd1Lnsau8DvEihzoGg3xCSOIHFqf1tsn14wHVCRv7O5BcCI+6Ww/g4iLjdYKGLjtMKtxdQiUblCcIhaZrqmpQ==", + "requires": { + "bignumber.js": "3.0.1", + "js-sha3": "0.5.5", + "utf8": "2.1.2" + } + }, + "@parity/api": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@parity/api/-/api-2.1.3.tgz", + "integrity": "sha512-M+/9mGQ6Th6LRIXetUHQQqsqSE//XAd/p5I/jrhKqV9dW73dwTIKW/xlPWPi/JwbRiTehbliJKmrt8vsOtvkww==", + "requires": { + "@parity/abi": "2.1.1", + "@parity/jsonrpc": "2.1.2", + "@parity/wordlist": "1.1.0", + "bignumber.js": "3.0.1", + "blockies": "0.0.2", + "es6-error": "4.0.0", + "es6-promise": "4.1.1", + "eventemitter3": "2.0.2", + "isomorphic-fetch": "2.2.1", + "js-sha3": "0.5.5", + "lodash": "4.17.4", + "store": "2.0.12" + }, + "dependencies": { + "es6-promise": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "store": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/store/-/store-2.0.12.tgz", + "integrity": "sha1-jFNOKguDH3K3X8XxEZhXxE711ZM=" + } + } + }, + "@parity/jsonrpc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@parity/jsonrpc/-/jsonrpc-2.1.2.tgz", + "integrity": "sha512-JN5MTZO9d27ZMLuibnYWri2Is0p5ZM7dAXafJNWBKGe1sMBDqQA44Sz6La4Baem2PTgjWAlWYjeD78SXx+9mYA==" + }, "@parity/wordlist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@parity/wordlist/-/wordlist-1.0.1.tgz", - "integrity": "sha1-wn5A4as2OKCe1TtKLoHVMbXrWjE=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@parity/wordlist/-/wordlist-1.1.0.tgz", + "integrity": "sha1-np7Tq3g39WM7WETmCjVenmPkJ64=" }, "JSONStream": { "version": "0.8.4", @@ -20,30 +71,31 @@ } }, "abab": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", - "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", "dev": true }, "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true }, "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", "dev": true, "requires": { - "mime-types": "2.1.16", + "mime-types": "2.1.17", "negotiator": "0.6.1" } }, "acorn": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", - "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", "dev": true }, "acorn-dynamic-import": { @@ -98,14 +150,14 @@ } }, "ajv": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", - "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", "requires": { "co": "4.6.0", "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" }, "dependencies": { "co": { @@ -149,9 +201,10 @@ "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=" }, "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true }, "ansi-html": { "version": "0.0.7", @@ -195,9 +248,9 @@ } }, "aproba": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", - "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "archive-type": { "version": "3.2.0", @@ -286,15 +339,7 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "es-abstract": "1.7.0" - } - }, - "arraybuffer-loader": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/arraybuffer-loader/-/arraybuffer-loader-0.2.2.tgz", - "integrity": "sha1-jnKU0VGqyO1wqC53Pq0FWQ23Dik=", - "requires": { - "loader-utils": "0.2.17" + "es-abstract": "1.9.0" } }, "arrify": { @@ -311,15 +356,16 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", "dev": true, "requires": { - "bn.js": "4.11.7", + "bn.js": "4.11.8", "inherits": "2.0.3", "minimalistic-assert": "1.0.0" } @@ -336,7 +382,8 @@ "assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true }, "assertion-error": { "version": "1.0.2", @@ -362,16 +409,11 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "async-each-series": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", - "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "attr-accept": { "version": "1.1.0", @@ -385,22 +427,24 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000708", + "caniuse-db": "1.0.30000760", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true }, "aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true }, "babel-cli": { "version": "6.23.0", @@ -409,7 +453,7 @@ "dev": true, "requires": { "babel-core": "6.23.1", - "babel-polyfill": "6.23.0", + "babel-polyfill": "6.26.0", "babel-register": "6.23.0", "babel-runtime": "6.23.0", "chokidar": "1.7.0", @@ -421,7 +465,7 @@ "output-file-sync": "1.1.2", "path-is-absolute": "1.0.1", "slash": "1.0.0", - "source-map": "0.5.6", + "source-map": "0.5.7", "v8flags": "2.1.1" }, "dependencies": { @@ -442,9 +486,9 @@ } }, "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { "chalk": "1.1.3", "esutils": "2.0.2", @@ -457,25 +501,25 @@ "integrity": "sha1-wUPLYhuy9iFxDCIMXVedFbikQt8=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.23.0", "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", "convert-source-map": "1.5.0", - "debug": "2.6.8", + "debug": "2.6.9", "json5": "0.5.1", "lodash": "4.17.2", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", - "private": "0.1.7", + "private": "0.1.8", "slash": "1.0.0", - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "babel-eslint": { @@ -484,32 +528,51 @@ "integrity": "sha1-imqITwhapwYK9pz8dzQcL5k3D7I=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", "lodash.pickby": "4.6.0" } }, "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "requires": { "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.2", - "source-map": "0.5.6", + "lodash": "4.17.4", + "source-map": "0.5.7", "trim-right": "1.0.1" }, "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, @@ -520,8 +583,8 @@ "dev": true, "requires": { "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -532,18 +595,30 @@ "requires": { "babel-helper-explode-assignable-expression": "6.24.1", "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-types": "6.26.0" } }, "babel-helper-builder-react-jsx": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz", - "integrity": "sha1-CteRfjPI11HmRtrKTnfMGTd9LLw=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", "esutils": "2.0.2" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.11.0" + } + } } }, "babel-helper-call-delegate": { @@ -552,20 +627,57 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "requires": { "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-helper-define-map": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", - "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "requires": { "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "lodash": "4.17.2" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + } } }, "babel-helper-explode-assignable-expression": { @@ -575,8 +687,8 @@ "dev": true, "requires": { "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-explode-class": { @@ -587,8 +699,8 @@ "requires": { "babel-helper-bindify-decorators": "6.24.1", "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-function-name": { @@ -597,10 +709,26 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "requires": { "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-helper-get-function-arity": { @@ -608,8 +736,24 @@ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-helper-hoist-variables": { @@ -617,8 +761,24 @@ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-helper-optimise-call-expression": { @@ -626,18 +786,55 @@ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "lodash": "4.17.2" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + } } }, "babel-helper-remap-async-to-generator": { @@ -648,9 +845,9 @@ "requires": { "babel-helper-function-name": "6.24.1", "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-replace-supers": { @@ -660,10 +857,26 @@ "requires": { "babel-helper-optimise-call-expression": "6.24.1", "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-helpers": { @@ -671,8 +884,24 @@ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-loader": { @@ -685,6 +914,20 @@ "loader-utils": "0.2.17", "mkdirp": "0.5.1", "object-assign": "4.1.1" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "babel-messages": { @@ -692,7 +935,23 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-check-es2015-constants": { @@ -700,7 +959,23 @@ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-lodash": { @@ -746,9 +1021,9 @@ "integrity": "sha1-gSzISxPrWN1AWyxjoo6m97JqtKc=", "dev": true, "requires": { - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4" + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" } }, "babel-plugin-syntax-async-functions": { @@ -865,7 +1140,7 @@ "requires": { "babel-plugin-syntax-class-constructor-call": "6.18.0", "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-template": "6.26.0" } }, "babel-plugin-transform-class-properties": { @@ -877,7 +1152,7 @@ "babel-helper-function-name": "6.24.1", "babel-plugin-syntax-class-properties": "6.13.0", "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-template": "6.26.0" } }, "babel-plugin-transform-decorators": { @@ -889,8 +1164,8 @@ "babel-helper-explode-class": "6.24.1", "babel-plugin-syntax-decorators": "6.13.0", "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-decorators-legacy": { @@ -901,7 +1176,7 @@ "requires": { "babel-plugin-syntax-decorators": "6.13.0", "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-template": "6.26.0" } }, "babel-plugin-transform-do-expressions": { @@ -919,7 +1194,23 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-block-scoped-functions": { @@ -927,19 +1218,56 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-block-scoping": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", - "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "lodash": "4.17.2" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + } } }, "babel-plugin-transform-es2015-classes": { @@ -947,15 +1275,31 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "requires": { - "babel-helper-define-map": "6.24.1", + "babel-helper-define-map": "6.26.0", "babel-helper-function-name": "6.24.1", "babel-helper-optimise-call-expression": "6.24.1", "babel-helper-replace-supers": "6.24.1", "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-computed-properties": { @@ -963,8 +1307,24 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-destructuring": { @@ -972,7 +1332,23 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-duplicate-keys": { @@ -980,8 +1356,24 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-for-of": { @@ -989,7 +1381,23 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-function-name": { @@ -998,8 +1406,24 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "requires": { "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-literals": { @@ -1007,7 +1431,23 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-modules-amd": { @@ -1015,20 +1455,48 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + }, + "dependencies": { + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-modules-systemjs": { @@ -1037,8 +1505,24 @@ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "requires": { "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-modules-umd": { @@ -1047,8 +1531,24 @@ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "requires": { "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-object-super": { @@ -1057,7 +1557,23 @@ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "requires": { "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-parameters": { @@ -1067,10 +1583,26 @@ "requires": { "babel-helper-call-delegate": "6.24.1", "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -1078,8 +1610,24 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-spread": { @@ -1087,7 +1635,23 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -1095,9 +1659,25 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-template-literals": { @@ -1105,7 +1685,23 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-typeof-symbol": { @@ -1113,7 +1709,23 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -1121,9 +1733,25 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", "regexpu-core": "2.0.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-transform-exponentiation-operator": { @@ -1192,7 +1820,7 @@ "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, "requires": { - "babel-helper-builder-react-jsx": "6.24.1", + "babel-helper-builder-react-jsx": "6.26.0", "babel-plugin-syntax-jsx": "6.18.0", "babel-runtime": "6.23.0" } @@ -1224,11 +1852,11 @@ "dev": true }, "babel-plugin-transform-regenerator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", - "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "requires": { - "regenerator-transform": "0.9.11" + "regenerator-transform": "0.10.1" } }, "babel-plugin-transform-runtime": { @@ -1245,8 +1873,24 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-plugin-webpack-alias": { @@ -1255,7 +1899,7 @@ "integrity": "sha1-BaG6I8KFlWYPtupXNkJPxZa0okc=", "dev": true, "requires": { - "babel-types": "6.25.0", + "babel-types": "6.26.0", "find-up": "2.1.0", "lodash.some": "4.6.0", "lodash.template": "4.4.0" @@ -1292,14 +1936,46 @@ } }, "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "core-js": "2.4.1", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + } + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } } }, "babel-preset-env": { @@ -1313,7 +1989,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.24.1", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", "babel-plugin-transform-es2015-classes": "6.24.1", "babel-plugin-transform-es2015-computed-properties": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", @@ -1334,9 +2010,9 @@ "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-regenerator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", "browserslist": "1.7.7", - "electron-to-chromium": "1.3.16", + "electron-to-chromium": "1.3.27", "invariant": "2.2.2" } }, @@ -1349,7 +2025,7 @@ "babel-plugin-check-es2015-constants": "6.22.0", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.24.1", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", "babel-plugin-transform-es2015-classes": "6.24.1", "babel-plugin-transform-es2015-computed-properties": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", @@ -1369,7 +2045,7 @@ "babel-plugin-transform-es2015-template-literals": "6.22.0", "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.24.1" + "babel-plugin-transform-regenerator": "6.26.0" } }, "babel-preset-es2016": { @@ -1457,7 +2133,7 @@ "babel-helper-function-name": "6.24.1", "babel-plugin-syntax-class-properties": "6.13.0", "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-template": "6.26.0" } } } @@ -1487,7 +2163,7 @@ "home-or-tmp": "2.0.0", "lodash": "4.17.2", "mkdirp": "0.5.1", - "source-map-support": "0.4.15" + "source-map-support": "0.4.18" } }, "babel-runtime": { @@ -1497,45 +2173,115 @@ "requires": { "core-js": "2.4.1", "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + } } }, "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash": "4.17.2" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + } } }, "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "6.22.0", + "babel-code-frame": "6.26.0", "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "debug": "2.6.8", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.2", - "lodash": "4.17.2" + "lodash": "4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + } } }, "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "6.23.0", + "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.2", + "lodash": "4.17.4", "to-fast-properties": "1.0.3" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + } } }, "babelify": { @@ -1543,56 +2289,75 @@ "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", "requires": { - "babel-core": "6.25.0", + "babel-core": "6.26.0", "object-assign": "4.1.1" }, "dependencies": { "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", "convert-source-map": "1.5.0", - "debug": "2.6.8", + "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.2", + "lodash": "4.17.4", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", - "private": "0.1.7", + "private": "0.1.8", "slash": "1.0.0", - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.23.0", - "core-js": "2.4.1", + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", "home-or-tmp": "2.0.0", - "lodash": "4.17.2", + "lodash": "4.17.4", "mkdirp": "0.5.1", - "source-map-support": "0.4.15" + "source-map-support": "0.4.18" } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==" + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "balanced-match": { "version": "1.0.0", @@ -1619,6 +2384,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, "optional": true, "requires": { "tweetnacl": "0.14.5" @@ -1630,104 +2396,19 @@ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" }, "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, "bignumber.js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-3.0.1.tgz", "integrity": "sha1-gHZS0Q453jfp40lyR+3HmLt0b3Y=" }, - "bin-build": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", - "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", - "dev": true, - "requires": { - "archive-type": "3.2.0", - "decompress": "3.0.0", - "download": "4.4.3", - "exec-series": "1.0.3", - "rimraf": "2.6.1", - "tempfile": "1.1.1", - "url-regex": "3.2.0" - }, - "dependencies": { - "tempfile": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", - "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2", - "uuid": "2.0.3" - } - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "bin-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", - "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", - "dev": true, - "requires": { - "executable": "1.1.0" - } - }, - "bin-version": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", - "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", - "dev": true, - "requires": { - "find-versions": "1.2.1" - } - }, - "bin-version-check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", - "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", - "dev": true, - "requires": { - "bin-version": "1.0.4", - "minimist": "1.2.0", - "semver": "4.3.6", - "semver-truncate": "1.1.2" - }, - "dependencies": { - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - } - } - }, - "bin-wrapper": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", - "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", - "dev": true, - "requires": { - "bin-check": "2.0.0", - "bin-version-check": "2.1.0", - "download": "4.4.3", - "each-async": "1.1.1", - "lazy-req": "1.1.0", - "os-filter-obj": "1.0.3" - } - }, "binary-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz", - "integrity": "sha1-ZlBsFs5vTWkopbPNajPKQelB43s=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", "dev": true }, "bindings": { @@ -1771,9 +2452,9 @@ "dev": true }, "bn.js": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", - "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==" + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, "boolbase": { "version": "1.0.0", @@ -1785,14 +2466,15 @@ "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, "requires": { "hoek": "2.16.3" } }, "bowser": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.7.1.tgz", - "integrity": "sha1-pN6PGKGg3JUx6yqSoVIftqm6lqU=" + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.8.1.tgz", + "integrity": "sha512-NMPaR8ILtdLSWzxQtEs16XbxMcY8ohWGQ5V+TZSJS3fNUt/PBAGkF6YWO9B/4qWE23bK3o0moQKq8UyFEosYkA==" }, "brace": { "version": "0.9.0", @@ -1833,15 +2515,16 @@ "dev": true }, "browserify-aes": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "requires": { "buffer-xor": "1.0.3", "cipher-base": "1.0.4", "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "inherits": "2.0.3" + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, "browserify-cipher": { @@ -1850,9 +2533,9 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.0.6", + "browserify-aes": "1.1.1", "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.0" + "evp_bytestokey": "1.0.3" } }, "browserify-des": { @@ -1872,7 +2555,7 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "4.11.7", + "bn.js": "4.11.8", "randombytes": "2.0.5" } }, @@ -1882,7 +2565,7 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "4.11.7", + "bn.js": "4.11.8", "browserify-rsa": "4.0.1", "create-hash": "1.1.3", "create-hmac": "1.1.6", @@ -1906,8 +2589,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000708", - "electron-to-chromium": "1.3.16" + "caniuse-db": "1.0.30000760", + "electron-to-chromium": "1.3.27" } }, "buffer": { @@ -1986,7 +2669,7 @@ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { - "no-case": "2.3.1", + "no-case": "2.3.2", "upper-case": "1.1.3" } }, @@ -2011,15 +2694,15 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000708", + "caniuse-db": "1.0.30000760", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" } }, "caniuse-db": { - "version": "1.0.30000708", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000708.tgz", - "integrity": "sha1-wuc2vTt/xfbBTkxt/mK5jtFeils=", + "version": "1.0.30000760", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000760.tgz", + "integrity": "sha1-PqKUc+t4psywny63Osnh3r/sUo0=", "dev": true }, "capture-stack-trace": { @@ -2028,9 +2711,10 @@ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" }, "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true }, "caw": { "version": "1.2.0", @@ -2186,6 +2870,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", + "fsevents": "1.1.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -2225,11 +2910,6 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" }, - "ci-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", - "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=" - }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -2252,9 +2932,9 @@ "dev": true }, "clap": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", - "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "dev": true, "requires": { "chalk": "1.1.3" @@ -2266,26 +2946,28 @@ "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" }, "clean-css": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.7.tgz", - "integrity": "sha1-ua6k+FZ5iJzz6ui0A0nsTr390DI=", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "dev": true, "requires": { - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "1.0.1" } }, "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, "cliui": { "version": "3.2.0", @@ -2298,9 +2980,9 @@ } }, "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" }, "clone-regexp": { "version": "1.0.0", @@ -2317,15 +2999,6 @@ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" }, - "cmd-shim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.2.tgz", - "integrity": "sha1-b8vamUg6j9FdfTChlspp1oii79s=", - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1" - } - }, "co": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", @@ -2337,7 +3010,7 @@ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "dev": true, "requires": { - "q": "1.5.0" + "q": "1.5.1" } }, "code-point-at": { @@ -2346,9 +3019,9 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codemirror": { - "version": "5.28.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.28.0.tgz", - "integrity": "sha512-E/Z6050shti9v9ivl0dUClVRM4xaH204jsJmEpNYC6KDTlQwAz+5DdhLzn0tjaL/Mp1P0J1uhZokcSP2RFSwlA==" + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.31.0.tgz", + "integrity": "sha512-LKbMZKoAz7pMmWuSEl253G6yyloSulj1kXfvYv+3n3I8wMiI7QwnCHwKM3Zw5S9ItNV28Layq0/ihQXWmn9T9w==" }, "collapse-white-space": { "version": "1.0.3", @@ -2361,15 +3034,16 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "1.0.2", - "color-convert": "1.9.0", + "clone": "1.0.3", + "color-convert": "1.9.1", "color-string": "0.3.0" } }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -2383,7 +3057,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-string": { "version": "0.3.0", @@ -2406,7 +3081,7 @@ "object-assign": "4.1.1", "pipetteur": "2.0.3", "plur": "2.1.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-reporter": "1.4.1", "text-table": "0.2.0", "yargs": "1.3.3" @@ -2421,7 +3096,7 @@ "chalk": "1.1.3", "lodash": "4.17.2", "log-symbols": "1.0.2", - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "yargs": { @@ -2453,6 +3128,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, "requires": { "delayed-stream": "1.0.0" } @@ -2530,12 +3206,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", - "dev": true - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2549,15 +3219,15 @@ "dev": true }, "content-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, "content-type-parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", - "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", "dev": true }, "convert-source-map": { @@ -2613,6 +3283,18 @@ "once": "1.4.0", "path-is-absolute": "1.0.1" } + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } } } }, @@ -2652,72 +3334,6 @@ "log-driver": "1.2.5", "minimist": "1.2.0", "request": "2.79.0" - }, - "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.0", - "pinkie-promise": "2.0.1" - } - }, - "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.16", - "oauth-sign": "0.8.2", - "qs": "6.3.0", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.4.3", - "uuid": "3.0.0" - } - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - } } }, "create-ecdh": { @@ -2726,7 +3342,7 @@ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "dev": true, "requires": { - "bn.js": "4.11.7", + "bn.js": "4.11.8", "elliptic": "6.4.0" } }, @@ -2746,7 +3362,7 @@ "cipher-base": "1.0.4", "inherits": "2.0.3", "ripemd160": "2.0.1", - "sha.js": "2.4.8" + "sha.js": "2.4.9" } }, "create-hmac": { @@ -2759,7 +3375,7 @@ "inherits": "2.0.3", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.8" + "sha.js": "2.4.9" } }, "create-thenable": { @@ -2772,6 +3388,16 @@ "unique-concat": "0.2.2" } }, + "cross-env": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.1.tgz", + "integrity": "sha512-Wtvr+z0Z06KO1JxjfRRsPC+df7biIOiuV4iZ73cThjFGkH+ULBZq1MkBdywEcJC4cTDbO6c8IjgRjfswx3YTBA==", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "is-windows": "1.0.1" + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -2780,21 +3406,22 @@ "requires": { "lru-cache": "4.1.1", "shebang-command": "1.2.0", - "which": "1.2.14" + "which": "1.3.0" } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, "requires": { "boom": "2.10.1" } }, "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { "browserify-cipher": "1.0.0", @@ -2804,9 +3431,10 @@ "create-hmac": "1.1.6", "diffie-hellman": "5.0.2", "inherits": "2.0.3", - "pbkdf2": "3.0.12", + "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "randombytes": "2.0.5", + "randomfill": "1.0.3" } }, "crypto-js": { @@ -2826,18 +3454,32 @@ "integrity": "sha1-K6fyATG5NZdJaz6btQB4WknNKeo=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", + "babel-code-frame": "6.26.0", "css-selector-tokenizer": "0.7.0", "cssnano": "3.10.0", "loader-utils": "0.2.17", "lodash.camelcase": "4.3.0", "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-modules-extract-imports": "1.1.0", "postcss-modules-local-by-default": "1.2.0", "postcss-modules-scope": "1.1.0", "postcss-modules-values": "1.3.0", "source-list-map": "0.1.8" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "css-rule-stream": { @@ -2916,7 +3558,7 @@ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", "dev": true, "requires": { - "regenerate": "1.3.2", + "regenerate": "1.3.3", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -2982,7 +3624,7 @@ "defined": "1.0.0", "has": "1.0.1", "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-calc": "5.3.1", "postcss-colormin": "2.2.2", "postcss-convert-values": "2.6.1", @@ -3017,8 +3659,8 @@ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", "dev": true, "requires": { - "clap": "1.2.0", - "source-map": "0.5.6" + "clap": "1.2.3", + "source-map": "0.5.7" } }, "cssom": { @@ -3050,13 +3692,13 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.24" + "es5-ext": "0.10.35" } }, "d3-array": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.0.tgz", - "integrity": "sha1-FH0mlyDhdMQFen9CvosPPyulMQg=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", + "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" }, "d3-collection": { "version": "1.0.4", @@ -3091,13 +3733,13 @@ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.0.tgz", "integrity": "sha1-C0F1yjHL5l4lRCfkZi3678NzRi0=", "requires": { - "d3-array": "1.2.0", + "d3-array": "1.2.1", "d3-collection": "1.0.4", "d3-color": "1.0.3", "d3-format": "1.2.0", "d3-interpolate": "1.1.5", "d3-time": "1.0.7", - "d3-time-format": "2.0.5" + "d3-time-format": "2.1.0" } }, "d3-shape": { @@ -3114,9 +3756,9 @@ "integrity": "sha1-lMr27bt4ebuAnQ0fdXK8SEgvcnA=" }, "d3-time-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.5.tgz", - "integrity": "sha1-nXeAIE98kRnJFwsaVttN6aivly4=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.0.tgz", + "integrity": "sha512-mqTsfDTylgwE3YE/VNs9oB2OGX274fO0B5j1irbgLQI+X3FPoJg25pesNxrcdZ2nBeRx/6sHDJlDyMIjWL0BGQ==", "requires": { "d3-time": "1.0.7" } @@ -3125,6 +3767,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "1.0.0" }, @@ -3132,7 +3775,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, @@ -3151,14 +3795,9 @@ "integrity": "sha1-u30IZDjevkGCpIX7PfP7+5nWFTw=" }, "dateformat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", - "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=" - }, - "death": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" }, "debounce": { "version": "1.0.0", @@ -3169,9 +3808,9 @@ } }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -3311,7 +3950,7 @@ "strip-dirs": "1.1.1", "through2": "2.0.3", "vinyl": "1.2.0", - "yauzl": "2.8.0" + "yauzl": "2.9.1" }, "dependencies": { "through2": { @@ -3368,14 +4007,6 @@ "strip-bom": "2.0.0" } }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "requires": { - "clone": "1.0.2" - } - }, "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", @@ -3404,13 +4035,14 @@ "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "rimraf": "2.6.2" } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "delegates": { "version": "1.0.0", @@ -3459,8 +4091,8 @@ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { - "bn.js": "4.11.7", - "miller-rabin": "4.0.0", + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", "randombytes": "2.0.5" } }, @@ -3481,14 +4113,14 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000708", + "caniuse-db": "1.0.30000760", "css-rule-stream": "1.1.0", "duplexer2": "0.0.2", "jsonfilter": "1.1.2", "ldjson-stream": "1.2.1", "lodash": "4.17.2", "multimatch": "2.1.0", - "postcss": "5.2.17", + "postcss": "5.2.18", "source-map": "0.4.4", "through2": "0.6.5", "yargs": "3.32.0" @@ -3663,7 +4295,7 @@ "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", "requires": { - "browserify-aes": "1.0.6", + "browserify-aes": "1.1.1", "create-hash": "1.1.3", "create-hmac": "1.1.6" } @@ -3683,32 +4315,14 @@ } }, "duplexify": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", - "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", "requires": { - "end-of-stream": "1.0.0", + "end-of-stream": "1.4.0", "inherits": "2.0.3", "readable-stream": "2.3.3", "stream-shift": "1.0.0" - }, - "dependencies": { - "end-of-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", - "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", - "requires": { - "once": "1.3.3" - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "requires": { - "wrappy": "1.0.2" - } - } } }, "each-async": { @@ -3724,6 +4338,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, "optional": true, "requires": { "jsbn": "0.1.1" @@ -3756,6 +4371,18 @@ "lodash": "3.10.1" }, "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, "lodash": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", @@ -3775,9 +4402,9 @@ } }, "electron-to-chromium": { - "version": "1.3.16", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.16.tgz", - "integrity": "sha1-0OAmc1dUdwkBrjAaIWZMukXZL30=", + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", + "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", "dev": true }, "element-resize-detector": { @@ -3793,7 +4420,7 @@ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "requires": { - "bn.js": "4.11.7", + "bn.js": "4.11.8", "brorand": "1.1.0", "hash.js": "1.1.3", "hmac-drbg": "1.0.1", @@ -3824,7 +4451,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.18" + "iconv-lite": "0.4.19" } }, "end-of-stream": { @@ -3844,7 +4471,7 @@ "graceful-fs": "4.1.11", "memory-fs": "0.4.1", "object-assign": "4.1.1", - "tapable": "0.2.7" + "tapable": "0.2.8" } }, "entities": { @@ -3904,13 +4531,14 @@ } }, "es-abstract": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.7.0.tgz", - "integrity": "sha1-363ndOAb/Nl/lhgCmMRJyGI/uUw=", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", + "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", "dev": true, "requires": { "es-to-primitive": "1.1.1", - "function-bind": "1.1.0", + "function-bind": "1.1.1", + "has": "1.0.1", "is-callable": "1.1.3", "is-regex": "1.0.4" } @@ -3927,12 +4555,12 @@ } }, "es5-ext": { - "version": "0.10.24", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.24.tgz", - "integrity": "sha1-pVh3yZJLwMjZvTwsvhdJWsFwmxQ=", + "version": "0.10.35", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", + "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", "dev": true, "requires": { - "es6-iterator": "2.0.1", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } }, @@ -3942,13 +4570,13 @@ "integrity": "sha1-8JTHBB9mJZm7EnINoFnWucf/D0A=" }, "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.24", + "es5-ext": "0.10.35", "es6-symbol": "3.1.1" } }, @@ -3959,8 +4587,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.24", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -3978,8 +4606,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.24", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" } @@ -3991,7 +4619,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.24" + "es5-ext": "0.10.35" } }, "es6-templates": { @@ -4011,8 +4639,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.24", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } }, @@ -4028,33 +4656,23 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", + "esprima": "3.1.3", + "estraverse": "4.2.0", "esutils": "2.0.2", "optionator": "0.8.2", - "source-map": "0.2.0" + "source-map": "0.5.7" }, "dependencies": { - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true - }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } } } }, @@ -4076,22 +4694,22 @@ "integrity": "sha1-m8MfxzQWks93LoBgdQj2fXEcVgk=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", + "babel-code-frame": "6.26.0", "chalk": "1.1.3", "concat-stream": "1.6.0", - "debug": "2.6.8", + "debug": "2.6.9", "doctrine": "1.5.0", "escope": "3.6.0", - "espree": "3.4.3", + "espree": "3.5.1", "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "glob": "7.1.2", "globals": "9.18.0", - "ignore": "3.3.3", + "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "0.12.0", - "is-my-json-valid": "2.16.0", + "is-my-json-valid": "2.16.1", "is-resolvable": "1.0.0", "js-yaml": "3.6.1", "json-stable-stringify": "1.0.1", @@ -4112,31 +4730,6 @@ "user-home": "2.0.0" }, "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -4151,52 +4744,6 @@ "path-is-absolute": "1.0.1" } }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.1.0", - "figures": "1.7.0", - "lodash": "4.17.2", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -4267,12 +4814,12 @@ "dev": true }, "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", + "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", "dev": true, "requires": { - "acorn": "5.1.1", + "acorn": "5.2.1", "acorn-jsx": "3.0.1" } }, @@ -4330,14 +4877,25 @@ "requires": { "babel-preset-es2015": "6.24.1", "babelify": "7.3.0", - "bn.js": "4.11.7", + "bn.js": "4.11.8", "create-hash": "1.1.3", "ethjs-util": "0.1.4", "keccak": "1.3.0", "rlp": "2.0.0", - "secp256k1": "3.3.0" + "secp256k1": "3.3.1" }, "dependencies": { + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-preset-es2015": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", @@ -4346,7 +4904,7 @@ "babel-plugin-check-es2015-constants": "6.22.0", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.24.1", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", "babel-plugin-transform-es2015-classes": "6.24.1", "babel-plugin-transform-es2015-computed-properties": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", @@ -4355,7 +4913,7 @@ "babel-plugin-transform-es2015-function-name": "6.24.1", "babel-plugin-transform-es2015-literals": "6.22.0", "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", "babel-plugin-transform-es2015-modules-umd": "6.24.1", "babel-plugin-transform-es2015-object-super": "6.24.1", @@ -4366,8 +4924,22 @@ "babel-plugin-transform-es2015-template-literals": "6.22.0", "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.24.1" + "babel-plugin-transform-regenerator": "6.26.0" } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" } } }, @@ -4387,7 +4959,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.24" + "es5-ext": "0.10.35" } }, "eventemitter3": { @@ -4402,57 +4974,12 @@ "dev": true }, "evp_bytestokey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", - "requires": { - "create-hash": "1.1.3" - } - }, - "exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "p-finally": "1.0.0", - "pify": "3.0.0", - "rimraf": "2.6.1", - "tempfile": "2.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "exec-series": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", - "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", - "dev": true, + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { - "async-each-series": "1.1.0", - "object-assign": "4.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" } }, "execall": { @@ -4464,15 +4991,6 @@ "clone-regexp": "1.0.0" } }, - "executable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", - "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, "exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", @@ -4496,9 +5014,9 @@ } }, "expand-template": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz", - "integrity": "sha1-bDAzIxd6YrGyLAcCefeGEoe2mxo=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.0.tgz", + "integrity": "sha512-kkjwkMqj0h4w/sb32ERCDxCQkREMCAgS39DscDnSwDsbxnwwM1BTZySdC3Bn1lhY7vL08n9GoO/fVTynjDgRyQ==" }, "express": { "version": "4.14.1", @@ -4506,10 +5024,10 @@ "integrity": "sha1-ZGwjf3ZvFIwhIK/wc4F7nk1+DTM=", "dev": true, "requires": { - "accepts": "1.3.3", + "accepts": "1.3.4", "array-flatten": "1.1.1", "content-disposition": "0.5.2", - "content-type": "1.0.2", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.2.0", @@ -4522,7 +5040,7 @@ "merge-descriptors": "1.0.1", "methods": "1.1.2", "on-finished": "2.3.0", - "parseurl": "1.3.1", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", "proxy-addr": "1.1.5", "qs": "6.2.0", @@ -4531,7 +5049,7 @@ "serve-static": "1.11.2", "type-is": "1.6.15", "utils-merge": "1.0.0", - "vary": "1.1.1" + "vary": "1.1.2" }, "dependencies": { "debug": { @@ -4576,16 +5094,6 @@ "is-extendable": "0.1.1" } }, - "external-editor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", - "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", - "requires": { - "iconv-lite": "0.4.18", - "jschardet": "1.5.0", - "tmp": "0.0.31" - } - }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -4608,6 +5116,20 @@ "dev": true, "requires": { "loader-utils": "0.2.17" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "extract-text-webpack-plugin": { @@ -4619,12 +5141,27 @@ "async": "1.5.2", "loader-utils": "0.2.17", "webpack-sources": "0.1.5" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fancy-log": { "version": "1.3.0", @@ -4640,6 +5177,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -4653,9 +5195,9 @@ "dev": true }, "fbjs": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.14.tgz", - "integrity": "sha1-0dviviVMNakeCfMfnNUKQLKg7Rw=", + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "requires": { "core-js": "1.2.7", "isomorphic-fetch": "2.2.1", @@ -4663,7 +5205,7 @@ "object-assign": "4.1.1", "promise": "7.3.1", "setimmediate": "1.0.5", - "ua-parser-js": "0.7.14" + "ua-parser-js": "0.7.17" }, "dependencies": { "core-js": { @@ -4682,11 +5224,13 @@ } }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" } }, "file-entry-cache": { @@ -4695,7 +5239,7 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.2.2", + "flat-cache": "1.3.0", "object-assign": "4.1.1" } }, @@ -4706,6 +5250,20 @@ "dev": true, "requires": { "loader-utils": "0.2.17" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "file-saver": { @@ -4765,9 +5323,9 @@ } }, "filesize": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.10.tgz", - "integrity": "sha1-/I+iPdtO+eXgq24eZPZ5okpWdh8=", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==", "dev": true }, "fill-range": { @@ -4823,12 +5381,6 @@ "pkg-dir": "1.0.0" } }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -4838,26 +5390,6 @@ "pinkie-promise": "2.0.1" } }, - "find-versions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", - "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", - "dev": true, - "requires": { - "array-uniq": "1.0.3", - "get-stdin": "4.0.1", - "meow": "3.7.0", - "semver-regex": "1.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } - } - }, "first-chunk-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", @@ -4868,13 +5400,13 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-2.0.1.tgz", "integrity": "sha1-cOKRiKdL4MPIlAnu0fqVd5B64y8=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } }, "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { "circular-json": "0.3.3", @@ -4911,16 +5443,18 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.5", - "mime-types": "2.1.16" + "mime-types": "2.1.17" } }, "format-json": { @@ -4943,9 +5477,9 @@ } }, "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "dev": true }, "fresh": { @@ -4964,7 +5498,7 @@ "jsonfile": "2.4.0", "klaw": "1.3.1", "path-is-absolute": "1.0.1", - "rimraf": "2.6.1" + "rimraf": "2.6.2" } }, "fs-readdir-recursive": { @@ -4978,6 +5512,905 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.7.0", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, "fstream": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", @@ -4986,7 +6419,7 @@ "graceful-fs": "4.1.11", "inherits": "2.0.3", "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "rimraf": "2.6.2" } }, "fstream-ignore": { @@ -5000,9 +6433,9 @@ } }, "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "function.prototype.name": { @@ -5012,7 +6445,7 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "function-bind": "1.1.0", + "function-bind": "1.1.1", "is-callable": "1.1.3" } }, @@ -5027,7 +6460,7 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { - "aproba": "1.1.2", + "aproba": "1.2.0", "console-control-strings": "1.1.0", "has-unicode": "2.0.1", "object-assign": "4.1.1", @@ -5066,16 +6499,16 @@ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" }, "get-own-enumerable-property-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-1.0.1.tgz", - "integrity": "sha1-8dTjrRQC4DmJjlbR6bmqkkwm5IQ=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", + "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==" }, "get-proxy": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", "requires": { - "rc": "1.2.1" + "rc": "1.2.2" } }, "get-stdin": { @@ -5083,16 +6516,11 @@ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz", "integrity": "sha1-wc7SS5A5s43thb3xYeV3E7bdSr4=" }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "1.0.0" }, @@ -5100,21 +6528,11 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, - "gifsicle": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz", - "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, "github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -5340,7 +6758,7 @@ "array-uniq": "1.0.3", "beeper": "1.1.1", "chalk": "1.1.3", - "dateformat": "2.0.0", + "dateformat": "2.2.0", "fancy-log": "1.3.0", "gulplog": "1.0.0", "has-gulplog": "0.1.0", @@ -5375,7 +6793,7 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", "requires": { - "clone": "1.0.2", + "clone": "1.0.3", "clone-stats": "0.0.1", "replace-ext": "0.0.1" } @@ -5391,9 +6809,9 @@ } }, "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -5437,7 +6855,7 @@ "integrity": "sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=", "dev": true, "requires": { - "big.js": "3.1.3", + "big.js": "3.2.0", "emojis-list": "2.1.0", "json5": "0.5.1", "object-assign": "4.1.1" @@ -5445,33 +6863,23 @@ } } }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" - }, "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "chalk": "1.1.3", + "commander": "2.11.0", + "is-my-json-valid": "2.16.1", + "pinkie-promise": "2.0.1" }, "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true } } }, @@ -5481,7 +6889,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.0" + "function-bind": "1.1.1" } }, "has-ansi": { @@ -5493,9 +6901,10 @@ } }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, "has-gulplog": { "version": "0.1.0", @@ -5531,6 +6940,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, "requires": { "boom": "2.10.1", "cryptiles": "2.0.5", @@ -5568,7 +6978,8 @@ "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true }, "hoist-non-react-statics": { "version": "1.2.0", @@ -5605,12 +7016,12 @@ "dev": true }, "html-encoding-sniffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", - "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "1.0.1" + "whatwg-encoding": "1.0.3" } }, "html-entities": { @@ -5627,25 +7038,39 @@ "requires": { "es6-templates": "0.2.3", "fastparse": "1.1.1", - "html-minifier": "3.5.3", + "html-minifier": "3.5.6", "loader-utils": "0.2.17", "object-assign": "4.1.1" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "html-minifier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.3.tgz", - "integrity": "sha512-iKRzQQDuTCsq0Ultbi/mfJJnR0D3AdZKTq966Gsp92xkmAPCV4Xi08qhJ0Dl3ZAWemSgJ7qZK+UsZc0gFqK6wg==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.6.tgz", + "integrity": "sha512-88FjtKrlak2XjczhxrBomgzV4jmGzM3UnHRBScRkJcmcRum0kb+IwhVAETJ8AVp7j0p3xugjSaw9L+RmI5/QOA==", "dev": true, "requires": { "camel-case": "3.0.0", - "clean-css": "4.1.7", + "clean-css": "4.1.9", "commander": "2.11.0", "he": "1.1.1", "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.0.27" + "uglify-js": "3.1.8" }, "dependencies": { "commander": { @@ -5654,14 +7079,20 @@ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "uglify-js": { - "version": "3.0.27", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.27.tgz", - "integrity": "sha512-HD8CmxPXUI62v5tweiulMcP/apAtx1DXGcNZkhKQZyC+MTrTsoCBb8yPAwVrbvpgw3EpRU76bRe6axjIiCYcQg==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.8.tgz", + "integrity": "sha512-1lnTkrJWw6LJ7n43ZyYVXx0eN2PQh0c3Inb0nY/vj5fNfwykXQFif2kvNgm/Bf0ClLA8R6SKaMHFzo9io4Q+vg==", "dev": true, "requires": { "commander": "2.11.0", - "source-map": "0.5.6" + "source-map": "0.6.1" } } } @@ -5678,20 +7109,32 @@ "integrity": "sha1-LnhjtX5f1I/iYzA+L/yTTDBk0Ak=", "dev": true, "requires": { - "bluebird": "3.5.0", - "html-minifier": "3.5.3", + "bluebird": "3.5.1", + "html-minifier": "3.5.6", "loader-utils": "0.2.17", "lodash": "4.17.4", "pretty-error": "2.1.1", - "toposort": "1.0.3" + "toposort": "1.0.6" }, "dependencies": { "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", "dev": true }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -5759,9 +7202,10 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, "requires": { "assert-plus": "0.2.0", - "jsprim": "1.4.0", + "jsprim": "1.4.1", "sshpk": "1.13.1" } }, @@ -5777,35 +7221,15 @@ "integrity": "sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ=", "dev": true }, - "husky": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-0.13.1.tgz", - "integrity": "sha1-Ee/G/BDg7E54l3b2WCvjfXG6TM8=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "find-parent-dir": "0.3.0", - "is-ci": "1.0.10", - "normalize-path": "1.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - } - } - }, "hyphenate-style-name": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz", "integrity": "sha1-MRYKNpMK2vH8BMYHT360FGXU7Es=" }, "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "icss-replace-symbols": { "version": "1.1.0", @@ -5820,9 +7244,9 @@ "dev": true }, "ignore": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", - "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, "ignore-styles": { @@ -5831,142 +7255,6 @@ "integrity": "sha1-tJ7yJ0va/NikiAqWa/440aC/RnE=", "dev": true }, - "image-webpack-loader": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/image-webpack-loader/-/image-webpack-loader-3.2.0.tgz", - "integrity": "sha1-8mMG1gSNOi9ajYROyu3StxSPCk4=", - "dev": true, - "requires": { - "file-loader": "0.9.0", - "imagemin": "5.3.1", - "imagemin-gifsicle": "5.2.0", - "imagemin-mozjpeg": "6.0.0", - "imagemin-optipng": "5.2.1", - "imagemin-pngquant": "5.0.1", - "imagemin-svgo": "5.2.2", - "loader-utils": "0.2.17" - }, - "dependencies": { - "file-loader": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz", - "integrity": "sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=", - "dev": true, - "requires": { - "loader-utils": "0.2.17" - } - } - } - }, - "imagemin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-5.3.1.tgz", - "integrity": "sha1-8Zwu7h5xumxlWMUV+fyWaAGJptQ=", - "dev": true, - "requires": { - "file-type": "4.4.0", - "globby": "6.1.0", - "make-dir": "1.0.0", - "p-pipe": "1.2.0", - "pify": "2.3.0", - "replace-ext": "1.0.0" - }, - "dependencies": { - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - } - } - }, - "imagemin-gifsicle": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz", - "integrity": "sha512-K01m5QuPK+0en8oVhiOOAicF7KjrHlCZxS++mfLI2mV/Ksfq/Y9nCXCWDz6jRv13wwlqe5T7hXT+ji2DnLc2yQ==", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "gifsicle": "3.0.4", - "is-gif": "1.0.0" - } - }, - "imagemin-mozjpeg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-6.0.0.tgz", - "integrity": "sha1-caMqRXqhsmEXpo7u8tmxkMLlCR4=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-jpg": "1.0.0", - "mozjpeg": "4.1.1" - } - }, - "imagemin-optipng": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", - "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-png": "1.1.0", - "optipng-bin": "3.1.4" - } - }, - "imagemin-pngquant": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-5.0.1.tgz", - "integrity": "sha1-2KMp2lU6+iJrEc5i3r4Lfje0OeY=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-png": "1.1.0", - "pngquant-bin": "3.1.1" - } - }, - "imagemin-svgo": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-5.2.2.tgz", - "integrity": "sha1-UBaZ9XiXMKV5IrhzbqFcU/e1WDg=", - "dev": true, - "requires": { - "is-svg": "2.1.0", - "svgo": "0.7.2" - } - }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -6026,96 +7314,41 @@ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz", "integrity": "sha1-wVPH6I/YT+9cYC6VqBaLJ3BnH+c=", "requires": { - "bowser": "1.7.1", + "bowser": "1.8.1", "hyphenate-style-name": "1.0.2" } }, "inquirer": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", - "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, "requires": { - "ansi-escapes": "2.0.0", - "chalk": "2.0.1", - "cli-cursor": "2.1.0", - "cli-width": "2.1.0", - "external-editor": "2.0.4", - "figures": "2.0.0", + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "figures": "1.7.0", "lodash": "4.17.2", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", "through": "2.3.8" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "requires": { - "has-flag": "2.0.0" - } - } } }, "interpret": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", - "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", + "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", "dev": true }, "intl-format-cache": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.0.5.tgz", - "integrity": "sha1-tITO/Lk1PzdPJd44mjzuoa8Y18k=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.1.0.tgz", + "integrity": "sha1-BKNp/sv61tpgBbrh8UMzMy3PkxY=" }, "intl-messageformat": { "version": "1.3.0", @@ -6151,12 +7384,6 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, - "ip-regex": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", - "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", - "dev": true - }, "ipaddr.js": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", @@ -6164,9 +7391,9 @@ "dev": true }, "irregular-plurals": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", - "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", "dev": true }, "is-absolute": { @@ -6194,13 +7421,13 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.9.0" + "binary-extensions": "1.10.0" } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -6221,14 +7448,6 @@ "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", "dev": true }, - "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "requires": { - "ci-info": "1.0.0" - } - }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", @@ -6285,12 +7504,6 @@ "number-is-nan": "1.0.1" } }, - "is-gif": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz", - "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=", - "dev": true - }, "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", @@ -6309,16 +7522,10 @@ "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" }, - "is-jpg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.0.tgz", - "integrity": "sha1-KVnBfnNDDbOCZNp1uQ3VTy2G2hw=", - "dev": true - }, "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", "dev": true, "requires": { "generate-function": "2.0.0", @@ -6389,12 +7596,6 @@ } } }, - "is-png": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", - "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", - "dev": true - }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -6494,7 +7695,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-url": { "version": "1.2.2", @@ -6511,6 +7713,12 @@ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" }, + "is-windows": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", + "dev": true + }, "is-zip": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", @@ -6524,7 +7732,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "2.1.0", @@ -6539,14 +7748,15 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.1", + "node-fetch": "1.7.3", "whatwg-fetch": "2.0.1" } }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "istanbul": { "version": "1.0.0-alpha.2", @@ -6556,20 +7766,14 @@ "requires": { "abbrev": "1.0.9", "async": "1.5.2", - "istanbul-api": "1.1.11", + "istanbul-api": "1.2.1", "js-yaml": "3.6.1", "mkdirp": "0.5.1", "nopt": "3.0.6", - "which": "1.2.14", + "which": "1.3.0", "wordwrap": "1.0.0" }, "dependencies": { - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -6579,28 +7783,28 @@ } }, "istanbul-api": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.11.tgz", - "integrity": "sha1-/MC0YeKzvaceMFFVE4I4doJX2d4=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "fileset": "2.0.3", "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.0.7", - "istanbul-lib-instrument": "1.7.4", - "istanbul-lib-report": "1.1.1", - "istanbul-lib-source-maps": "1.2.1", - "istanbul-reports": "1.1.1", - "js-yaml": "3.9.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.10.0", "mkdirp": "0.5.1", "once": "1.4.0" }, "dependencies": { "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { "lodash": "4.17.2" @@ -6613,9 +7817,9 @@ "dev": true }, "js-yaml": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", - "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { "argparse": "1.0.9", @@ -6631,33 +7835,33 @@ "dev": true }, "istanbul-lib-hook": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", - "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" } }, "istanbul-lib-instrument": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz", - "integrity": "sha1-6f2SDkdn89Ge3HZeLWs/XMvQ7qg=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { - "babel-generator": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", "istanbul-lib-coverage": "1.1.1", "semver": "5.4.1" } }, "istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -6666,12 +7870,6 @@ "supports-color": "3.2.3" }, "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -6684,31 +7882,42 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", - "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { - "debug": "2.6.8", + "debug": "3.1.0", "istanbul-lib-coverage": "1.1.1", "mkdirp": "0.5.1", - "rimraf": "2.6.1", - "source-map": "0.5.6" + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", "dev": true, "requires": { - "handlebars": "4.0.10" + "handlebars": "4.0.11" } }, "js-base64": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", - "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", + "integrity": "sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw==", "dev": true }, "js-sha3": { @@ -6735,36 +7944,32 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, "optional": true }, - "jschardet": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", - "integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ==" - }, "jsdom": { "version": "9.11.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.11.0.tgz", "integrity": "sha1-qVsDBOUhospaY8bqR793CKeoRZE=", "dev": true, "requires": { - "abab": "1.0.3", + "abab": "1.0.4", "acorn": "4.0.13", "acorn-globals": "3.1.0", "array-equal": "1.0.0", - "content-type-parser": "1.0.1", + "content-type-parser": "1.0.2", "cssom": "0.3.2", "cssstyle": "0.2.37", - "escodegen": "1.8.1", - "html-encoding-sniffer": "1.0.1", - "nwmatcher": "1.4.1", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "nwmatcher": "1.4.3", "parse5": "1.5.1", - "request": "2.81.0", + "request": "2.79.0", "sax": "1.2.4", "symbol-tree": "3.2.2", - "tough-cookie": "2.3.2", - "webidl-conversions": "4.0.1", - "whatwg-encoding": "1.0.1", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", "whatwg-url": "4.8.0", "xml-name-validator": "2.0.1" }, @@ -6791,7 +7996,8 @@ "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.3.1", @@ -6809,7 +8015,8 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.2", @@ -6861,20 +8068,22 @@ "dev": true }, "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", - "extsprintf": "1.0.2", + "extsprintf": "1.3.0", "json-schema": "0.2.3", - "verror": "1.3.6" + "verror": "1.10.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, @@ -6894,8 +8103,8 @@ "requires": { "bindings": "1.3.0", "inherits": "2.0.3", - "nan": "2.6.2", - "prebuild-install": "2.2.1", + "nan": "2.7.0", + "prebuild-install": "2.3.0", "safe-buffer": "5.1.1" } }, @@ -6921,12 +8130,12 @@ "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.1.1.tgz", "integrity": "sha1-Ei+zjep0fcYrOuv8Nl0b1Ivktz4=", "requires": { - "bn.js": "4.11.7", + "bn.js": "4.11.8", "create-hash": "1.1.3", "ethjs-util": "0.1.4", "keccak": "1.3.0", "rlp": "2.0.0", - "secp256k1": "3.3.0" + "secp256k1": "3.3.1" } }, "validator": { @@ -6941,7 +8150,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } }, "klaw": { @@ -6967,7 +8176,7 @@ "requires": { "minimist": "1.2.0", "pixrem": "3.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-color-rgba-fallback": "2.2.0", "postcss-opacity": "3.0.0", "postcss-pseudoelements": "3.0.0", @@ -6984,7 +8193,7 @@ "integrity": "sha1-eHm8xzRAW/dKpsgcORdiBS/FWyk=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-reporter": { @@ -6996,7 +8205,7 @@ "chalk": "1.1.3", "lodash": "4.17.2", "log-symbols": "1.0.2", - "postcss": "5.2.17" + "postcss": "5.2.18" } } } @@ -7006,12 +8215,6 @@ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, - "lazy-req": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", - "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", - "dev": true - }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -7044,11 +8247,6 @@ "through2": "0.6.5" } }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -7086,14 +8284,13 @@ "dev": true }, "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "requires": { - "big.js": "3.1.3", + "big.js": "3.2.0", "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "json5": "0.5.1" } }, "locate-path": { @@ -7383,11 +8580,6 @@ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -7409,28 +8601,6 @@ "chalk": "1.1.3" } }, - "logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", - "dev": true, - "requires": { - "figures": "1.7.0", - "squeak": "1.3.0" - }, - "dependencies": { - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - } - } - }, "loglevel": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.4.1.tgz", @@ -7475,26 +8645,6 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" }, - "lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "indent-string": "2.1.0", - "longest": "1.0.1", - "meow": "3.7.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } - } - }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", @@ -7511,15 +8661,6 @@ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", "dev": true }, - "make-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", - "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -7533,6 +8674,20 @@ "requires": { "loader-utils": "0.2.17", "marked": "0.3.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "marked": { @@ -7545,17 +8700,33 @@ "resolved": "https://registry.npmjs.org/material-ui/-/material-ui-0.16.5.tgz", "integrity": "sha1-u4ZhqsfKyMsiOj529PV+4YpK78E=", "requires": { - "babel-runtime": "6.23.0", + "babel-runtime": "6.26.0", "inline-style-prefixer": "2.0.5", "keycode": "2.1.9", "lodash.merge": "4.6.0", "lodash.throttle": "4.1.1", - "react-addons-create-fragment": "15.6.0", - "react-addons-transition-group": "15.6.0", + "react-addons-create-fragment": "15.6.2", + "react-addons-transition-group": "15.6.2", "react-event-listener": "0.4.1", "recompose": "0.20.2", "simple-assign": "0.1.0", "warning": "3.0.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "material-ui-chip-input": { @@ -7568,6 +8739,26 @@ "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -7648,7 +8839,7 @@ "normalize-path": "2.1.1", "object.omit": "2.0.1", "parse-glob": "3.0.4", - "regex-cache": "0.4.3" + "regex-cache": "0.4.4" }, "dependencies": { "is-extglob": { @@ -7667,12 +8858,12 @@ } }, "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "bn.js": "4.11.7", + "bn.js": "4.11.8", "brorand": "1.1.0" } }, @@ -7683,23 +8874,20 @@ "dev": true }, "mime-db": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", - "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=" + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true }, "mime-types": { - "version": "2.1.16", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", - "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, "requires": { - "mime-db": "1.29.0" + "mime-db": "1.30.0" } }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" - }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -7816,12 +9004,6 @@ "path-is-absolute": "1.0.1" } }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, "ms": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", @@ -7867,17 +9049,6 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.17.0.tgz", "integrity": "sha1-pMKS4CqsXd77Kabu0k9Rk43Tt08=" }, - "mozjpeg": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-4.1.1.tgz", - "integrity": "sha1-hZAwsk9omlPbm0DwFg2JGVuI/VA=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -7935,14 +9106,15 @@ } }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true }, "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", + "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=" }, "napa": { "version": "2.3.0", @@ -7956,8 +9128,8 @@ "mkdirp": "0.5.1", "npm-cache-filename": "1.0.2", "npmlog": "2.0.4", - "rimraf": "2.6.1", - "tar-pack": "3.4.0", + "rimraf": "2.6.2", + "tar-pack": "3.4.1", "write-json-file": "1.2.0" }, "dependencies": { @@ -8018,9 +9190,9 @@ "dev": true }, "no-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", - "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, "requires": { "lower-case": "1.1.4" @@ -8033,7 +9205,7 @@ "dev": true, "requires": { "chai": "3.5.0", - "debug": "2.6.8", + "debug": "2.6.9", "deep-equal": "1.0.1", "json-stringify-safe": "5.0.1", "lodash": "4.17.2", @@ -8043,9 +9215,12 @@ } }, "node-abi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.0.tgz", - "integrity": "sha512-AbW35CPRE4vdieOse46V+16dKispLNv3PQwgqlcfg7GQeQHcLu3gvp3fbU2gTh7d8NfGjp5CJh+j4Hpyb0XzaA==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.2.tgz", + "integrity": "sha512-hmUtb8m75RSi7N+zZLYqe75XDvZB+6LyTBPkj2DConvNgQet2e3BIqEwe1LLvqMrfyjabuT5ZOrTioLCH1HTdA==", + "requires": { + "semver": "5.4.1" + } }, "node-dir": { "version": "0.1.17", @@ -8056,63 +9231,15 @@ "minimatch": "3.0.4" } }, - "node-emoji": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz", - "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==", - "requires": { - "lodash.toarray": "4.4.0" - } - }, "node-fetch": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", - "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { "encoding": "0.1.12", "is-stream": "1.1.0" } }, - "node-gyp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", - "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", - "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.4", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.2.14" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - } - } - }, "node-libs-browser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", @@ -8124,7 +9251,7 @@ "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", + "crypto-browserify": "3.12.0", "domain-browser": "1.1.7", "events": "1.1.1", "https-browserify": "0.0.1", @@ -8137,7 +9264,7 @@ "stream-browserify": "2.0.1", "stream-http": "2.7.2", "string_decoder": "0.10.31", - "timers-browserify": "2.0.3", + "timers-browserify": "2.0.4", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", @@ -8172,8 +9299,9 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, "requires": { - "abbrev": "1.1.0" + "abbrev": "1.0.9" } }, "normalize-package-data": { @@ -8192,7 +9320,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.0.2" + "remove-trailing-separator": "1.1.0" } }, "normalize-range": { @@ -8224,15 +9352,6 @@ "resolved": "https://registry.npmjs.org/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz", "integrity": "sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE=" }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -8265,15 +9384,16 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nwmatcher": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", - "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", "dev": true }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -8292,11 +9412,6 @@ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", "dev": true }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" - }, "object.assign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", @@ -8304,7 +9419,7 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "function-bind": "1.1.0", + "function-bind": "1.1.1", "object-keys": "1.0.11" } }, @@ -8315,8 +9430,8 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "es-abstract": "1.7.0", - "function-bind": "1.1.0", + "es-abstract": "1.9.0", + "function-bind": "1.1.1", "has": "1.0.1" } }, @@ -8336,8 +9451,8 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "es-abstract": "1.7.0", - "function-bind": "1.1.0", + "es-abstract": "1.9.0", + "function-bind": "1.1.1", "has": "1.0.1" } }, @@ -8409,17 +9524,6 @@ } } }, - "optipng-bin": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", - "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, "ordered-read-streams": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", @@ -8435,12 +9539,6 @@ "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", "dev": true }, - "os-filter-obj": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", - "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", - "dev": true - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -8459,15 +9557,6 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, "output-file-sync": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", @@ -8479,12 +9568,6 @@ "object-assign": "4.1.1" } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", @@ -8500,12 +9583,6 @@ "p-limit": "1.1.0" } }, - "p-pipe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", - "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", - "dev": true - }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -8518,7 +9595,7 @@ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { - "no-case": "2.3.1" + "no-case": "2.3.2" } }, "parse-asn1": { @@ -8527,11 +9604,11 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.6", + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "pbkdf2": "3.0.12" + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" } }, "parse-glob": { @@ -8575,9 +9652,9 @@ "dev": true }, "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, "pascalcase": { @@ -8615,12 +9692,6 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", @@ -8653,16 +9724,16 @@ } }, "pbkdf2": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", - "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "dev": true, "requires": { "create-hash": "1.1.3", "create-hmac": "1.1.6", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.8" + "sha.js": "2.4.9" } }, "pend": { @@ -8715,7 +9786,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "postcss": "5.2.17", + "postcss": "5.2.18", "reduce-css-calc": "1.3.0" } }, @@ -8734,7 +9805,7 @@ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", "dev": true, "requires": { - "irregular-plurals": "1.3.0" + "irregular-plurals": "1.4.0" } }, "pluralize": { @@ -8743,35 +9814,18 @@ "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", "dev": true }, - "pngquant-bin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-3.1.1.tgz", - "integrity": "sha1-0STZinWpSH9AwWQLTb/Lsr1aH9E=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, "postcss": { - "version": "5.2.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", - "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.1.9", - "source-map": "0.5.6", + "js-base64": "2.3.2", + "source-map": "0.5.7", "supports-color": "3.2.3" }, "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -8789,7 +9843,7 @@ "integrity": "sha1-Bwxh7hGXr27l63XSat9IiZudL3s=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-calc": { @@ -8798,7 +9852,7 @@ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-message-helpers": "2.0.0", "reduce-css-calc": "1.3.0" } @@ -8809,7 +9863,7 @@ "integrity": "sha1-r+xqDgHSXaw2pUrbif/Uv+HSGa8=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-color-rgba-fallback": { @@ -8818,7 +9872,7 @@ "integrity": "sha1-bSlJG+WZCpMXPUfnx29YELCUAro=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "rgb-hex": "1.0.0" } @@ -8830,7 +9884,7 @@ "dev": true, "requires": { "colormin": "1.1.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8840,7 +9894,7 @@ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8850,7 +9904,7 @@ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-discard-duplicates": { @@ -8859,7 +9913,7 @@ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-discard-empty": { @@ -8868,7 +9922,7 @@ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-discard-overridden": { @@ -8877,7 +9931,7 @@ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-discard-unused": { @@ -8886,7 +9940,7 @@ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" } }, @@ -8896,7 +9950,7 @@ "integrity": "sha1-I9zL+XWH4o1doZw7rktQaYxarV4=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-filter-plugins": { @@ -8905,7 +9959,7 @@ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqid": "4.1.1" } }, @@ -8916,7 +9970,7 @@ "dev": true, "requires": { "object-assign": "4.1.1", - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-hexrgba": { @@ -8925,7 +9979,7 @@ "integrity": "sha1-XGGrukOcCjjknn+8CzzZNhGewiU=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-import": { @@ -8935,11 +9989,11 @@ "dev": true, "requires": { "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "promise-each": "2.2.0", "read-cache": "1.0.0", - "resolve": "1.4.0" + "resolve": "1.5.0" } }, "postcss-input-style": { @@ -8948,7 +10002,7 @@ "integrity": "sha1-47T9sKpEG+0ZMMu0TYrVY0zzhUA=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-less": { @@ -8957,7 +10011,7 @@ "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-load-config": { @@ -9000,21 +10054,8 @@ "requires": { "loader-utils": "1.1.0", "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-load-config": "1.2.0" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } } }, "postcss-media-query-parser": { @@ -9030,7 +10071,7 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -9040,7 +10081,7 @@ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-merge-rules": { @@ -9051,7 +10092,7 @@ "requires": { "browserslist": "1.7.7", "caniuse-api": "1.6.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-selector-parser": "2.2.3", "vendors": "1.0.1" } @@ -9069,7 +10110,7 @@ "dev": true, "requires": { "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -9079,7 +10120,7 @@ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -9090,7 +10131,7 @@ "dev": true, "requires": { "alphanum-sort": "1.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "uniqs": "2.0.0" } @@ -9103,7 +10144,7 @@ "requires": { "alphanum-sort": "1.0.2", "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-selector-parser": "2.2.3" } }, @@ -9113,7 +10154,7 @@ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "dev": true, "requires": { - "postcss": "6.0.8" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -9122,35 +10163,47 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "supports-color": "4.5.0" } }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, "postcss": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", - "integrity": "sha512-G6WnRmdTt2jvJvY+aY+M0AO4YlbxE+slKPZb+jG2P2U9Tyxi3h1fYZ/DgiFU6DC6bv3XIEJoZt+f/kNh8BrWFw==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.1" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" @@ -9165,7 +10218,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.8" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -9174,35 +10227,47 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "supports-color": "4.5.0" } }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, "postcss": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", - "integrity": "sha512-G6WnRmdTt2jvJvY+aY+M0AO4YlbxE+slKPZb+jG2P2U9Tyxi3h1fYZ/DgiFU6DC6bv3XIEJoZt+f/kNh8BrWFw==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.1" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" @@ -9217,7 +10282,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.8" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -9226,35 +10291,47 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "supports-color": "4.5.0" } }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, "postcss": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", - "integrity": "sha512-G6WnRmdTt2jvJvY+aY+M0AO4YlbxE+slKPZb+jG2P2U9Tyxi3h1fYZ/DgiFU6DC6bv3XIEJoZt+f/kNh8BrWFw==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.1" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" @@ -9269,7 +10346,7 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.8" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -9278,35 +10355,47 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "supports-color": "4.5.0" } }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, "postcss": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", - "integrity": "sha512-G6WnRmdTt2jvJvY+aY+M0AO4YlbxE+slKPZb+jG2P2U9Tyxi3h1fYZ/DgiFU6DC6bv3XIEJoZt+f/kNh8BrWFw==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.1" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" @@ -9320,7 +10409,7 @@ "integrity": "sha1-0Ta9S1dr1WMt8ULBKyGYqcz3lN8=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-normalize-charset": { @@ -9329,7 +10418,7 @@ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-normalize-url": { @@ -9340,7 +10429,7 @@ "requires": { "is-absolute-url": "2.1.0", "normalize-url": "1.9.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -9350,7 +10439,7 @@ "integrity": "sha1-qlYgQ9ozlMlKOs7c9D8MMj0JhqE=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-ordered-values": { @@ -9359,7 +10448,7 @@ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -9369,7 +10458,7 @@ "integrity": "sha1-hlPU8LhP+wflRPt/fq4IxlUbc6A=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-pseudoelements": { @@ -9378,7 +10467,7 @@ "integrity": "sha1-bGghd8eQC6BTtt8X+MWQKEx7i7w=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-quantity-queries": { @@ -9388,7 +10477,7 @@ "dev": true, "requires": { "balanced-match": "0.2.1", - "postcss": "5.2.17" + "postcss": "5.2.18" }, "dependencies": { "balanced-match": { @@ -9405,7 +10494,7 @@ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -9415,7 +10504,7 @@ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-reduce-transforms": { @@ -9425,7 +10514,7 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -9438,7 +10527,7 @@ "chalk": "1.1.3", "lodash": "4.17.2", "log-symbols": "1.0.2", - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-resolve-nested-selector": { @@ -9453,7 +10542,7 @@ "integrity": "sha1-J0EzvARjWeVCpYu8YhhH0ED9EOY=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-scss": { @@ -9462,7 +10551,7 @@ "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-selector-parser": { @@ -9482,7 +10571,7 @@ "integrity": "sha1-H6TMtLcVHZ8NUvuOoZoVwTGVmdY=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-svgo": { @@ -9492,7 +10581,7 @@ "dev": true, "requires": { "is-svg": "2.1.0", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "svgo": "0.7.2" } @@ -9504,7 +10593,7 @@ "dev": true, "requires": { "alphanum-sort": "1.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" } }, @@ -9520,7 +10609,7 @@ "integrity": "sha1-UyfCEZE3ElaGj9enOZF/FHTVf+4=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-will-change": { @@ -9529,7 +10618,7 @@ "integrity": "sha1-plHdWoHoLEEtOabPkKkrsyaa8Yw=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-zindex": { @@ -9539,27 +10628,27 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" } }, "prebuild-install": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.2.1.tgz", - "integrity": "sha512-y/sgNJ49vjXQ3qYdSI/jTRZq6D7g5Q2euK6x0/L8dvwK1EGvNLidtg2t4PZzTgkR6LahkzpYVshOmHKYtp0AlQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.3.0.tgz", + "integrity": "sha512-gzjq2oHB8oMbzJSsSh9MQ64zrXZGt092/uT4TLZlz2qnrPxpWqp4vYB7LZrDxnlxf5RfbCjkgDI/z0EIVuYzAw==", "requires": { - "expand-template": "1.0.3", + "expand-template": "1.1.0", "github-from-package": "0.0.0", "minimist": "1.2.0", "mkdirp": "0.5.1", - "node-abi": "2.1.0", + "node-abi": "2.1.2", "noop-logger": "0.1.1", "npmlog": "4.1.2", "os-homedir": "1.0.2", "pump": "1.0.2", - "rc": "1.2.1", + "rc": "1.2.2", "simple-get": "1.4.3", - "tar-fs": "1.15.3", + "tar-fs": "1.16.0", "tunnel-agent": "0.6.0", "xtend": "4.0.1" } @@ -9591,9 +10680,9 @@ } }, "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, "process": { "version": "0.5.2", @@ -9650,12 +10739,13 @@ } }, "prop-types": { - "version": "15.5.10", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", - "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", "requires": { - "fbjs": "0.8.14", - "loose-envify": "1.3.1" + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" } }, "propagate": { @@ -9664,22 +10754,13 @@ "integrity": "sha1-8/zKCm/gZzanulcpZgaWF8EwtIE=", "dev": true }, - "proper-lockfile": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-2.0.1.tgz", - "integrity": "sha1-FZ+wYZPTIAP0s2kd0uwaY0qoDR0=", - "requires": { - "graceful-fs": "4.1.11", - "retry": "0.10.1" - } - }, "proxy-addr": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", "dev": true, "requires": { - "forwarded": "0.1.0", + "forwarded": "0.1.2", "ipaddr.js": "1.4.0" } }, @@ -9701,7 +10782,7 @@ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "dev": true, "requires": { - "bn.js": "4.11.7", + "bn.js": "4.11.8", "browserify-rsa": "4.0.1", "create-hash": "1.1.3", "parse-asn1": "5.1.0", @@ -9720,7 +10801,8 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "push.js": { "version": "0.0.11", @@ -9728,9 +10810,9 @@ "integrity": "sha1-T606n5CEQhLiqmfQc6I9Rw4yqJE=" }, "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, "qs": { @@ -9760,9 +10842,9 @@ "dev": true }, "raf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.3.2.tgz", - "integrity": "sha1-DBO+C1tJtG921maSSNUnzysC/ic=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", "requires": { "performance-now": "2.1.0" } @@ -9789,7 +10871,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -9799,7 +10881,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -9813,6 +10895,16 @@ "safe-buffer": "5.1.1" } }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", @@ -9826,9 +10918,9 @@ "dev": true }, "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", "requires": { "deep-extend": "0.4.2", "ini": "1.3.4", @@ -9841,7 +10933,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-15.4.2.tgz", "integrity": "sha1-QfeZGyYYU5K6m66WyIiefgGDl+8=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1" } @@ -9866,11 +10958,11 @@ } }, "react-addons-create-fragment": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/react-addons-create-fragment/-/react-addons-create-fragment-15.6.0.tgz", - "integrity": "sha1-r5GiKx+wld0B8a+6Q7/Q71idiyA=", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-create-fragment/-/react-addons-create-fragment-15.6.2.tgz", + "integrity": "sha1-o5TefCx77Na1R1uhuXrEcs58dPg=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1" } @@ -9880,7 +10972,7 @@ "resolved": "https://registry.npmjs.org/react-addons-css-transition-group/-/react-addons-css-transition-group-15.4.2.tgz", "integrity": "sha1-t4KINN+hQin+B3UOMx6KjLb7d0U=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "object-assign": "4.1.1" } }, @@ -9890,16 +10982,16 @@ "integrity": "sha1-EQvc9cRZxPd8uF7WNLzTOXU2ODs=", "dev": true, "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "object-assign": "4.1.1" } }, "react-addons-shallow-compare": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.0.tgz", - "integrity": "sha1-t6Tl/58nBMIM9obdigXdCLJt4lI=", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz", + "integrity": "sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "object-assign": "4.1.1" } }, @@ -9909,16 +11001,16 @@ "integrity": "sha1-k7yqcY/K5zYNQuj7HAl1bMNjAqI=", "dev": true, "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "object-assign": "4.1.1" } }, "react-addons-transition-group": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/react-addons-transition-group/-/react-addons-transition-group-15.6.0.tgz", - "integrity": "sha1-DyILn5WX2zqAqI29b+gF/GRM4hw=", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-transition-group/-/react-addons-transition-group-15.6.2.tgz", + "integrity": "sha1-i668Kukczb8kX+Kcn9PTb4tHGSM=", "requires": { - "react-transition-group": "1.2.0" + "react-transition-group": "1.2.1" } }, "react-codemirror": { @@ -9927,7 +11019,7 @@ "integrity": "sha1-zWvW70WOweA1z9iz/nswyMeIPGw=", "requires": { "classnames": "2.2.5", - "codemirror": "5.28.0", + "codemirror": "5.31.0", "lodash.debounce": "4.0.8" } }, @@ -9949,9 +11041,9 @@ } }, "react-deep-force-update": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-2.0.1.tgz", - "integrity": "sha1-T39sEsPn3kLzRZkqPFGCNvoeytM=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-2.1.1.tgz", + "integrity": "sha1-jqQmPNZFWgULN0RbPwj9g52G6Qk=", "dev": true }, "react-dom": { @@ -9959,7 +11051,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.4.2.tgz", "integrity": "sha1-AVNj8FsKH9Uq6e/dOgBg2QaVII8=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1" } @@ -9981,7 +11073,7 @@ "is-plain-object": "2.0.4", "lodash": "4.17.4", "sortobject": "1.1.1", - "stringify-object": "3.2.0", + "stringify-object": "3.2.1", "traverse": "0.6.6" }, "dependencies": { @@ -9997,9 +11089,25 @@ "resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.4.1.tgz", "integrity": "sha1-hrU5dMPfZRhXdmt7F3aC7Xx8gxg=", "requires": { - "babel-runtime": "6.23.0", - "react-addons-shallow-compare": "15.6.0", + "babel-runtime": "6.26.0", + "react-addons-shallow-compare": "15.6.2", "warning": "3.0.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "react-hot-loader": { @@ -10008,11 +11116,11 @@ "integrity": "sha1-Rj+sC/yLY6g4UlivIMkWNqvOdfQ=", "dev": true, "requires": { - "babel-template": "6.25.0", + "babel-template": "6.26.0", "global": "4.3.2", - "react-deep-force-update": "2.0.1", + "react-deep-force-update": "2.1.1", "react-proxy": "3.0.0-alpha.1", - "redbox-react": "1.4.3", + "redbox-react": "1.5.0", "source-map": "0.4.4" }, "dependencies": { @@ -10039,7 +11147,7 @@ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.1.5.tgz", "integrity": "sha1-+Xleo0t5DctdDY73Bg3dvoW/h2M=", "requires": { - "intl-format-cache": "2.0.5", + "intl-format-cache": "2.1.0", "intl-messageformat": "1.3.0", "intl-relativeformat": "1.3.0", "invariant": "2.2.2" @@ -10084,7 +11192,7 @@ "integrity": "sha512-ruBF8KaSwUW9nbzjO4rA7/HOCGYZuNUz9od7uBRy8SRBi24nwxWWmwa2z8R6vPGDRglA0y2Qk1aVBuC1olTnHw==", "requires": { "jsqr": "git+https://github.com/JodusNodus/jsQR.git#5ba1acefa1cbb9b2bc92b49f503f2674e2ec212b", - "prop-types": "15.5.10", + "prop-types": "15.6.0", "webrtc-adapter": "2.1.0" } }, @@ -10122,8 +11230,8 @@ "integrity": "sha1-84n45Yy7VGq7SSHKDL57B5vFGg0=", "requires": { "lodash": "4.13.1", - "raf": "3.3.2", - "react-addons-transition-group": "15.6.0" + "raf": "3.4.0", + "react-addons-transition-group": "15.6.2" }, "dependencies": { "lodash": { @@ -10138,7 +11246,7 @@ "resolved": "https://registry.npmjs.org/react-tap-event-plugin/-/react-tap-event-plugin-2.0.1.tgz", "integrity": "sha1-MWvrO8ZVbinshppyk+icgmqQdNI=", "requires": { - "fbjs": "0.8.14" + "fbjs": "0.8.16" } }, "react-tooltip": { @@ -10150,25 +11258,17 @@ } }, "react-transition-group": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.0.tgz", - "integrity": "sha1-tR/JIbDDg1p+98Vxx5/ILHPpIE8=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz", + "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", "requires": { "chain-function": "1.0.0", "dom-helpers": "3.2.1", "loose-envify": "1.3.1", - "prop-types": "15.5.10", + "prop-types": "15.6.0", "warning": "3.0.0" } }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "requires": { - "mute-stream": "0.0.7" - } - }, "read-all-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", @@ -10250,14 +11350,6 @@ "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", "mute-stream": "0.0.5" - }, - "dependencies": { - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - } } }, "recast": { @@ -10268,8 +11360,8 @@ "requires": { "ast-types": "0.9.6", "esprima": "3.1.3", - "private": "0.1.7", - "source-map": "0.5.6" + "private": "0.1.8", + "source-map": "0.5.7" }, "dependencies": { "esprima": { @@ -10319,7 +11411,7 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "1.4.0" + "resolve": "1.5.0" } }, "recompose": { @@ -10328,20 +11420,20 @@ "integrity": "sha1-ET1qx+KcpmTP/+wWtoHd3fFSULw=", "requires": { "change-emitter": "0.1.6", - "fbjs": "0.8.14", + "fbjs": "0.8.16", "hoist-non-react-statics": "1.2.0", "symbol-observable": "0.2.4" } }, "redbox-react": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.4.3.tgz", - "integrity": "sha512-P/N+y57/FVUQWbgpfTf/2wjgxEhxQuA6FRLv0ipZKLFv5v8mp6qs5inFyBwJQYAgaMrntZRCvKdz1vGwkCNs7A==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.5.0.tgz", + "integrity": "sha512-mdxArOI3sF8K5Nay5NG+lv/VW516TbXjjd4h1wcV1Iy4IMDQPnCayjoQXBAycAFSME4nyXRUXCjHxsw2rYpVRw==", "dev": true, "requires": { "error-stack-parser": "1.3.6", "object-assign": "4.1.1", - "prop-types": "15.5.10", + "prop-types": "15.6.0", "sourcemapped-stacktrace": "1.1.7" } }, @@ -10425,32 +11517,47 @@ "integrity": "sha1-xyS/7nXb41LaLjupvBQwK63Ympg=" }, "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" }, "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" }, "regenerator-transform": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", - "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "private": "0.1.7" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" + "is-equal-shallow": "0.1.3" } }, "regexpu-core": { @@ -10458,7 +11565,7 @@ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "requires": { - "regenerate": "1.3.2", + "regenerate": "1.3.3", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -10483,9 +11590,9 @@ "dev": true }, "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "renderkid": { "version": "2.0.1", @@ -10586,56 +11693,47 @@ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" }, "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, "requires": { "aws-sign2": "0.6.0", "aws4": "1.6.0", - "caseless": "0.12.0", + "caseless": "0.11.0", "combined-stream": "1.0.5", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", - "har-validator": "4.2.1", + "har-validator": "2.0.6", "hawk": "3.1.3", "http-signature": "1.1.1", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.16", + "mime-types": "2.1.17", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", + "qs": "6.3.0", "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", "uuid": "3.0.0" }, "dependencies": { "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true } } }, - "request-capture-har": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/request-capture-har/-/request-capture-har-1.2.2.tgz", - "integrity": "sha1-zWks+yzHRP2EozWKrG7lFSjPcg0=" - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -10668,9 +11766,9 @@ "dev": true }, "resolve": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", - "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { "path-parse": "1.0.5" @@ -10683,29 +11781,15 @@ "dev": true }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" - }, - "dependencies": { - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "1.1.0" - } - } + "exit-hook": "1.1.1", + "onetime": "1.1.0" } }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" - }, "rgb-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-1.0.0.tgz", @@ -10721,9 +11805,9 @@ } }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { "glob": "7.1.2" }, @@ -10757,11 +11841,6 @@ "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.0.0.tgz", "integrity": "sha1-nbOE/0uJqPYVY9kjldhiWxjzr7A=" }, - "roadrunner": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/roadrunner/-/roadrunner-1.1.0.tgz", - "integrity": "sha1-EYCjDWThlw2PVd2MsNqP/M7K1x4=" - }, "rucksack-css": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/rucksack-css/-/rucksack-css-0.9.1.tgz", @@ -10771,7 +11850,7 @@ "autoprefixer": "6.7.7", "laggard": "0.1.0", "minimist": "1.2.0", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-alias": "1.0.0", "postcss-clearfix": "1.0.0", "postcss-color-rgba-fallback": "2.2.0", @@ -10791,25 +11870,19 @@ } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, "requires": { - "is-promise": "2.1.0" + "once": "1.4.0" } }, "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "requires": { - "rx-lite": "4.0.8" - } + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true }, "safe-buffer": { "version": "5.1.1", @@ -10833,7 +11906,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", "requires": { - "ajv": "5.2.2" + "ajv": "5.3.0" } }, "script-ext-html-webpack-plugin": { @@ -10842,7 +11915,7 @@ "integrity": "sha1-rpwOJtd2fUqnk8duNVA0TsCLbRA=", "dev": true, "requires": { - "debug": "2.6.8" + "debug": "2.6.9" } }, "scryptsy": { @@ -10856,18 +11929,18 @@ "integrity": "sha1-jgOPbdsUvXZa4fS1IW4SCUUR4NA=" }, "secp256k1": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.3.0.tgz", - "integrity": "sha512-CbrQoeGG5V0kQ1ohEMGI+J7oKerapLTpivLICBaXR0R4HyQcN3kM9itLsV5fdpV1UR1bD14tOkJ1xughmlDIiQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.3.1.tgz", + "integrity": "sha512-lygjgfjzjBHblEDDkppUF5KK1EeVk6P/Dv2MsJZpYIR3vW5TKFRexOFkf0hHy9J5YxEpjQZ6x98Y3XQpMQO/vA==", "requires": { "bindings": "1.3.0", "bip66": "1.1.5", - "bn.js": "4.11.7", + "bn.js": "4.11.8", "create-hash": "1.1.3", "drbg.js": "1.0.1", "elliptic": "6.4.0", - "nan": "2.6.2", - "prebuild-install": "2.2.1", + "nan": "2.7.0", + "prebuild-install": "2.3.0", "safe-buffer": "5.1.1" } }, @@ -10884,21 +11957,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, - "semver-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", - "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", - "dev": true - }, - "semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "requires": { - "semver": "5.4.1" - } - }, "send": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/send/-/send-0.14.2.tgz", @@ -10953,7 +12011,7 @@ "requires": { "encodeurl": "1.0.1", "escape-html": "1.0.3", - "parseurl": "1.3.1", + "parseurl": "1.3.2", "send": "0.14.2" } }, @@ -10993,11 +12051,12 @@ "dev": true }, "sha.js": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", - "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", "requires": { - "inherits": "2.0.3" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, "shebang-command": { @@ -11022,7 +12081,7 @@ "dev": true, "requires": { "glob": "7.1.2", - "interpret": "1.0.3", + "interpret": "1.0.4", "rechoir": "0.6.2" }, "dependencies": { @@ -11115,6 +12174,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, "requires": { "hoek": "2.16.3" } @@ -11173,16 +12233,16 @@ "dev": true }, "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "requires": { - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "sourcemapped-stacktrace": { @@ -11192,6 +12252,14 @@ "dev": true, "requires": { "source-map": "0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + } } }, "sparkles": { @@ -11218,9 +12286,9 @@ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" }, "specificity": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.1.tgz", - "integrity": "sha1-8bBoQkzjF64HR42V3jwhz4Xo1Wc=", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz", + "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A==", "dev": true }, "split2": { @@ -11238,21 +12306,11 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "console-stream": "0.1.1", - "lpad-align": "1.1.2" - } - }, "sshpk": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", @@ -11267,7 +12325,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, @@ -11369,11 +12428,11 @@ } }, "stringify-object": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.0.tgz", - "integrity": "sha1-lDcKE15BvASDWIE7+ZSB8TFcaqY=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.1.tgz", + "integrity": "sha512-jPcQYw/52HUPP8uOE4kkjxl5bB9LfHkKCTptIk3qw7ozP5XMIMlHMLjt00GGSwW6DJAf/njY5EU6Vpwl4LlBKQ==", "requires": { - "get-own-enumerable-property-symbols": "1.0.1", + "get-own-enumerable-property-symbols": "2.0.1", "is-obj": "1.0.1", "is-regexp": "1.0.0" } @@ -11381,7 +12440,8 @@ "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true }, "strip-ansi": { "version": "3.0.1", @@ -11428,12 +12488,6 @@ } } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-hex-prefix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", @@ -11477,6 +12531,20 @@ "dev": true, "requires": { "loader-utils": "0.2.17" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, "style-search": { @@ -11496,7 +12564,7 @@ "log-symbols": "1.0.2", "minimist": "1.2.0", "plur": "2.1.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-reporter": "1.4.1", "postcss-selector-parser": "2.2.3", "read-file-stdin": "0.2.1", @@ -11513,7 +12581,7 @@ "chalk": "1.1.3", "lodash": "4.17.2", "log-symbols": "1.0.2", - "postcss": "5.2.17" + "postcss": "5.2.18" } } } @@ -11535,14 +12603,14 @@ "globby": "6.1.0", "globjoin": "0.1.4", "html-tags": "1.2.0", - "ignore": "3.3.3", + "ignore": "3.3.7", "known-css-properties": "0.0.6", "lodash": "4.17.4", "log-symbols": "1.0.2", "meow": "3.7.0", "micromatch": "2.3.11", "normalize-selector": "0.2.0", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-less": "0.14.0", "postcss-media-query-parser": "0.2.3", "postcss-reporter": "3.0.0", @@ -11551,24 +12619,20 @@ "postcss-selector-parser": "2.2.3", "postcss-value-parser": "3.3.0", "resolve-from": "2.0.0", - "specificity": "0.3.1", + "specificity": "0.3.2", "string-width": "2.1.1", "style-search": "0.1.0", "stylehacks": "2.3.2", "sugarss": "0.2.0", "svg-tags": "1.0.0", - "table": "4.0.1" + "table": "4.0.2" }, "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true }, "ansi-regex": { "version": "3.0.0", @@ -11576,18 +12640,21 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, "balanced-match": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", "dev": true }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "get-stdin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", @@ -11621,6 +12688,12 @@ "pinkie-promise": "2.0.1" } }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -11642,7 +12715,7 @@ "chalk": "1.1.3", "lodash": "4.17.4", "log-symbols": "1.0.2", - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "resolve-from": { @@ -11651,6 +12724,15 @@ "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -11670,18 +12752,40 @@ "ansi-regex": "3.0.0" } }, - "table": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", - "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", + "has-flag": "2.0.0" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", "lodash": "4.17.4", - "slice-ansi": "0.0.4", + "slice-ansi": "1.0.0", "string-width": "2.1.1" + }, + "dependencies": { + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } } } } @@ -11698,7 +12802,7 @@ "integrity": "sha1-rDQjdWMyfG/4l7ZHQr9q7BkK054=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "sum-up": { @@ -11848,9 +12952,9 @@ } }, "tapable": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.7.tgz", - "integrity": "sha1-5GwNqsuyuKmLmwzqD0BSEFgX7Vw=", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", "dev": true }, "tar": { @@ -11864,9 +12968,9 @@ } }, "tar-fs": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.15.3.tgz", - "integrity": "sha1-7M+TXpQUk9gVECjmNuUc5MPKfyA=", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz", + "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", "requires": { "chownr": "1.0.1", "mkdirp": "0.5.1", @@ -11875,16 +12979,16 @@ } }, "tar-pack": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", + "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", "requires": { - "debug": "2.6.8", + "debug": "2.6.9", "fstream": "1.0.11", "fstream-ignore": "1.0.5", "once": "1.4.0", "readable-stream": "2.3.3", - "rimraf": "2.6.1", + "rimraf": "2.6.2", "tar": "2.2.1", "uid-number": "0.0.6" } @@ -11900,30 +13004,6 @@ "xtend": "4.0.1" } }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "requires": { - "temp-dir": "1.0.0", - "uuid": "3.1.0" - }, - "dependencies": { - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - } - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -11933,7 +13013,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "0.6.5", @@ -11998,23 +13079,14 @@ "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=" }, "timers-browserify": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.3.tgz", - "integrity": "sha512-+JAqyNgg+M8+gXIrq2EeUr4kZqRz47Ysco7X5QKRGScRE9HIHckyHD1asozSFGeqx2nmPCgA8T5tIGVO0ML7/w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", "dev": true, "requires": { - "global": "4.3.2", "setimmediate": "1.0.5" } }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "requires": { - "os-tmpdir": "1.0.2" - } - }, "to-absolute-glob": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", @@ -12046,15 +13118,16 @@ "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" }, "toposort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", - "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", "dev": true }, "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, "requires": { "punycode": "1.4.1" } @@ -12112,6 +13185,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, "optional": true }, "type-check": { @@ -12136,7 +13210,7 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.16" + "mime-types": "2.1.17" } }, "typedarray": { @@ -12164,16 +13238,16 @@ "integrity": "sha1-t60WWm+WJVhReoZ8XEv5OZ/Pfpg=" }, "ua-parser-js": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz", - "integrity": "sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=" + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" }, "uglify-js": { "version": "2.8.16", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.16.tgz", "integrity": "sha1-0oYZC27vxv1l6w7KxlUeCw6IOaQ=", "requires": { - "source-map": "0.5.6", + "source-map": "0.5.7", "uglify-to-browserify": "1.0.2", "yargs": "3.10.0" }, @@ -12303,6 +13377,18 @@ "mime": "1.2.11" }, "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, "mime": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", @@ -12319,15 +13405,6 @@ "prepend-http": "1.0.4" } }, - "url-regex": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", - "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", - "dev": true, - "requires": { - "ip-regex": "1.0.3" - } - }, "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -12417,9 +13494,9 @@ "integrity": "sha1-sszNxJ/w9LjuTmHbot3T3eE/I+c=" }, "vary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", - "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, "vendors": { @@ -12429,11 +13506,22 @@ "dev": true }, "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { - "extsprintf": "1.0.2" + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } } }, "vinyl": { @@ -12441,7 +13529,7 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "requires": { - "clone": "1.0.2", + "clone": "1.0.3", "clone-stats": "0.0.1", "replace-ext": "0.0.1" } @@ -12460,7 +13548,7 @@ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "requires": { - "duplexify": "3.5.0", + "duplexify": "3.5.1", "glob-stream": "5.3.5", "graceful-fs": "4.1.11", "gulp-sourcemaps": "1.6.0", @@ -12526,15 +13614,15 @@ "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "chokidar": "1.7.0", "graceful-fs": "4.1.11" }, "dependencies": { "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { "lodash": "4.17.2" @@ -12559,9 +13647,9 @@ } }, "webidl-conversions": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.1.tgz", - "integrity": "sha1-gBWherg+fhsxFjhIas6B2mziBqA=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, "webpack": { @@ -12574,18 +13662,18 @@ "acorn-dynamic-import": "2.0.2", "ajv": "4.11.8", "ajv-keywords": "1.5.1", - "async": "2.5.0", + "async": "2.6.0", "enhanced-resolve": "3.4.1", - "interpret": "1.0.3", + "interpret": "1.0.4", "json-loader": "0.5.4", "loader-runner": "2.3.0", "loader-utils": "0.2.17", "memory-fs": "0.4.1", "mkdirp": "0.5.1", "node-libs-browser": "2.0.0", - "source-map": "0.5.6", + "source-map": "0.5.7", "supports-color": "3.2.3", - "tapable": "0.2.7", + "tapable": "0.2.8", "uglify-js": "2.8.16", "watchpack": "1.4.0", "webpack-sources": "0.1.5", @@ -12609,9 +13697,9 @@ } }, "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { "lodash": "4.17.2" @@ -12623,11 +13711,17 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } }, "supports-color": { "version": "3.2.3", @@ -12647,7 +13741,7 @@ "dev": true, "requires": { "commander": "2.8.1", - "filesize": "3.5.10", + "filesize": "3.5.11", "humanize": "0.0.9" } }, @@ -12688,7 +13782,7 @@ "dev": true, "requires": { "source-list-map": "0.1.8", - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "webrtc-adapter": { @@ -12705,27 +13799,19 @@ "integrity": "sha1-dJA+dfJUW2suHeFCW8HJBZF6GJA=", "dev": true, "requires": { - "debug": "2.6.8", - "nan": "2.6.2", + "debug": "2.6.9", + "nan": "2.7.0", "typedarray-to-buffer": "3.1.2", "yaeti": "0.0.6" } }, "whatwg-encoding": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", - "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", "dev": true, "requires": { - "iconv-lite": "0.4.13" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", - "dev": true - } + "iconv-lite": "0.4.19" } }, "whatwg-fetch": { @@ -12758,9 +13844,10 @@ "dev": true }, "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, "requires": { "isexe": "2.0.0" } @@ -12795,18 +13882,6 @@ "requires": { "loader-utils": "1.1.0", "schema-utils": "0.3.0" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } } }, "wrap-ansi": { @@ -12968,72 +14043,10 @@ } } }, - "yarn": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-0.21.3.tgz", - "integrity": "sha1-jdo6Y8eYs4PPpXdFLCs8s+Sqh+A=", - "requires": { - "babel-runtime": "6.23.0", - "bytes": "2.4.0", - "camelcase": "3.0.0", - "chalk": "1.1.3", - "cmd-shim": "2.0.2", - "commander": "2.11.0", - "death": "1.1.0", - "debug": "2.6.8", - "defaults": "1.0.3", - "detect-indent": "5.0.0", - "ini": "1.3.4", - "inquirer": "3.2.1", - "invariant": "2.2.2", - "is-builtin-module": "1.0.0", - "is-ci": "1.0.10", - "leven": "2.1.0", - "loud-rejection": "1.6.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "node-emoji": "1.8.1", - "node-gyp": "3.6.2", - "object-path": "0.11.4", - "proper-lockfile": "2.0.1", - "read": "1.0.7", - "request": "2.81.0", - "request-capture-har": "1.2.2", - "rimraf": "2.6.1", - "roadrunner": "1.1.0", - "semver": "5.4.1", - "strip-bom": "3.0.0", - "tar": "2.2.1", - "tar-stream": "1.5.4", - "validate-npm-package-license": "3.0.1" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" - }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - } - } - }, "yauzl": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz", - "integrity": "sha1-eUUK/yKyqcWkHvVOAtuQfM+/nuI=", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", "requires": { "buffer-crc32": "0.2.13", "fd-slicer": "1.0.1" diff --git a/js-old/package.json b/js-old/package.json index 52415f95a..7f406ffe2 100644 --- a/js-old/package.json +++ b/js-old/package.json @@ -1,6 +1,6 @@ { - "name": "parity.js", - "version": "1.8.18", + "name": "@parity/dapp-v1", + "version": "1.9.99", "main": "release/index.js", "jsnext:main": "src/index.js", "author": "Parity Team ", @@ -27,42 +27,17 @@ ], "scripts": { "install": "napa", - "analize": "npm run analize:lib && npm run analize:dll && npm run analize:app", - "analize:app": "WPANALIZE=1 webpack --config webpack/app --json > .build/analize.app.json && cat .build/analize.app.json | webpack-bundle-size-analyzer", - "analize:lib": "WPANALIZE=1 webpack --config webpack/libraries --json > .build/analize.lib.json && cat .build/analize.lib.json | webpack-bundle-size-analyzer", - "analize:dll": "WPANALIZE=1 webpack --config webpack/vendor --json > .build/analize.dll.json && cat .build/analize.dll.json | webpack-bundle-size-analyzer", - "build": "npm run build:lib && npm run build:dll && npm run build:app && npm run build:embed", + "build": "npm run build:lib && npm run build:dll && npm run build:app", "build:app": "webpack --config webpack/app", "build:lib": "webpack --config webpack/libraries", "build:dll": "webpack --config webpack/vendor", - "build:markdown": "babel-node ./scripts/build-rpc-markdown.js", - "build:json": "babel-node ./scripts/build-rpc-json.js", - "build:embed": "EMBED=1 node webpack/embed", - "build:i18n": "npm run clean && npm run build && babel-node ./scripts/build-i18n.js", - "ci:build": "npm run ci:build:lib && npm run ci:build:dll && npm run ci:build:app && npm run ci:build:embed", - "ci:build:app": "NODE_ENV=production webpack --config webpack/app", - "ci:build:lib": "NODE_ENV=production webpack --config webpack/libraries", - "ci:build:dll": "NODE_ENV=production webpack --config webpack/vendor", - "ci:build:npm": "NODE_ENV=production webpack --config webpack/npm", - "ci:build:jsonrpc": "babel-node ./scripts/build-rpc-json.js --output .npmjs/jsonrpc", - "ci:build:embed": "NODE_ENV=production EMBED=1 node webpack/embed", - "start": "npm run clean && npm install && npm run build:lib && npm run build:dll && npm run start:app", - "start:app": "node webpack/dev.server", - "clean": "rm -rf ./.build ./.coverage ./.happypack ./.npmjs ./build ./node_modules/.cache ./node_modules/@parity", - "coveralls": "npm run testCoverage && coveralls < coverage/lcov.info", + "ci:build": "cross-env NODE_ENV=production npm run build", + "clean": "rimraf ./.build ./.coverage ./.happypack ./.npmjs ./build ./node_modules/.cache", "lint": "npm run lint:css && npm run lint:js", - "lint:cached": "npm run lint:css && npm run lint:js:cached", "lint:css": "stylelint ./src/**/*.css", - "lint:fix": "npm run lint:js:fix", - "lint:i18n": "babel-node ./scripts/lint-i18n.js", "lint:js": "eslint --ignore-path .gitignore ./src/", - "lint:js:cached": "eslint --cache --ignore-path .gitignore ./src/", - "lint:js:fix": "eslint --fix --ignore-path .gitignore ./src/", "test": "NODE_ENV=test mocha --compilers ejs:ejsify 'src/**/*.spec.js'", - "test:coverage": "NODE_ENV=test istanbul cover _mocha -- --compilers ejs:ejsify 'src/**/*.spec.js'", - "test:e2e": "NODE_ENV=test mocha 'src/**/*.e2e.js'", - "test:npm": "(cd .npmjs && npm i) && node test/npmParity && node test/npmJsonRpc && (rm -rf .npmjs/node_modules)", - "prepush": "npm run lint:cached" + "watch": "webpack --watch --config webpack/app" }, "napa": { "qrcode-generator": "kazuhikoarase/qrcode-generator" @@ -98,6 +73,7 @@ "copy-webpack-plugin": "4.0.1", "core-js": "2.4.1", "coveralls": "2.11.16", + "cross-env": "5.1.1", "css-loader": "0.26.1", "ejs-loader": "0.3.0", "ejsify": "1.0.0", @@ -118,9 +94,7 @@ "html-loader": "0.4.4", "html-webpack-plugin": "2.28.0", "http-proxy-middleware": "0.17.3", - "husky": "0.13.1", "ignore-styles": "5.0.1", - "image-webpack-loader": "3.2.0", "istanbul": "1.0.0-alpha.2", "jsdom": "9.11.0", "json-loader": "0.5.4", @@ -140,6 +114,7 @@ "react-addons-test-utils": "15.4.2", "react-hot-loader": "3.0.0-beta.6", "react-intl-aggregate-webpack-plugin": "0.0.1", + "rimraf": "2.6.2", "rucksack-css": "0.9.1", "script-ext-html-webpack-plugin": "1.7.1", "serviceworker-webpack-plugin": "0.2.0", @@ -160,9 +135,8 @@ "yargs": "6.6.0" }, "dependencies": { - "@parity/wordlist": "1.0.1", - "arraybuffer-loader": "0.2.2", - "babel-runtime": "6.23.0", + "@parity/api": "2.1.x", + "@parity/wordlist": "1.1.x", "base32.js": "0.1.0", "bignumber.js": "3.0.1", "blockies": "0.0.2", @@ -234,7 +208,6 @@ "web3": "0.17.0-beta", "whatwg-fetch": "2.0.1", "worker-loader": "^0.8.0", - "yarn": "^0.21.3", "zxcvbn": "4.4.1" } } diff --git a/js-old/src/index.ejs b/js-old/src/index.ejs index 305568f5b..b1a23576e 100644 --- a/js-old/src/index.ejs +++ b/js-old/src/index.ejs @@ -33,6 +33,7 @@
Loading
+ diff --git a/js-old/src/index.js b/js-old/src/index.js index 7e85dd51f..9035c28ba 100644 --- a/js-old/src/index.js +++ b/js-old/src/index.js @@ -25,9 +25,9 @@ import { AppContainer } from 'react-hot-loader'; import injectTapEventPlugin from 'react-tap-event-plugin'; import { hashHistory } from 'react-router'; -import qs from 'querystring'; -import SecureApi from './secureApi'; +import Api from '@parity/api'; + import ContractInstances from '~/contracts'; import { initStore } from './redux'; @@ -45,23 +45,7 @@ import '../assets/fonts/RobotoMono/font.css'; injectTapEventPlugin(); -if (process.env.NODE_ENV === 'development') { - // Expose the React Performance Tools on the`window` object - const Perf = require('react-addons-perf'); - - window.Perf = Perf; -} - -const AUTH_HASH = '#/auth?'; - -let token = null; - -if (window.location.hash && window.location.hash.indexOf(AUTH_HASH) === 0) { - token = qs.parse(window.location.hash.substr(AUTH_HASH.length)).token; -} - -const uiUrl = window.location.host; -const api = new SecureApi(uiUrl, token); +const api = new Api(window.ethereum); patchApi(api); loadSender(api); @@ -72,8 +56,6 @@ const store = initStore(api, hashHistory); store.dispatch({ type: 'initAll', api }); store.dispatch(setApi(api)); -window.secureApi = api; - ReactDOM.render( diff --git a/js-old/src/lib.rs.in b/js-old/src/lib.rs.in index 51e3304f4..ffb4cf348 100644 --- a/js-old/src/lib.rs.in +++ b/js-old/src/lib.rs.in @@ -40,10 +40,10 @@ impl WebApp for App { fn info(&self) -> Info { Info { - name: "Parity Wallet v1", + name: "Parity Wallet", version: env!("CARGO_PKG_VERSION"), author: "Parity ", - description: "Deprecated version of Parity Wallet.", + description: "Parity Wallet and Account management tools", icon_url: "icon.png", } } diff --git a/js-old/src/manifest.json b/js-old/src/manifest.json new file mode 100644 index 000000000..6de218a93 --- /dev/null +++ b/js-old/src/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "Parity Wallet", + "version": "development", + "author": "Parity ", + "description": "Parity Wallet and Account management tools", + "icon_url": "icon.png", +} diff --git a/js-old/src/modals/CreateWallet/WalletType/walletType.js b/js-old/src/modals/CreateWallet/WalletType/walletType.js index bbf55965b..2c5a545d4 100644 --- a/js-old/src/modals/CreateWallet/WalletType/walletType.js +++ b/js-old/src/modals/CreateWallet/WalletType/walletType.js @@ -17,35 +17,35 @@ import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; -import { walletSourceURL } from '~/contracts/code/wallet'; +// import { walletSourceURL } from '~/contracts/code/wallet'; import { RadioButtons } from '~/ui'; const TYPES = [ - { - label: ( - - ), - key: 'MULTISIG', - description: ( - - - - ) - } } - /> - ) - }, + // { + // label: ( + // + // ), + // key: 'MULTISIG', + // description: ( + // + // + // + // ) + // } } + // /> + // ) + // }, { label: ( ) } diff --git a/js-old/src/modals/CreateWallet/createWalletStore.js b/js-old/src/modals/CreateWallet/createWalletStore.js index 26ed5816c..6516d1d82 100644 --- a/js-old/src/modals/CreateWallet/createWalletStore.js +++ b/js-old/src/modals/CreateWallet/createWalletStore.js @@ -59,7 +59,7 @@ const STEPS = { export default class CreateWalletStore { @observable step = null; @observable txhash = null; - @observable walletType = 'MULTISIG'; + @observable walletType = 'WATCH'; // 'MULTISIG'; @observable wallet = { account: '', diff --git a/js-old/src/modals/Transfer/store.js b/js-old/src/modals/Transfer/store.js index eaccf4f40..71458c85d 100644 --- a/js-old/src/modals/Transfer/store.js +++ b/js-old/src/modals/Transfer/store.js @@ -133,8 +133,8 @@ export default class TransferStore { } @action handleClose = () => { - this.stage = 0; this.onClose(); + this.stage = 0; } @action onUpdateDetails = (type, value) => { @@ -169,7 +169,6 @@ export default class TransferStore { } @action onSend = () => { - this.onNext(); this.sending = true; this diff --git a/js-old/src/redux/providers/apiReducer.js b/js-old/src/redux/providers/apiReducer.js index 853e909ee..787aee73d 100644 --- a/js-old/src/redux/providers/apiReducer.js +++ b/js-old/src/redux/providers/apiReducer.js @@ -16,7 +16,7 @@ import { handleActions } from 'redux-actions'; -const initialState = {}; +const initialState = null; export default handleActions({ setApi (state, action) { diff --git a/js-old/src/redux/providers/balances.js b/js-old/src/redux/providers/balances.js index a2f49cfa8..08e6d7a15 100644 --- a/js-old/src/redux/providers/balances.js +++ b/js-old/src/redux/providers/balances.js @@ -16,12 +16,11 @@ import { throttle } from 'lodash'; -import { fetchBalances, fetchTokensBalances, queryTokensFilter } from './balancesActions'; -import { loadTokens, fetchTokens } from './tokensActions'; -import { padRight } from '~/api/util/format'; +import { LOG_KEYS, getLogger } from '~/config'; -import Contracts from '~/contracts'; +import { fetchBalances, queryTokensFilter, updateTokensFilter } from './balancesActions'; +const log = getLogger(LOG_KEYS.Balances); let instance = null; export default class Balances { @@ -29,40 +28,20 @@ export default class Balances { this._api = api; this._store = store; - this._tokenreg = null; - this._tokenregSID = null; - this._tokenMetaSID = null; + this._apiSubs = []; - this._blockNumberSID = null; - this._accountsInfoSID = null; - - // Throtthled load tokens (no more than once - // every minute) - this.loadTokens = throttle( - this._loadTokens, - 60 * 1000, - { leading: true, trailing: true } - ); - - // Throttled `_fetchBalances` function + // Throttled `_fetchEthBalances` function // that gets called max once every 40s this.longThrottledFetch = throttle( - this._fetchBalances, + this._fetchEthBalances, 40 * 1000, - { leading: false, trailing: true } + { leading: true, trailing: false } ); this.shortThrottledFetch = throttle( - this._fetchBalances, + this._fetchEthBalances, 2 * 1000, - { leading: false, trailing: true } - ); - - // Fetch all tokens every 2 minutes - this.throttledTokensFetch = throttle( - this._fetchTokens, - 2 * 60 * 1000, - { leading: false, trailing: true } + { leading: true, trailing: false } ); // Unsubscribe previous instance if it exists @@ -71,17 +50,19 @@ export default class Balances { } } - static get (store = {}) { + static get (store) { if (!instance && store) { - const { api } = store.getState(); - - return Balances.instantiate(store, api); + return Balances.init(store); + } else if (!instance) { + throw new Error('The Balances Provider has not been initialized yet'); } return instance; } - static instantiate (store, api) { + static init (store) { + const { api } = store.getState(); + if (!instance) { instance = new Balances(store, api); } @@ -91,15 +72,13 @@ export default class Balances { static start () { if (!instance) { - return Promise.reject('BalancesProvider has not been intiated yet'); + return Promise.reject('BalancesProvider has not been initiated yet'); } const self = instance; // Unsubscribe from previous subscriptions - return Balances - .stop() - .then(() => self.loadTokens()) + return Balances.stop() .then(() => { const promises = [ self.subscribeBlockNumber(), @@ -107,7 +86,8 @@ export default class Balances { ]; return Promise.all(promises); - }); + }) + .then(() => self.fetchEthBalances()); } static stop () { @@ -116,71 +96,35 @@ export default class Balances { } const self = instance; - const promises = []; + const promises = self._apiSubs.map((subId) => self._api.unsubscribe(subId)); - if (self._blockNumberSID) { - const p = self._api - .unsubscribe(self._blockNumberSID) - .then(() => { - self._blockNumberSID = null; - }); - - promises.push(p); - } - - if (self._accountsInfoSID) { - const p = self._api - .unsubscribe(self._accountsInfoSID) - .then(() => { - self._accountsInfoSID = null; - }); - - promises.push(p); - } - - // Unsubscribe without adding the promises - // to the result, since it would have to wait for a - // reconnection to resolve if the Node is disconnected - if (self._tokenreg) { - if (self._tokenregSID) { - const tokenregSID = self._tokenregSID; - - self._tokenreg - .unsubscribe(tokenregSID) - .then(() => { - if (self._tokenregSID === tokenregSID) { - self._tokenregSID = null; - } - }); - } - - if (self._tokenMetaSID) { - const tokenMetaSID = self._tokenMetaSID; - - self._tokenreg - .unsubscribe(tokenMetaSID) - .then(() => { - if (self._tokenMetaSID === tokenMetaSID) { - self._tokenMetaSID = null; - } - }); - } - } - - return Promise.all(promises); + return Promise.all(promises) + .then(() => { + self._apiSubs = []; + }); } subscribeAccountsInfo () { + // Don't trigger the balances updates on first call (when the + // subscriptions are setup) + let firstcall = true; + return this._api .subscribe('parity_allAccountsInfo', (error, accountsInfo) => { if (error) { + return console.warn('balances::subscribeAccountsInfo', error); + } + + if (firstcall) { + firstcall = false; return; } - this.fetchAllBalances(); + this._store.dispatch(updateTokensFilter()); + this.fetchEthBalances(); }) - .then((accountsInfoSID) => { - this._accountsInfoSID = accountsInfoSID; + .then((subId) => { + this._apiSubs.push(subId); }) .catch((error) => { console.warn('_subscribeAccountsInfo', error); @@ -188,161 +132,57 @@ export default class Balances { } subscribeBlockNumber () { + // Don't trigger the balances updates on first call (when the + // subscriptions are setup) + let firstcall = true; + return this._api - .subscribe('eth_blockNumber', (error) => { + .subscribe('eth_blockNumber', (error, block) => { if (error) { - return console.warn('_subscribeBlockNumber', error); + return console.warn('balances::subscribeBlockNumber', error); + } + + if (firstcall) { + firstcall = false; + return; } this._store.dispatch(queryTokensFilter()); - return this.fetchAllBalances(); + return this.fetchEthBalances(); }) - .then((blockNumberSID) => { - this._blockNumberSID = blockNumberSID; + .then((subId) => { + this._apiSubs.push(subId); }) .catch((error) => { console.warn('_subscribeBlockNumber', error); }); } - fetchAllBalances (options = {}) { - // If it's a network change, reload the tokens - // ( and then fetch the tokens balances ) and fetch - // the accounts balances - if (options.changedNetwork) { - this.loadTokens({ skipNotifications: true }); - this.loadTokens.flush(); + fetchEthBalances (options = {}) { + log.debug('fetching eth balances (throttled)...'); - this.fetchBalances({ - force: true, - skipNotifications: true - }); - - return; - } - - this.fetchTokensBalances(options); - this.fetchBalances(options); - } - - fetchTokensBalances (options) { - const { skipNotifications = false, force = false } = options; - - this.throttledTokensFetch(skipNotifications); - - if (force) { - this.throttledTokensFetch.flush(); - } - } - - fetchBalances (options) { - const { skipNotifications = false, force = false } = options; const { syncing } = this._store.getState().nodeStatus; + if (options.force) { + return this._fetchEthBalances(); + } + // If syncing, only retrieve balances once every // few seconds if (syncing || syncing === null) { this.shortThrottledFetch.cancel(); - this.longThrottledFetch(skipNotifications); - - if (force) { - this.longThrottledFetch.flush(); - } - - return; + return this.longThrottledFetch(); } this.longThrottledFetch.cancel(); - this.shortThrottledFetch(skipNotifications); - - if (force) { - this.shortThrottledFetch.flush(); - } + return this.shortThrottledFetch(); } - _fetchBalances (skipNotifications = false) { - this._store.dispatch(fetchBalances(null, skipNotifications)); - } + _fetchEthBalances (skipNotifications = false) { + log.debug('fetching eth balances (real)...'); - _fetchTokens (skipNotifications = false) { - this._store.dispatch(fetchTokensBalances(null, null, skipNotifications)); - } + const { dispatch, getState } = this._store; - getTokenRegistry () { - return Contracts.get().tokenReg.getContract(); - } - - _loadTokens (options = {}) { - return this - .getTokenRegistry() - .then((tokenreg) => { - this._tokenreg = tokenreg; - - this._store.dispatch(loadTokens(options)); - - return this.attachToTokens(tokenreg); - }) - .catch((error) => { - console.warn('balances::loadTokens', error); - }); - } - - attachToTokens (tokenreg) { - return Promise - .all([ - this.attachToTokenMetaChange(tokenreg), - this.attachToNewToken(tokenreg) - ]); - } - - attachToNewToken (tokenreg) { - if (this._tokenregSID) { - return Promise.resolve(); - } - - return tokenreg.instance.Registered - .subscribe({ - fromBlock: 0, - toBlock: 'latest', - skipInitFetch: true - }, (error, logs) => { - if (error) { - return console.error('balances::attachToNewToken', 'failed to attach to tokenreg Registered', error.toString(), error.stack); - } - - this.handleTokensLogs(logs); - }) - .then((tokenregSID) => { - this._tokenregSID = tokenregSID; - }); - } - - attachToTokenMetaChange (tokenreg) { - if (this._tokenMetaSID) { - return Promise.resolve(); - } - - return tokenreg.instance.MetaChanged - .subscribe({ - fromBlock: 0, - toBlock: 'latest', - topics: [ null, padRight(this._api.util.asciiToHex('IMG'), 32) ], - skipInitFetch: true - }, (error, logs) => { - if (error) { - return console.error('balances::attachToTokenMetaChange', 'failed to attach to tokenreg MetaChanged', error.toString(), error.stack); - } - - this.handleTokensLogs(logs); - }) - .then((tokenMetaSID) => { - this._tokenMetaSID = tokenMetaSID; - }); - } - - handleTokensLogs (logs) { - const tokenIds = logs.map((log) => log.params.id.value.toNumber()); - - this._store.dispatch(fetchTokens(tokenIds)); + return fetchBalances(null, skipNotifications)(dispatch, getState); } } diff --git a/js-old/src/redux/providers/balancesActions.js b/js-old/src/redux/providers/balancesActions.js index edfa7d2d3..767135ea5 100644 --- a/js-old/src/redux/providers/balancesActions.js +++ b/js-old/src/redux/providers/balancesActions.js @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -import { uniq, isEqual } from 'lodash'; +import { difference, uniq } from 'lodash'; import { push } from 'react-router-redux'; import { notifyTransaction } from '~/util/notifications'; @@ -22,11 +22,16 @@ import { ETH_TOKEN, fetchAccountsBalances } from '~/util/tokens'; import { LOG_KEYS, getLogger } from '~/config'; import { sha3 } from '~/api/util/sha3'; +import { fetchTokens } from './tokensActions'; + const TRANSFER_SIGNATURE = sha3('Transfer(address,address,uint256)'); const log = getLogger(LOG_KEYS.Balances); -let tokensFilter = {}; +let tokensFilter = { + tokenAddresses: [], + addresses: [] +}; function _setBalances (balances) { return { @@ -63,13 +68,10 @@ function setBalances (updates, skipNotifications = false) { dispatch(notifyBalanceChange(who, prevTokenValue, nextTokenValue, token)); } - // Add the token if it's native ETH or if it has a value - if (token.native || nextTokenValue.gt(0)) { - nextBalances[who] = { - ...(nextBalances[who] || {}), - [tokenId]: nextTokenValue - }; - } + nextBalances[who] = { + ...(nextBalances[who] || {}), + [tokenId]: nextTokenValue + }; }); }); @@ -100,41 +102,92 @@ function notifyBalanceChange (who, fromValue, toValue, token) { } // TODO: fetch txCount when needed -export function fetchBalances (_addresses, skipNotifications = false) { - return fetchTokensBalances(_addresses, [ ETH_TOKEN ], skipNotifications); +export function fetchBalances (addresses, skipNotifications = false) { + return (dispatch, getState) => { + const { personal } = getState(); + const { visibleAccounts, accounts } = personal; + + const addressesToFetch = addresses || uniq(visibleAccounts.concat(Object.keys(accounts))); + const updates = addressesToFetch.reduce((updates, who) => { + updates[who] = [ ETH_TOKEN.id ]; + + return updates; + }, {}); + + return fetchTokensBalances(updates, skipNotifications)(dispatch, getState); + }; } -export function updateTokensFilter (_addresses, _tokens, options = {}) { +export function updateTokensFilter (options = {}) { return (dispatch, getState) => { const { api, personal, tokens } = getState(); const { visibleAccounts, accounts } = personal; - const addressesToFetch = uniq(visibleAccounts.concat(Object.keys(accounts))); - const addresses = uniq(_addresses || addressesToFetch || []).sort(); + const addresses = uniq(visibleAccounts.concat(Object.keys(accounts))); + const tokensToUpdate = Object.values(tokens); + const tokensAddressMap = Object.values(tokens).reduce((map, token) => { + map[token.address] = token; + return map; + }, {}); - const tokensToUpdate = _tokens || Object.values(tokens); const tokenAddresses = tokensToUpdate .map((t) => t.address) - .filter((address) => address) - .sort(); + .filter((address) => address && !/^(0x)?0*$/.test(address)); + + // Token Addresses that are not in the current filter + const newTokenAddresses = difference(tokenAddresses, tokensFilter.tokenAddresses); + + // Addresses that are not in the current filter (omit those + // that the filter includes) + const newAddresses = difference(addresses, tokensFilter.addresses); if (tokensFilter.filterFromId || tokensFilter.filterToId) { - // Has the tokens addresses changed (eg. a network change) - const sameTokens = isEqual(tokenAddresses, tokensFilter.tokenAddresses); - - // Addresses that are not in the current filter (omit those - // that the filter includes) - const newAddresses = addresses.filter((address) => !tokensFilter.addresses.includes(address)); - // If no new addresses and the same tokens, don't change the filter - if (sameTokens && newAddresses.length === 0) { + if (newTokenAddresses.length === 0 && newAddresses.length === 0) { log.debug('no need to update token filter', addresses, tokenAddresses, tokensFilter); - return queryTokensFilter(tokensFilter)(dispatch, getState); + return; } } - log.debug('updating the token filter', addresses, tokenAddresses); const promises = []; + const updates = {}; + + const allTokenIds = tokensToUpdate.map((token) => token.id); + const newTokenIds = newTokenAddresses.map((address) => tokensAddressMap[address].id); + + newAddresses.forEach((newAddress) => { + updates[newAddress] = allTokenIds; + }); + + difference(addresses, newAddresses).forEach((oldAddress) => { + updates[oldAddress] = newTokenIds; + }); + + log.debug('updating the token filter', addresses, tokenAddresses); + + const topicsFrom = [ TRANSFER_SIGNATURE, addresses, null ]; + const topicsTo = [ TRANSFER_SIGNATURE, null, addresses ]; + + const filterOptions = { + fromBlock: 'latest', + toBlock: 'latest', + address: tokenAddresses + }; + + const optionsFrom = { + ...filterOptions, + topics: topicsFrom + }; + + const optionsTo = { + ...filterOptions, + topics: topicsTo + }; + + promises.push( + api.eth.newFilter(optionsFrom), + api.eth.newFilter(optionsTo) + ); if (tokensFilter.filterFromId) { promises.push(api.eth.uninstallFilter(tokensFilter.filterFromId)); @@ -144,48 +197,16 @@ export function updateTokensFilter (_addresses, _tokens, options = {}) { promises.push(api.eth.uninstallFilter(tokensFilter.filterToId)); } - Promise - .all([ - api.eth.blockNumber() - ].concat(promises)) - .then(([ block ]) => { - const topicsFrom = [ TRANSFER_SIGNATURE, addresses, null ]; - const topicsTo = [ TRANSFER_SIGNATURE, null, addresses ]; - - const filterOptions = { - fromBlock: block, - toBlock: 'pending', - address: tokenAddresses - }; - - const optionsFrom = { - ...filterOptions, - topics: topicsFrom - }; - - const optionsTo = { - ...filterOptions, - topics: topicsTo - }; - - const newFilters = Promise.all([ - api.eth.newFilter(optionsFrom), - api.eth.newFilter(optionsTo) - ]); - - return newFilters; - }) + return Promise.all(promises) .then(([ filterFromId, filterToId ]) => { const nextTokensFilter = { filterFromId, filterToId, addresses, tokenAddresses }; - const { skipNotifications } = options; - tokensFilter = nextTokensFilter; - fetchTokensBalances(addresses, tokensToUpdate, skipNotifications)(dispatch, getState); }) + .then(() => fetchTokensBalances(updates)(dispatch, getState)) .catch((error) => { console.warn('balances::updateTokensFilter', error); }); @@ -194,12 +215,7 @@ export function updateTokensFilter (_addresses, _tokens, options = {}) { export function queryTokensFilter () { return (dispatch, getState) => { - const { api, personal, tokens } = getState(); - const { visibleAccounts, accounts } = personal; - - const allAddresses = visibleAccounts.concat(Object.keys(accounts)); - const addressesToFetch = uniq(allAddresses); - const lcAddresses = addressesToFetch.map((a) => a.toLowerCase()); + const { api } = getState(); Promise .all([ @@ -207,67 +223,107 @@ export function queryTokensFilter () { api.eth.getFilterChanges(tokensFilter.filterToId) ]) .then(([ logsFrom, logsTo ]) => { - const addresses = []; - const tokenAddresses = []; - const logs = logsFrom.concat(logsTo); + const logs = [].concat(logsFrom, logsTo); - if (logs.length > 0) { + if (logs.length === 0) { + return; + } else { log.debug('got tokens filter logs', logs); } + const { personal, tokens } = getState(); + const { visibleAccounts, accounts } = personal; + + const addressesToFetch = uniq(visibleAccounts.concat(Object.keys(accounts))); + const lcAddresses = addressesToFetch.map((a) => a.toLowerCase()); + + const lcTokensMap = Object.values(tokens).reduce((map, token) => { + map[token.address.toLowerCase()] = token; + return map; + }); + + // The keys are the account addresses, + // and the value is an Array of the tokens addresses + // to update + const updates = {}; + logs - .forEach((log) => { - const tokenAddress = log.address; + .forEach((log, index) => { + const tokenAddress = log.address.toLowerCase(); + const token = lcTokensMap[tokenAddress]; - const fromAddress = '0x' + log.topics[1].slice(-40); - const toAddress = '0x' + log.topics[2].slice(-40); + // logs = [ ...logsFrom, ...logsTo ] + const topicIdx = index < logsFrom.length ? 1 : 2; + const address = ('0x' + log.topics[topicIdx].slice(-40)).toLowerCase(); + const addressIndex = lcAddresses.indexOf(address); - const fromAddressIndex = lcAddresses.indexOf(fromAddress); - const toAddressIndex = lcAddresses.indexOf(toAddress); + if (addressIndex > -1) { + const who = addressesToFetch[addressIndex]; - if (fromAddressIndex > -1) { - addresses.push(addressesToFetch[fromAddressIndex]); + updates[who] = [].concat(updates[who] || [], token.id); } - - if (toAddressIndex > -1) { - addresses.push(addressesToFetch[toAddressIndex]); - } - - tokenAddresses.push(tokenAddress); }); - if (addresses.length === 0) { + // No accounts to update + if (Object.keys(updates).length === 0) { return; } - const tokensToUpdate = Object.values(tokens) - .filter((t) => tokenAddresses.includes(t.address)); + Object.keys(updates).forEach((who) => { + // Keep non-empty token addresses + updates[who] = uniq(updates[who]); + }); - fetchTokensBalances(uniq(addresses), tokensToUpdate)(dispatch, getState); + fetchTokensBalances(updates)(dispatch, getState); }); }; } -export function fetchTokensBalances (_addresses = null, _tokens = null, skipNotifications = false) { +export function fetchTokensBalances (updates, skipNotifications = false) { return (dispatch, getState) => { const { api, personal, tokens } = getState(); - const { visibleAccounts, accounts } = personal; const allTokens = Object.values(tokens); - const addressesToFetch = uniq(visibleAccounts.concat(Object.keys(accounts))); - const addresses = _addresses || addressesToFetch; - const tokensToUpdate = _tokens || allTokens; + if (!updates) { + const { visibleAccounts, accounts } = personal; + const addressesToFetch = uniq(visibleAccounts.concat(Object.keys(accounts))); - if (addresses.length === 0) { - return Promise.resolve(); + updates = addressesToFetch.reduce((updates, who) => { + updates[who] = allTokens.map((token) => token.id); + + return updates; + }, {}); } - const updates = addresses.reduce((updates, who) => { - updates[who] = tokensToUpdate.map((token) => token.id); - return updates; - }, {}); + let start = Date.now(); return fetchAccountsBalances(api, allTokens, updates) + .then((balances) => { + log.debug('got tokens balances', balances, updates, `(took ${Date.now() - start}ms)`); + + // Tokens info might not be fetched yet (to not load + // tokens we don't care about) + const tokenIdsToFetch = Object.values(balances) + .reduce((tokenIds, balance) => { + const nextTokenIds = Object.keys(balance) + .filter((tokenId) => balance[tokenId].gt(0)); + + return tokenIds.concat(nextTokenIds); + }, []); + + const tokenIndexesToFetch = uniq(tokenIdsToFetch) + .filter((tokenId) => tokens[tokenId] && tokens[tokenId].index && !tokens[tokenId].fetched) + .map((tokenId) => tokens[tokenId].index); + + if (tokenIndexesToFetch.length === 0) { + return balances; + } + + start = Date.now(); + return fetchTokens(tokenIndexesToFetch)(dispatch, getState) + .then(() => log.debug('token indexes fetched', tokenIndexesToFetch, `(took ${Date.now() - start}ms)`)) + .then(() => balances); + }) .then((balances) => { dispatch(setBalances(balances, skipNotifications)); }) diff --git a/js-old/src/redux/providers/certifications/actions.js b/js-old/src/redux/providers/certifications/actions.js index 8dede1c53..1eed6caea 100644 --- a/js-old/src/redux/providers/certifications/actions.js +++ b/js-old/src/redux/providers/certifications/actions.js @@ -14,14 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -export const fetchCertifiers = () => ({ - type: 'fetchCertifiers' -}); - -export const fetchCertifications = (address) => ({ - type: 'fetchCertifications', address -}); - export const addCertification = (address, id, name, title, icon) => ({ type: 'addCertification', address, id, name, title, icon }); diff --git a/js-old/src/redux/providers/certifications/certifiers.monitor.js b/js-old/src/redux/providers/certifications/certifiers.monitor.js new file mode 100644 index 000000000..d8ea5e451 --- /dev/null +++ b/js-old/src/redux/providers/certifications/certifiers.monitor.js @@ -0,0 +1,343 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +import { range } from 'lodash'; + +import { addCertification, removeCertification } from './actions'; + +import { getLogger, LOG_KEYS } from '~/config'; +import Contract from '~/api/contract'; +import { bytesToHex, hexToAscii } from '~/api/util/format'; +import Contracts from '~/contracts'; +import CertifierABI from '~/contracts/abi/certifier.json'; +import { querier } from './enhanced-querier'; + +const log = getLogger(LOG_KEYS.CertificationsMiddleware); + +let self = null; + +export default class CertifiersMonitor { + constructor (api, store) { + this._api = api; + this._name = 'Certifiers'; + this._store = store; + + this._contract = new Contract(this.api, CertifierABI); + this._contractEvents = [ 'Confirmed', 'Revoked' ] + .map((name) => this.contract.events.find((e) => e.name === name)); + + this.certifiers = {}; + this.fetchedAccounts = {}; + + this.load(); + } + + static get () { + if (self) { + return self; + } + + self = new CertifiersMonitor(); + return self; + } + + static init (api, store) { + if (!self) { + self = new CertifiersMonitor(api, store); + } + } + + get api () { + return this._api; + } + + get contract () { + return this._contract; + } + + get contractEvents () { + return this._contractEvents; + } + + get name () { + return this._name; + } + + get store () { + return this._store; + } + + get registry () { + return this._registry; + } + + get registryEvents () { + return this._registryEvents; + } + + checkFilters () { + this.checkCertifiersFilter(); + this.checkRegistryFilter(); + } + + checkCertifiersFilter () { + if (!this.certifiersFilter) { + return; + } + + this.api.eth.getFilterChanges(this.certifiersFilter) + .then((logs) => { + if (logs.length === 0) { + return; + } + + const parsedLogs = this.contract.parseEventLogs(logs).filter((log) => log.params); + + log.debug('received certifiers logs', parsedLogs); + + const promises = parsedLogs.map((log) => { + const account = log.params.who.value; + const certifier = Object.values(this.certifiers).find((c) => c.address === log.address); + + if (!certifier) { + log.warn('could not find the certifier', { certifiers: this.certifiers, log }); + return Promise.resolve(); + } + + return this.fetchAccount(account, { ids: [ certifier.id ] }); + }); + + return Promise.all(promises); + }) + .catch((error) => { + console.error(error); + }); + } + + checkRegistryFilter () { + if (!this.registryFilter) { + return; + } + + this.api.eth.getFilterChanges(this.registryFilter) + .then((logs) => { + if (logs.length === 0) { + return; + } + + const parsedLogs = this.contract.parseEventLogs(logs).filter((log) => log.params); + const indexes = parsedLogs.map((log) => log.params && log.params.id.value.toNumber()); + + log.debug('received registry logs', parsedLogs); + return this.fetchElements(indexes); + }) + .catch((error) => { + console.error(error); + }); + } + + /** + * Initial load of the Monitor. + * Fetch the contract from the Registry, and + * load the elements addresses + */ + load () { + const badgeReg = Contracts.get().badgeReg; + + log.debug(`loading the ${this.name} monitor...`); + return badgeReg.getContract() + .then((registryContract) => { + this._registry = registryContract; + this._registryEvents = [ 'Registered', 'Unregistered', 'MetaChanged', 'AddressChanged' ] + .map((name) => this.registry.events.find((e) => e.name === name)); + + return this.registry.instance.badgeCount.call({}); + }) + .then((count) => { + log.debug(`found ${count.toFormat()} registered contracts for ${this.name}`); + return this.fetchElements(range(count.toNumber())); + }) + .then(() => { + return this.setRegistryFilter(); + }) + .then(() => { + // Listen for new blocks + return this.api.subscribe('eth_blockNumber', (err) => { + if (err) { + return; + } + + this.checkFilters(); + }); + }) + .then(() => { + log.debug(`loaded the ${this.name} monitor!`, this.certifiers); + }) + .catch((error) => { + log.error(error); + }); + } + + /** + * Fetch the given registered element + */ + fetchElements (indexes) { + const badgeReg = Contracts.get().badgeReg; + const { instance } = this.registry; + + const sorted = indexes.sort(); + const from = sorted[0]; + const last = sorted[sorted.length - 1]; + const limit = last - from + 1; + + // Fetch the address, name and owner in one batch + return querier(this.api, { address: instance.address, from, limit }, instance.badge) + .then((results) => { + const certifiers = results + .map(([ address, name, owner ], index) => ({ + address, owner, + id: index + from, + name: hexToAscii(bytesToHex(name).replace(/(00)+$/, '')) + })) + .reduce((certifiers, certifier) => { + const { id } = certifier; + + if (!/^(0x)?0+$/.test(certifier.address)) { + certifiers[id] = certifier; + } else if (certifiers[id]) { + delete certifiers[id]; + } + + return certifiers; + }, {}); + + // Fetch the meta-data in serie + return Object.values(certifiers).reduce((promise, certifier) => { + return promise.then(() => badgeReg.fetchMeta(certifier.id)) + .then((meta) => { + this.certifiers[certifier.id] = { ...certifier, ...meta }; + }); + }, Promise.resolve()); + }) + .then(() => log.debug('fetched certifiers', { certifiers: this.certifiers })) + // Fetch the know accounts in case it's an update of the certifiers + .then(() => this.fetchAccounts(Object.keys(this.fetchedAccounts), { ids: indexes, force: true })); + } + + fetchAccounts (addresses, { ids = null, force = false } = {}) { + const newAddresses = force + ? addresses + : addresses.filter((address) => !this.fetchedAccounts[address]); + + if (newAddresses.length === 0) { + return Promise.resolve(); + } + + log.debug(`fetching values for "${addresses.join(' ; ')}" in ${this.name}...`); + return newAddresses + .reduce((promise, address) => { + return promise.then(() => this.fetchAccount(address, { ids })); + }, Promise.resolve()) + .then(() => { + log.debug(`fetched values for "${addresses.join(' ; ')}" in ${this.name}!`); + }) + .then(() => this.setCertifiersFilter()); + } + + fetchAccount (address, { ids = null } = {}) { + let certifiers = Object.values(this.certifiers); + + // Only fetch values for the givens ids, if any + if (ids) { + certifiers = certifiers.filter((certifier) => ids.includes(certifier.id)); + } + + certifiers + .reduce((promise, certifier) => { + return promise + .then(() => { + return this.contract.at(certifier.address).instance.certified.call({}, [ address ]); + }) + .then((certified) => { + const { id, title, icon, name } = certifier; + + if (!certified) { + return this.store.dispatch(removeCertification(address, id)); + } + + log.debug('seen as certified', { address, id, name, icon }); + this.store.dispatch(addCertification(address, id, name, title, icon)); + }); + }, Promise.resolve()) + .then(() => { + this.fetchedAccounts[address] = true; + }); + } + + setCertifiersFilter () { + const accounts = Object.keys(this.fetchedAccounts); + const addresses = Object.values(this.certifiers).map((c) => c.address); + // The events have as first indexed data the account address + const topics = [ + this.contractEvents.map((event) => '0x' + event.signature), + accounts + ]; + + if (accounts.length === 0 || addresses.length === 0) { + return; + } + + const promise = this.certifiersFilter + ? this.api.eth.uninstallFilter(this.certifiersFilter) + : Promise.resolve(); + + log.debug('setting up registry filter', { topics, accounts, addresses }); + + return promise + .then(() => this.api.eth.newFilter({ + fromBlock: 'latest', + toBlock: 'latest', + address: addresses, + topics + })) + .then((filterId) => { + this.certifiersFilter = filterId; + }) + .catch((error) => { + console.error(error); + }); + } + + setRegistryFilter () { + const { address } = this.registry.instance; + const topics = [ this.registryEvents.map((event) => '0x' + event.signature) ]; + + log.debug('setting up registry filter', { topics, address }); + + return this.api.eth + .newFilter({ + fromBlock: 'latest', + toBlock: 'latest', + address, topics + }) + .then((filterId) => { + this.registryFilter = filterId; + }) + .catch((error) => { + console.error(error); + }); + } +} diff --git a/js-old/src/redux/providers/certifications/enhanced-querier.js b/js-old/src/redux/providers/certifications/enhanced-querier.js new file mode 100644 index 000000000..9da42f1bf --- /dev/null +++ b/js-old/src/redux/providers/certifications/enhanced-querier.js @@ -0,0 +1,96 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +import { padRight, padLeft } from '~/api/util/format'; + +/** + * Bytecode of this contract: + * + * +pragma solidity ^0.4.10; + +contract Querier { + function Querier + (address addr, bytes32 sign, uint out_size, uint from, uint limit) + public + { + // The size is 32 bytes for each + // value, plus 32 bytes for the count + uint m_size = out_size * limit + 32; + + bytes32 p_return; + uint p_in; + uint p_out; + + assembly { + p_return := mload(0x40) + mstore(0x40, add(p_return, m_size)) + + mstore(p_return, limit) + + p_in := mload(0x40) + mstore(0x40, add(p_in, 0x24)) + + mstore(p_in, sign) + + p_out := add(p_return, 0x20) + } + + for (uint i = from; i < from + limit; i++) { + assembly { + mstore(add(p_in, 0x4), i) + call(gas, addr, 0x0, p_in, 0x24, p_out, out_size) + p_out := add(p_out, out_size) + pop + } + } + + assembly { + return (p_return, m_size) + } + } +} + */ + +export const bytecode = '0x60606040523415600e57600080fd5b60405160a0806099833981016040528080519190602001805191906020018051919060200180519190602001805191505082810260200160008080806040519350848401604052858452604051602481016040528981529250505060208201855b858701811015609457806004840152878260248560008e5af15090870190600101606f565b8484f300'; + +export const querier = (api, { address, from, limit }, method) => { + const { outputs, signature } = method; + const outLength = 32 * outputs.length; + const callargs = [ + padLeft(address, 32), + padRight(signature, 32), + padLeft(outLength, 32), + padLeft(from, 32), + padLeft(limit, 32) + ].map((v) => v.slice(2)).join(''); + const calldata = bytecode + callargs; + + return api.eth.call({ data: calldata }) + .then((result) => { + const data = result.slice(2); + const results = []; + + for (let i = 0; i < limit; i++) { + const datum = data.substr(2 * (32 + i * outLength), 2 * outLength); + const decoded = method.decodeOutput('0x' + datum).map((t) => t.value); + + results.push(decoded); + } + + return results; + }); +}; diff --git a/js-old/src/redux/providers/certifications/middleware.js b/js-old/src/redux/providers/certifications/middleware.js index b70ff4909..73178882a 100644 --- a/js-old/src/redux/providers/certifications/middleware.js +++ b/js-old/src/redux/providers/certifications/middleware.js @@ -14,222 +14,22 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -import { uniq, range, debounce } from 'lodash'; - -import { addCertification, removeCertification } from './actions'; - -import { getLogger, LOG_KEYS } from '~/config'; -import Contract from '~/api/contract'; import Contracts from '~/contracts'; -import CertifierABI from '~/contracts/abi/certifier.json'; - -const log = getLogger(LOG_KEYS.CertificationsMiddleware); - -// TODO: move this to a more general place -const updatableFilter = (api, onFilter) => { - let filter = null; - - const update = (address, topics) => { - if (filter) { - filter = filter.then((filterId) => { - api.eth.uninstallFilter(filterId); - }); - } - - filter = (filter || Promise.resolve()) - .then(() => api.eth.newFilter({ - fromBlock: 0, - toBlock: 'latest', - address, - topics - })) - .then((filterId) => { - onFilter(filterId); - return filterId; - }) - .catch((err) => { - console.error('Failed to create certifications filter:', err); - }); - - return filter; - }; - - return update; -}; +import Monitor from './certifiers.monitor'; export default class CertificationsMiddleware { toMiddleware () { const api = Contracts.get()._api; - const badgeReg = Contracts.get().badgeReg; - - const contract = new Contract(api, CertifierABI); - const Confirmed = contract.events.find((e) => e.name === 'Confirmed'); - const Revoked = contract.events.find((e) => e.name === 'Revoked'); return (store) => { - let certifiers = []; - let addresses = []; - let filterChanged = false; - let filter = null; - let badgeRegFilter = null; - let fetchCertifiersPromise = null; - - const updateFilter = updatableFilter(api, (filterId) => { - filterChanged = true; - filter = filterId; - }); - - const badgeRegUpdateFilter = updatableFilter(api, (filterId) => { - filterChanged = true; - badgeRegFilter = filterId; - }); - - badgeReg - .getContract() - .then((badgeRegContract) => { - return badgeRegUpdateFilter(badgeRegContract.address, [ [ - badgeRegContract.instance.Registered.signature, - badgeRegContract.instance.Unregistered.signature, - badgeRegContract.instance.MetaChanged.signature, - badgeRegContract.instance.AddressChanged.signature - ] ]); - }) - .then(() => { - shortFetchChanges(); - - api.subscribe('eth_blockNumber', (err) => { - if (err) { - return; - } - - fetchChanges(); - }); - }); - - function onLogs (logs) { - logs = contract.parseEventLogs(logs); - logs.forEach((log) => { - const certifier = certifiers.find((c) => c.address === log.address); - - if (!certifier) { - throw new Error(`Could not find certifier at ${log.address}.`); - } - const { id, name, title, icon } = certifier; - - if (log.event === 'Revoked') { - store.dispatch(removeCertification(log.params.who.value, id)); - } else { - store.dispatch(addCertification(log.params.who.value, id, name, title, icon)); - } - }); - } - - function onBadgeRegLogs (logs) { - return badgeReg.getContract() - .then((badgeRegContract) => { - logs = badgeRegContract.parseEventLogs(logs); - - const ids = logs.map((log) => log.params && log.params.id.value.toNumber()); - - return fetchCertifiers(uniq(ids)); - }); - } - - function _fetchChanges () { - const method = filterChanged - ? 'getFilterLogs' - : 'getFilterChanges'; - - filterChanged = false; - - api.eth[method](badgeRegFilter) - .then(onBadgeRegLogs) - .catch((err) => { - console.error('Failed to fetch badge reg events:', err); - }) - .then(() => api.eth[method](filter)) - .then(onLogs) - .catch((err) => { - console.error('Failed to fetch new certifier events:', err); - }); - } - - const shortFetchChanges = debounce(_fetchChanges, 0.5 * 1000, { leading: true }); - const fetchChanges = debounce(shortFetchChanges, 10 * 1000, { leading: true }); - - function fetchConfirmedEvents () { - return updateFilter(certifiers.map((c) => c.address), [ - [ Confirmed.signature, Revoked.signature ], - addresses - ]).then(() => shortFetchChanges()); - } - - function fetchCertifiers (ids = []) { - if (fetchCertifiersPromise) { - return fetchCertifiersPromise; - } - - let fetchEvents = false; - - const idsPromise = (certifiers.length === 0) - ? badgeReg.certifierCount().then((count) => { - return range(count); - }) - : Promise.resolve(ids); - - fetchCertifiersPromise = idsPromise - .then((ids) => { - const promises = ids.map((id) => { - return badgeReg.fetchCertifier(id) - .then((cert) => { - if (!certifiers.some((c) => c.id === cert.id)) { - certifiers = certifiers.concat(cert); - fetchEvents = true; - } - }) - .catch((err) => { - if (/does not exist/.test(err.toString())) { - return log.info(err.toString()); - } - - log.warn(`Could not fetch certifier ${id}:`, err); - }); - }); - - return Promise - .all(promises) - .then(() => { - fetchCertifiersPromise = null; - - if (fetchEvents) { - return fetchConfirmedEvents(); - } - }); - }); - - return fetchCertifiersPromise; - } + Monitor.init(api, store); return (next) => (action) => { switch (action.type) { - case 'fetchCertifiers': - fetchConfirmedEvents(); - - break; - case 'fetchCertifications': - const { address } = action; - - if (!addresses.includes(address)) { - addresses = addresses.concat(address); - fetchConfirmedEvents(); - } - - break; case 'setVisibleAccounts': - const _addresses = action.addresses || []; + const { addresses = [] } = action; - addresses = uniq(addresses.concat(_addresses)); - fetchConfirmedEvents(); + Monitor.get().fetchAccounts(addresses); next(action); break; diff --git a/js-old/src/redux/providers/certifications/reducer.js b/js-old/src/redux/providers/certifications/reducer.js index 0f94239c6..7be0fb15b 100644 --- a/js-old/src/redux/providers/certifications/reducer.js +++ b/js-old/src/redux/providers/certifications/reducer.js @@ -20,24 +20,32 @@ export default (state = initialState, action) => { if (action.type === 'addCertification') { const { address, id, name, icon, title } = action; const certifications = state[address] || []; + const certifierIndex = certifications.findIndex((c) => c.id === id); + const data = { id, name, icon, title }; + const nextCertifications = certifications.slice(); - if (certifications.some((c) => c.id === id)) { - return state; + if (certifierIndex >= 0) { + nextCertifications[certifierIndex] = data; + } else { + nextCertifications.push(data); } - const newCertifications = certifications.concat({ - id, name, icon, title - }); - - return { ...state, [address]: newCertifications }; + return { ...state, [address]: nextCertifications }; } if (action.type === 'removeCertification') { const { address, id } = action; const certifications = state[address] || []; + const certifierIndex = certifications.findIndex((c) => c.id === id); - const newCertifications = certifications.filter((c) => c.id !== id); + // Don't remove if not there + if (certifierIndex < 0) { + return state; + } + const newCertifications = certifications.slice(); + + newCertifications.splice(certifierIndex, 1); return { ...state, [address]: newCertifications }; } diff --git a/js-old/src/redux/providers/index.js b/js-old/src/redux/providers/index.js index 967820cc7..90da87b5f 100644 --- a/js-old/src/redux/providers/index.js +++ b/js-old/src/redux/providers/index.js @@ -18,6 +18,7 @@ export Balances from './balances'; export Personal from './personal'; export Signer from './signer'; export Status from './status'; +export Tokens from './tokens'; export apiReducer from './apiReducer'; export balancesReducer from './balancesReducer'; diff --git a/js-old/src/redux/providers/personal.js b/js-old/src/redux/providers/personal.js index 4c9d3e23a..b4431f8fd 100644 --- a/js-old/src/redux/providers/personal.js +++ b/js-old/src/redux/providers/personal.js @@ -16,37 +16,117 @@ import { personalAccountsInfo } from './personalActions'; +let instance; + export default class Personal { constructor (store, api) { this._api = api; this._store = store; } - start () { - this._removeDeleted(); - this._subscribeAccountsInfo(); + static get (store) { + if (!instance && store) { + return Personal.init(store); + } + + return instance; + } + + static init (store) { + const { api } = store.getState(); + + if (!instance) { + instance = new Personal(store, api); + } else if (!instance) { + throw new Error('The Personal Provider has not been initialized yet'); + } + + return instance; + } + + static start () { + const self = instance; + + return Personal.stop() + .then(() => Promise.all([ + self._removeDeleted(), + self._subscribeAccountsInfo() + ])); + } + + static stop () { + if (!instance) { + return Promise.resolve(); + } + + const self = instance; + + return self._unsubscribeAccountsInfo(); } _subscribeAccountsInfo () { - this._api - .subscribe('parity_allAccountsInfo', (error, accountsInfo) => { - if (error) { - console.error('parity_allAccountsInfo', error); - return; - } + let resolved = false; - // Add the address to each accounts - Object.keys(accountsInfo) - .forEach((address) => { - accountsInfo[address].address = address; - }); + // The Promise will be resolved when the first + // accounts are loaded + return new Promise((resolve, reject) => { + this._api + .subscribe('parity_allAccountsInfo', (error, accountsInfo) => { + if (error) { + console.error('parity_allAccountsInfo', error); - this._store.dispatch(personalAccountsInfo(accountsInfo)); - }); + if (!resolved) { + resolved = true; + return reject(error); + } + + return; + } + + // Add the address to each accounts + Object.keys(accountsInfo) + .forEach((address) => { + accountsInfo[address].address = address; + }); + + const { dispatch, getState } = this._store; + + personalAccountsInfo(accountsInfo)(dispatch, getState) + .then(() => { + if (!resolved) { + resolved = true; + return resolve(); + } + }) + .catch((error) => { + if (!resolved) { + resolved = true; + return reject(error); + } + }); + }) + .then((subId) => { + this.subscriptionId = subId; + }); + }); + } + + _unsubscribeAccountsInfo () { + // Unsubscribe to any previous + // subscriptions + if (this.subscriptionId) { + return this._api + .unsubscribe(this.subscriptionId) + .then(() => { + this.subscriptionId = null; + }); + } + + return Promise.resolve(); } _removeDeleted () { - this._api.parity + return this._api.parity .allAccountsInfo() .then((accountsInfo) => { return Promise.all( diff --git a/js-old/src/redux/providers/personalActions.js b/js-old/src/redux/providers/personalActions.js index f747fa92e..2b2f2b8e8 100644 --- a/js-old/src/redux/providers/personalActions.js +++ b/js-old/src/redux/providers/personalActions.js @@ -17,6 +17,7 @@ import { isEqual, intersection } from 'lodash'; import BalancesProvider from './balances'; +import TokensProvider from './tokens'; import { updateTokensFilter } from './balancesActions'; import { attachWallets } from './walletActions'; @@ -70,7 +71,7 @@ export function personalAccountsInfo (accountsInfo) { return WalletsUtils.fetchOwners(walletContract.at(wallet.address)); }); - Promise + return Promise .all(_fetchOwners) .then((walletsOwners) => { return Object @@ -135,10 +136,6 @@ export function personalAccountsInfo (accountsInfo) { hardware })); dispatch(attachWallets(wallets)); - - BalancesProvider.get().fetchAllBalances({ - force: true - }); }) .catch((error) => { console.warn('personalAccountsInfo', error); @@ -176,12 +173,17 @@ export function setVisibleAccounts (addresses) { return; } - // Update the Tokens filter to take into account the new - // addresses - dispatch(updateTokensFilter()); + const promises = []; - BalancesProvider.get().fetchBalances({ - force: true - }); + // Update the Tokens filter to take into account the new + // addresses if it is not loading (it fetches the + // balances automatically after loading) + if (!TokensProvider.get().loading) { + promises.push(updateTokensFilter()(dispatch, getState)); + } + + promises.push(BalancesProvider.get().fetchEthBalances({ force: true })); + + return Promise.all(promises); }; } diff --git a/js-old/src/redux/providers/requestsActions.js b/js-old/src/redux/providers/requestsActions.js index 970bcba91..b968b1c06 100644 --- a/js-old/src/redux/providers/requestsActions.js +++ b/js-old/src/redux/providers/requestsActions.js @@ -23,12 +23,19 @@ import SavedRequests from '~/views/Application/Requests/savedRequests'; const savedRequests = new SavedRequests(); export const init = (api) => (dispatch) => { - api.subscribe('parity_postTransaction', (error, request) => { + api.subscribe('signer_requestsToConfirm', (error, pending) => { if (error) { - return console.error(error); + return; } - dispatch(watchRequest(request)); + const requests = pending + .filter((p) => p.payload && p.payload.sendTransaction) + .map((p) => ({ + requestId: '0x' + p.id.toString(16), + transaction: p.payload.sendTransaction + })); + + requests.forEach((request) => dispatch(watchRequest(request))); }); api.once('connected', () => { @@ -47,13 +54,24 @@ export const watchRequest = (request) => (dispatch, getState) => { dispatch(trackRequest(requestId, request)); }; -export const trackRequest = (requestId, { transactionHash = null } = {}) => (dispatch, getState) => { +export const trackRequest = (requestId, { transactionHash = null, retries = 0 } = {}) => (dispatch, getState) => { const { api } = getState(); trackRequestUtil(api, { requestId, transactionHash }, (error, _data = {}) => { const data = { ..._data }; if (error) { + // Retry in 500ms if request not found, max 5 times + if (error.type === 'REQUEST_NOT_FOUND') { + if (retries > 5) { + return dispatch(deleteRequest(requestId)); + } + + return setTimeout(() => { + trackRequest(requestId, { transactionHash, retries: retries + 1 })(dispatch, getState); + }, 500); + } + console.error(error); return dispatch(setRequest(requestId, { error })); } @@ -65,8 +83,9 @@ export const trackRequest = (requestId, { transactionHash = null } = {}) => (dis const requestData = requests[requestId]; let blockSubscriptionId = -1; - // Set the block height to 0 at the beggining - data.blockHeight = new BigNumber(0); + // Set the block height to 1 at the beginning (transaction mined, + // thus one confirmation) + data.blockHeight = new BigNumber(1); // If the request was a contract deployment, // then add the contract with the saved metadata to the account diff --git a/js-old/src/redux/providers/signerMiddleware.spec.js b/js-old/src/redux/providers/signerMiddleware.spec.js index 1dcc19d75..4ee1123c1 100644 --- a/js-old/src/redux/providers/signerMiddleware.spec.js +++ b/js-old/src/redux/providers/signerMiddleware.spec.js @@ -48,6 +48,12 @@ let store; function createApi () { api = { + transport: { + on: sinon.stub() + }, + pubsub: { + subscribeAndGetResult: sinon.stub().returns(Promise.reject(new Error('not connected'))) + }, net: { version: sinon.stub().resolves('2') }, diff --git a/js-old/src/redux/providers/status.js b/js-old/src/redux/providers/status.js index 39ba74d01..7390ed4af 100644 --- a/js-old/src/redux/providers/status.js +++ b/js-old/src/redux/providers/status.js @@ -14,12 +14,11 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -import { isEqual } from 'lodash'; +import { isEqual, debounce } from 'lodash'; import { LOG_KEYS, getLogger } from '~/config'; -import UpgradeStore from '~/modals/UpgradeParity/store'; +// import UpgradeStore from '~/modals/UpgradeParity/store'; -import BalancesProvider from './balances'; import { statusBlockNumber, statusCollection } from './statusActions'; const log = getLogger(LOG_KEYS.Signer); @@ -31,7 +30,6 @@ const STATUS_BAD = 'bad'; export default class Status { _apiStatus = {}; - _status = {}; _longStatus = {}; _minerSettings = {}; _timeoutIds = {}; @@ -41,21 +39,14 @@ export default class Status { constructor (store, api) { this._api = api; this._store = store; - this._upgradeStore = UpgradeStore.get(api); - - // On connecting, stop all subscriptions - api.on('connecting', this.stop, this); - - // On connected, start the subscriptions - api.on('connected', this.start, this); - - // On disconnected, stop all subscriptions - api.on('disconnected', this.stop, this); + // this._upgradeStore = UpgradeStore.get(api); this.updateApiStatus(); } - static instantiate (store, api) { + static init (store) { + const { api } = store.getState(); + if (!instance) { instance = new Status(store, api); } @@ -63,59 +54,61 @@ export default class Status { return instance; } - static get () { - if (!instance) { + static get (store) { + if (!instance && store) { + return Status.init(store); + } else if (!instance) { throw new Error('The Status Provider has not been initialized yet'); } return instance; } - start () { + static start () { + const self = instance; + log.debug('status::start'); - Promise - .all([ - this._subscribeBlockNumber(), + const promises = [ + self._subscribeBlockNumber(), + self._subscribeNetPeers(), + self._subscribeEthSyncing(), + self._subscribeNodeHealth(), + self._pollLongStatus(), + self._pollApiStatus() + ]; - this._pollLongStatus(), - this._pollStatus() - ]) - .then(() => { - return BalancesProvider.start(); - }); + return Status.stop() + .then(() => Promise.all(promises)); } - stop () { - log.debug('status::stop'); - - const promises = []; - - if (this._blockNumberSubscriptionId) { - const promise = this._api - .unsubscribe(this._blockNumberSubscriptionId) - .then(() => { - this._blockNumberSubscriptionId = null; - }); - - promises.push(promise); + static stop () { + if (!instance) { + return Promise.resolve(); } - Object.values(this._timeoutIds).forEach((timeoutId) => { - clearTimeout(timeoutId); - }); + const self = instance; - const promise = BalancesProvider.stop(); + log.debug('status::stop'); - promises.push(promise); + self._clearTimeouts(); - return Promise.all(promises) - .then(() => true) + return self._unsubscribeBlockNumber() .catch((error) => { console.error('status::stop', error); - return true; }) - .then(() => this.updateApiStatus()); + .then(() => self.updateApiStatus()); + } + + getApiStatus = () => { + const { isConnected, isConnecting, needsToken, secureToken } = this._api; + + return { + isConnected, + isConnecting, + needsToken, + secureToken + }; } updateApiStatus () { @@ -129,6 +122,33 @@ export default class Status { } } + _clearTimeouts () { + Object.values(this._timeoutIds).forEach((timeoutId) => { + clearTimeout(timeoutId); + }); + } + + _overallStatus (health) { + const allWithTime = [health.peers, health.sync, health.time].filter(x => x); + const all = [health.peers, health.sync].filter(x => x); + const statuses = all.map(x => x.status); + const bad = statuses.find(x => x === STATUS_BAD); + const needsAttention = statuses.find(x => x === STATUS_WARN); + const message = allWithTime.map(x => x.message).filter(x => x); + + if (all.length) { + return { + status: bad || needsAttention || STATUS_OK, + message + }; + } + + return { + status: STATUS_BAD, + message: ['Unable to fetch node health.'] + }; + } + _subscribeBlockNumber = () => { return this._api .subscribe('eth_blockNumber', (error, blockNumber) => { @@ -159,92 +179,81 @@ export default class Status { }); } - _pollTraceMode = () => { - return this._api.trace - .block() - .then(blockTraces => { - // Assumes not in Trace Mode if no transactions - // in latest block... - return blockTraces.length > 0; - }) - .catch(() => false); + _updateStatus = debounce(status => { + this._store.dispatch(statusCollection(status)); + }, 2500, { + maxWait: 5000 + }); + + _subscribeEthSyncing = () => { + return this._api.pubsub + .eth + .syncing((error, syncing) => { + if (error) { + return; + } + + this._updateStatus({ syncing }); + }); } - getApiStatus = () => { - const { isConnected, isConnecting, needsToken, secureToken } = this._api; + _subscribeNetPeers = () => { + return this._api.pubsub + .parity + .netPeers((error, netPeers) => { + if (error || !netPeers) { + return; + } - return { - isConnected, - isConnecting, - needsToken, - secureToken - }; + this._store.dispatch(statusCollection({ netPeers })); + }); } - _pollStatus = () => { - const nextTimeout = (timeout = 1000) => { - if (this._timeoutIds.status) { - clearTimeout(this._timeoutIds.status); - } - - this._timeoutIds.status = setTimeout(() => this._pollStatus(), timeout); - }; - - this.updateApiStatus(); - - if (!this._api.isConnected) { - nextTimeout(250); - return Promise.resolve(); - } - - const statusPromises = [ - this._api.eth.syncing(), - this._api.parity.netPeers(), - this._api.parity.nodeHealth() - ]; - - return Promise - .all(statusPromises) - .then(([ syncing, netPeers, health ]) => { - const status = { netPeers, syncing, health }; + _subscribeNodeHealth = () => { + return this._api.pubsub + .parity + .nodeHealth((error, health) => { + if (error || !health) { + return; + } health.overall = this._overallStatus(health); health.peers = health.peers || {}; health.sync = health.sync || {}; health.time = health.time || {}; - if (!isEqual(status, this._status)) { - this._store.dispatch(statusCollection(status)); - this._status = status; - } - }) - .catch((error) => { - console.error('_pollStatus', error); - }) - .then(() => { - nextTimeout(); + this._store.dispatch(statusCollection({ health })); }); } - _overallStatus = (health) => { - const allWithTime = [health.peers, health.sync, health.time].filter(x => x); - const all = [health.peers, health.sync].filter(x => x); - const statuses = all.map(x => x.status); - const bad = statuses.find(x => x === STATUS_BAD); - const needsAttention = statuses.find(x => x === STATUS_WARN); - const message = allWithTime.map(x => x.message).filter(x => x); - - if (all.length) { - return { - status: bad || needsAttention || STATUS_OK, - message - }; + _unsubscribeBlockNumber () { + if (this._blockNumberSubscriptionId) { + return this._api + .unsubscribe(this._blockNumberSubscriptionId) + .then(() => { + this._blockNumberSubscriptionId = null; + }); } - return { - status: STATUS_BAD, - message: ['Unable to fetch node health.'] + return Promise.resolve(); + } + + _pollApiStatus = () => { + const nextTimeout = (timeout = 1000) => { + if (this._timeoutIds.status) { + clearTimeout(this._timeoutIds.status); + } + + this._timeoutIds.status = setTimeout(() => this._pollApiStatus(), timeout); }; + + this.updateApiStatus(); + + if (!this._api.isConnected) { + nextTimeout(250); + } else { + nextTimeout(); + } } /** @@ -259,7 +268,7 @@ export default class Status { } const { nodeKindFull } = this._store.getState().nodeStatus; - const defaultTimeout = (nodeKindFull === false ? 240 : 30) * 1000; + const defaultTimeout = (nodeKindFull === false ? 240 : 60) * 1000; const nextTimeout = (timeout = defaultTimeout) => { if (this._timeoutIds.longStatus) { @@ -271,19 +280,18 @@ export default class Status { const statusPromises = [ this._api.parity.nodeKind(), - this._api.parity.netPeers(), this._api.web3.clientVersion(), this._api.net.version(), this._api.parity.netChain() ]; - if (nodeKindFull) { - statusPromises.push(this._upgradeStore.checkUpgrade()); - } + // if (nodeKindFull) { + // statusPromises.push(this._upgradeStore.checkUpgrade()); + // } return Promise .all(statusPromises) - .then(([nodeKind, netPeers, clientVersion, netVersion, netChain]) => { + .then(([nodeKind, clientVersion, netVersion, netChain]) => { const isTest = [ '2', // morden '3', // ropsten, @@ -298,7 +306,6 @@ export default class Status { const longStatus = { nodeKind, nodeKindFull, - netPeers, clientVersion, netChain, netVersion, @@ -310,11 +317,12 @@ export default class Status { this._longStatus = longStatus; } }) + .then(() => { + nextTimeout(); + }) .catch((error) => { console.error('_pollLongStatus', error); - }) - .then(() => { - nextTimeout(60000); + nextTimeout(30000); }); } } diff --git a/js-old/src/redux/providers/tokens.js b/js-old/src/redux/providers/tokens.js new file mode 100644 index 000000000..2ff8b8ce1 --- /dev/null +++ b/js-old/src/redux/providers/tokens.js @@ -0,0 +1,166 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +import { updateTokensFilter } from './balancesActions'; +import { loadTokens, fetchTokens } from './tokensActions'; +import { padRight } from '~/api/util/format'; + +import { LOG_KEYS, getLogger } from '~/config'; +import Contracts from '~/contracts'; + +const log = getLogger(LOG_KEYS.Balances); + +let instance = null; + +export default class Tokens { + constructor (store, api) { + this._api = api; + this._store = store; + + this._tokenreg = null; + this._tokenregSubs = []; + + this._loading = false; + } + + get loading () { + return this._loading; + } + + static get (store) { + if (!instance && store) { + return Tokens.init(store); + } else if (!instance) { + throw new Error('The Tokens Provider has not been initialized yet'); + } + + return instance; + } + + static init (store) { + const { api } = store.getState(); + + if (!instance) { + instance = new Tokens(store, api); + } + + return instance; + } + + static start () { + if (!instance) { + return Promise.reject('Tokens Provider has not been initiated yet'); + } + + const self = instance; + + self._loading = true; + + // Unsubscribe from previous subscriptions + return Tokens.stop() + .then(() => self.loadTokens()) + .then(() => { + self._loading = false; + }); + } + + static stop () { + if (!instance) { + return Promise.resolve(); + } + + const self = instance; + + // Unsubscribe without adding the promises + // to the result, since it would have to wait for a + // reconnection to resolve if the Node is disconnected + if (self._tokenreg) { + const tokenregPromises = self._tokenregSubs + .map((tokenregSID) => self._tokenreg.unsubscribe(tokenregSID)); + + Promise.all(tokenregPromises) + .then(() => { + self._tokenregSubs = []; + }); + } + + return Promise.resolve(); + } + + attachToTokensEvents (tokenreg) { + const metaTopics = [ null, padRight(this._api.util.asciiToHex('IMG'), 32) ]; + + return Promise + .all([ + this._attachToTokenregEvents(tokenreg, 'Registered'), + this._attachToTokenregEvents(tokenreg, 'MetaChanged', metaTopics) + ]); + } + + getTokenRegistry () { + return Contracts.get().tokenReg.getContract(); + } + + loadTokens (options = {}) { + const { dispatch, getState } = this._store; + + return this + .getTokenRegistry() + .then((tokenreg) => { + this._tokenreg = tokenreg; + + return loadTokens(options)(dispatch, getState); + }) + .then(() => updateTokensFilter()(dispatch, getState)) + .then(() => this.attachToTokensEvents(this._tokenreg)) + .catch((error) => { + console.warn('balances::loadTokens', error); + }); + } + + _attachToTokenregEvents (tokenreg, event, topics = []) { + if (this._tokenregSID) { + return Promise.resolve(); + } + + return tokenreg.instance[event] + .subscribe({ + fromBlock: 'latest', + toBlock: 'latest', + topics: topics, + skipInitFetch: true + }, (error, logs) => { + if (error) { + return console.error('balances::attachToNewToken', 'failed to attach to tokenreg Registered', error.toString(), error.stack); + } + + this._handleTokensLogs(logs); + }) + .then((tokenregSID) => { + this._tokenregSubs.push(tokenregSID); + }); + } + + _handleTokensLogs (logs) { + const { dispatch, getState } = this._store; + const tokenIds = logs.map((log) => log.params.id.value.toNumber()); + + log.debug('got TokenRegistry logs', logs, tokenIds); + + return fetchTokens(tokenIds)(dispatch, getState) + .then(() => updateTokensFilter()(dispatch, getState)); + } +} diff --git a/js-old/src/redux/providers/tokensActions.js b/js-old/src/redux/providers/tokensActions.js index 6f902882d..2e1e8c052 100644 --- a/js-old/src/redux/providers/tokensActions.js +++ b/js-old/src/redux/providers/tokensActions.js @@ -14,56 +14,223 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -import { uniq } from 'lodash'; +import { chunk, uniq } from 'lodash'; +import store from 'store'; import Contracts from '~/contracts'; import { LOG_KEYS, getLogger } from '~/config'; -import { fetchTokenIds, fetchTokenInfo } from '~/util/tokens'; +import { fetchTokenIds, fetchTokensBasics, fetchTokensInfo, fetchTokensImages } from '~/util/tokens'; -import { updateTokensFilter } from './balancesActions'; import { setAddressImage } from './imagesActions'; +const TOKENS_CACHE_LS_KEY_PREFIX = '_parity::tokens::'; const log = getLogger(LOG_KEYS.Balances); -export function setTokens (tokens) { +function _setTokens (tokens) { return { type: 'setTokens', tokens }; } +export function setTokens (nextTokens) { + return (dispatch, getState) => { + const { nodeStatus, tokens: prevTokens } = getState(); + const { tokenReg } = Contracts.get(); + const tokens = { + ...prevTokens, + ...nextTokens + }; + + return tokenReg.getContract() + .then((tokenRegContract) => { + const lsKey = TOKENS_CACHE_LS_KEY_PREFIX + nodeStatus.netChain; + + store.set(lsKey, { + tokenreg: tokenRegContract.address, + tokens + }); + }) + .catch((error) => { + console.error(error); + }) + .then(() => { + dispatch(_setTokens(nextTokens)); + }); + }; +} + +function loadCachedTokens (tokenRegContract) { + return (dispatch, getState) => { + const { nodeStatus } = getState(); + + const lsKey = TOKENS_CACHE_LS_KEY_PREFIX + nodeStatus.netChain; + const cached = store.get(lsKey); + + if (cached) { + // Check if we have data from the right contract + if (cached.tokenreg === tokenRegContract.address && cached.tokens) { + log.debug('found cached tokens', cached.tokens); + + // Fetch all the tokens images on load + // (it's the only thing that might have changed) + const tokenIndexes = Object.values(cached.tokens) + .filter((t) => t && t.fetched) + .map((t) => t.index); + + fetchTokensData(tokenRegContract, tokenIndexes)(dispatch, getState); + } else { + store.remove(lsKey); + } + } + }; +} + export function loadTokens (options = {}) { log.debug('loading tokens', Object.keys(options).length ? options : ''); return (dispatch, getState) => { const { tokenReg } = Contracts.get(); - tokenReg.getInstance() - .then((tokenRegInstance) => { - return fetchTokenIds(tokenRegInstance); + return tokenReg.getContract() + .then((tokenRegContract) => { + loadCachedTokens(tokenRegContract)(dispatch, getState); + return fetchTokenIds(tokenRegContract.instance); }) - .then((tokenIndexes) => dispatch(fetchTokens(tokenIndexes, options))) + .then((tokenIndexes) => loadTokensBasics(tokenIndexes, options)(dispatch, getState)) .catch((error) => { console.warn('tokens::loadTokens', error); }); }; } -export function fetchTokens (_tokenIndexes, options = {}) { - const tokenIndexes = uniq(_tokenIndexes || []); +export function loadTokensBasics (tokenIndexes, options) { + const limit = 64; + + return (dispatch, getState) => { + const { api } = getState(); + const { tokenReg } = Contracts.get(); + const nextTokens = {}; + const count = tokenIndexes.length; + + log.debug('loading basic tokens', tokenIndexes); + + if (count === 0) { + return Promise.resolve(); + } + + return tokenReg.getContract() + .then((tokenRegContract) => { + let promise = Promise.resolve(); + const first = tokenIndexes[0]; + const last = tokenIndexes[tokenIndexes.length - 1]; + + for (let from = first; from <= last; from += limit) { + // No need to fetch `limit` elements + const lowerLimit = Math.min(limit, last - from + 1); + + promise = promise + .then(() => fetchTokensBasics(api, tokenRegContract, from, lowerLimit)) + .then((results) => { + results + .forEach((token) => { + nextTokens[token.id] = token; + }); + }); + } + + return promise; + }) + .then(() => { + log.debug('fetched tokens basic info', nextTokens); + + dispatch(setTokens(nextTokens)); + }) + .catch((error) => { + console.warn('tokens::fetchTokens', error); + }); + }; +} + +export function fetchTokens (_tokenIndexes) { + const tokenIndexes = uniq(_tokenIndexes || []); + const tokenChunks = chunk(tokenIndexes, 64); return (dispatch, getState) => { - const { api, images } = getState(); const { tokenReg } = Contracts.get(); - return tokenReg.getInstance() - .then((tokenRegInstance) => { - const promises = tokenIndexes.map((id) => fetchTokenInfo(api, tokenRegInstance, id)); + return tokenReg.getContract() + .then((tokenRegContract) => { + let promise = Promise.resolve(); - return Promise.all(promises); + tokenChunks.forEach((tokenChunk) => { + promise = promise + .then(() => fetchTokensData(tokenRegContract, tokenChunk)(dispatch, getState)); + }); + + return promise; }) - .then((results) => { - const tokens = results + .then(() => { + log.debug('fetched token', getState().tokens); + }) + .catch((error) => { + console.warn('tokens::fetchTokens', error); + }); + }; +} + +/** + * Split the given token indexes between those for whom + * we already have some info, and thus just need to fetch + * the image, and those for whom we don't have anything and + * need to fetch all the info. + */ +function fetchTokensData (tokenRegContract, tokenIndexes) { + return (dispatch, getState) => { + const { api, tokens, images } = getState(); + const allTokens = Object.values(tokens); + + const tokensIndexesMap = allTokens + .reduce((map, token) => { + map[token.index] = token; + return map; + }, {}); + + const fetchedTokenIndexes = allTokens + .filter((token) => token.fetched) + .map((token) => token.index); + + const fullIndexes = []; + const partialIndexes = []; + + tokenIndexes.forEach((tokenIndex) => { + if (fetchedTokenIndexes.includes(tokenIndex)) { + partialIndexes.push(tokenIndex); + } else { + fullIndexes.push(tokenIndex); + } + }); + + log.debug('need to fully fetch', fullIndexes); + log.debug('need to partially fetch', partialIndexes); + + const fullPromise = fetchTokensInfo(api, tokenRegContract, fullIndexes); + const partialPromise = fetchTokensImages(api, tokenRegContract, partialIndexes) + .then((imagesResult) => { + return imagesResult.map((image, index) => { + const tokenIndex = partialIndexes[index]; + const token = tokensIndexesMap[tokenIndex]; + + return { ...token, image }; + }); + }); + + return Promise.all([ fullPromise, partialPromise ]) + .then(([ fullResults, partialResults ]) => { + log.debug('fetched', { fullResults, partialResults }); + + return [].concat(fullResults, partialResults) + .filter(({ address }) => !/0x0*$/.test(address)) .reduce((tokens, token) => { const { id, image, address } = token; @@ -75,14 +242,9 @@ export function fetchTokens (_tokenIndexes, options = {}) { tokens[id] = token; return tokens; }, {}); - - log.debug('fetched token', tokens); - - dispatch(setTokens(tokens)); - dispatch(updateTokensFilter(null, null, options)); }) - .catch((error) => { - console.warn('tokens::fetchTokens', error); + .then((tokens) => { + dispatch(setTokens(tokens)); }); }; } diff --git a/js-old/src/redux/providers/tokensReducer.js b/js-old/src/redux/providers/tokensReducer.js index e11fb41a3..51eb00c14 100644 --- a/js-old/src/redux/providers/tokensReducer.js +++ b/js-old/src/redux/providers/tokensReducer.js @@ -25,10 +25,15 @@ const initialState = { export default handleActions({ setTokens (state, action) { const { tokens } = action; + const nextTokens = { ...state }; - return { - ...state, - ...tokens - }; + Object.keys(tokens).forEach((tokenId) => { + nextTokens[tokenId] = { + ...(nextTokens[tokenId]), + ...tokens[tokenId] + }; + }); + + return nextTokens; } }, initialState); diff --git a/js-old/src/redux/store.js b/js-old/src/redux/store.js index 5740cb618..af506b0e9 100644 --- a/js-old/src/redux/store.js +++ b/js-old/src/redux/store.js @@ -22,12 +22,14 @@ import initReducers from './reducers'; import { load as loadWallet } from './providers/walletActions'; import { init as initRequests } from './providers/requestsActions'; import { setupWorker } from './providers/workerWrapper'; +import { setApi } from './providers/apiActions'; import { Balances as BalancesProvider, Personal as PersonalProvider, Signer as SignerProvider, - Status as StatusProvider + Status as StatusProvider, + Tokens as TokensProvider } from './providers'; const storeCreation = window.devToolsExtension @@ -39,14 +41,59 @@ export default function (api, browserHistory, forEmbed = false) { const middleware = initMiddleware(api, browserHistory, forEmbed); const store = applyMiddleware(...middleware)(storeCreation)(reducers); - BalancesProvider.instantiate(store, api); - StatusProvider.instantiate(store, api); - new PersonalProvider(store, api).start(); + // Add the `api` to the Redux Store + store.dispatch({ type: 'initAll', api }); + store.dispatch(setApi(api)); + + // Initialise the Store Providers + BalancesProvider.init(store); + PersonalProvider.init(store); + StatusProvider.init(store); + TokensProvider.init(store); + new SignerProvider(store, api).start(); store.dispatch(loadWallet(api)); store.dispatch(initRequests(api)); setupWorker(store); + const start = () => { + return Promise + .resolve() + .then(() => console.log('v1: starting Status Provider...')) + .then(() => StatusProvider.start()) + .then(() => console.log('v1: started Status Provider')) + + .then(() => console.log('v1: starting Personal Provider...')) + .then(() => PersonalProvider.start()) + .then(() => console.log('v1: started Personal Provider')) + + .then(() => console.log('v1: starting Balances Provider...')) + .then(() => BalancesProvider.start()) + .then(() => console.log('v1: started Balances Provider')) + + .then(() => console.log('v1: starting Tokens Provider...')) + .then(() => TokensProvider.start()) + .then(() => console.log('v1: started Tokens Provider')); + }; + + const stop = () => { + return StatusProvider + .stop() + .then(() => PersonalProvider.stop()) + .then(() => TokensProvider.stop()) + .then(() => BalancesProvider.stop()); + }; + + // On connected, start the subscriptions + api.on('connected', start); + + // On disconnected, stop all subscriptions + api.on('disconnected', stop); + + if (api.isConnected) { + start(); + } + return store; } diff --git a/js-old/src/util/notifications.js b/js-old/src/util/notifications.js index 74732cac2..d153b2cce 100644 --- a/js-old/src/util/notifications.js +++ b/js-old/src/util/notifications.js @@ -17,12 +17,12 @@ import Push from 'push.js'; import BigNumber from 'bignumber.js'; -import unkownIcon from '~/../assets/images/contracts/unknown-64x64.png'; +import unknownIcon from '~/../assets/images/contracts/unknown-64x64.png'; export function notifyTransaction (account, token, _value, onClick) { const name = account.name || account.address; const value = _value.div(new BigNumber(token.format || 1)); - const icon = token.image || unkownIcon; + const icon = token.image || unknownIcon; let _notification = null; diff --git a/js-old/src/util/tokens.js b/js-old/src/util/tokens.js deleted file mode 100644 index 63e6e9f02..000000000 --- a/js-old/src/util/tokens.js +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { range } from 'lodash'; -import BigNumber from 'bignumber.js'; - -import { hashToImageUrl } from '~/redux/util'; -import { sha3 } from '~/api/util/sha3'; -import imagesEthereum from '~/../assets/images/contracts/ethereum-black-64x64.png'; - -const BALANCEOF_SIGNATURE = sha3('balanceOf(address)'); -const ADDRESS_PADDING = range(24).map(() => '0').join(''); - -export const ETH_TOKEN = { - address: '', - format: new BigNumber(10).pow(18), - id: sha3('eth_native_token').slice(0, 10), - image: imagesEthereum, - name: 'Ethereum', - native: true, - tag: 'ETH' -}; - -export function fetchTokenIds (tokenregInstance) { - return tokenregInstance.tokenCount - .call() - .then((numTokens) => { - const tokenIndexes = range(numTokens.toNumber()); - - return tokenIndexes; - }); -} - -export function fetchTokenInfo (api, tokenregInstace, tokenIndex) { - return Promise - .all([ - tokenregInstace.token.call({}, [tokenIndex]), - tokenregInstace.meta.call({}, [tokenIndex, 'IMG']) - ]) - .then(([ tokenData, image ]) => { - const [ address, tag, format, name ] = tokenData; - - const token = { - format: format.toString(), - index: tokenIndex, - image: hashToImageUrl(image), - id: sha3(address + tokenIndex).slice(0, 10), - address, - name, - tag - }; - - return token; - }); -} - -/** - * `updates` should be in the shape: - * { - * [ who ]: [ tokenId ] // Array of tokens to updates - * } - * - * Returns a Promise resolved witht the balances in the shape: - * { - * [ who ]: { [ tokenId ]: BigNumber } // The balances of `who` - * } - */ -export function fetchAccountsBalances (api, tokens, updates) { - const addresses = Object.keys(updates); - const promises = addresses - .map((who) => { - const tokensIds = updates[who]; - const tokensToUpdate = tokensIds.map((tokenId) => tokens.find((t) => t.id === tokenId)); - - return fetchAccountBalances(api, tokensToUpdate, who); - }); - - return Promise.all(promises) - .then((results) => { - return results.reduce((balances, accountBalances, index) => { - balances[addresses[index]] = accountBalances; - return balances; - }, {}); - }); -} - -/** - * Returns a Promise resolved with the balances in the shape: - * { - * [ tokenId ]: BigNumber // Token balance value - * } - */ -export function fetchAccountBalances (api, tokens, who) { - const calldata = '0x' + BALANCEOF_SIGNATURE.slice(2, 10) + ADDRESS_PADDING + who.slice(2); - const promises = tokens.map((token) => fetchTokenBalance(api, token, { who, calldata })); - - return Promise.all(promises) - .then((results) => { - return results.reduce((balances, value, index) => { - const token = tokens[index]; - - balances[token.id] = value; - return balances; - }, {}); - }); -} - -export function fetchTokenBalance (api, token, { who, calldata }) { - if (token.native) { - return api.eth.getBalance(who); - } - - return api.eth - .call({ data: calldata, to: token.address }) - .then((result) => { - const cleanResult = result.replace(/^0x/, ''); - - return new BigNumber(`0x${cleanResult || 0}`); - }); -} diff --git a/js-old/src/util/tokens/bytecodes.js b/js-old/src/util/tokens/bytecodes.js new file mode 100644 index 000000000..0f51c6670 --- /dev/null +++ b/js-old/src/util/tokens/bytecodes.js @@ -0,0 +1,23 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +// build from : https://raw.githubusercontent.com/paritytech/contracts/4c8501e908166aab7ff4d2ebb05db61b5d017024/TokenCalls.sol +// metadata (include build version and options): +// {"compiler":{"version":"0.4.16+commit.d7661dd9"},"language":"Solidity","output":{"abi":[{"inputs":[{"name":"tokenRegAddress","type":"address"},{"name":"start","type":"uint256"},{"name":"limit","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}],"devdoc":{"methods":{}},"userdoc":{"methods":{}}},"settings":{"compilationTarget":{"":"Tokens"},"libraries":{},"optimizer":{"enabled":true,"runs":200},"remappings":[]},"sources":{"":{"keccak256":"0x4790e490f418d1a5884c27ffe9684914dab2d55bd1d23b99cff7aa2ca289e2d3","urls":["bzzr://bb200beae6849f1f5bb97b36c57cd493be52877ec0b55ee9969fa5f8159cf37b"]}},"version":1} +// {"compiler":{"version":"0.4.16+commit.d7661dd9"},"language":"Solidity","output":{"abi":[{"inputs":[{"name":"who","type":"address[]"},{"name":"tokens","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}],"devdoc":{"methods":{}},"userdoc":{"methods":{}}},"settings":{"compilationTarget":{"":"TokensBalances"},"libraries":{},"optimizer":{"enabled":true,"runs":200},"remappings":[]},"sources":{"":{"keccak256":"0x4790e490f418d1a5884c27ffe9684914dab2d55bd1d23b99cff7aa2ca289e2d3","urls":["bzzr://bb200beae6849f1f5bb97b36c57cd493be52877ec0b55ee9969fa5f8159cf37b"]}},"version":1} + +export const tokenAddresses = '0x6060604052341561000f57600080fd5b6040516060806102528339810160405280805191906020018051919060200180519150505b6000806000806100426101fc565b600088955085600160a060020a0316639f181b5e6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156100a657600080fd5b6102c65a03f115156100b757600080fd5b50505060405180519550508688018890116100ce57fe5b8785116100de57600093506100f6565b8487890111156100f25787850393506100f6565b8693505b5b83602002602001925060405191508282016040528382528790505b8388018110156101ea5785600160a060020a031663044215c682600060405160a001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600481019190915260240160a060405180830381600087803b151561018457600080fd5b6102c65a03f1151561019557600080fd5b50505060405180519060200180519060200180519060200180519060200180515086935050508a84039050815181106101ca57fe5b600160a060020a039092166020928302909101909101525b600101610112565b8282f35b50505050505050505061020e565b60206040519081016040526000815290565b60368061021c6000396000f30060606040525b600080fd00a165627a7a72305820a9a09f013393cf3c6398ce0f8175073fe363b6f594f9bd569261d0bb94aa84d40029'; +export const tokensBalances = '0x6060604052341561000f57600080fd5b60405161018b38038061018b8339810160405280805182019190602001805190910190505b6000806000610041610135565b60008060008060008060008c518c51029a506020808c020199507f70a0823100000000000000000000000000000000000000000000000000000000985060405197508988016040528a8852604051965060248701604052888752879550866004019450600093505b8c5184101561011f57600092505b8b51831015610113578c84815181106100cc57fe5b9060200190602002015191508b83815181106100e457fe5b90602001906020020151905060208601955081855260208660248960008561fffff1505b6001909201916100b7565b5b6001909301926100a9565b8988f35b50505050505050505050505050610147565b60206040519081016040526000815290565b6036806101556000396000f30060606040525b600080fd00a165627a7a723058203cfc17c394936aa87b7db79e4f082a7cfdcefef54acd3124d17525b56c92e7950029'; diff --git a/js-old/src/util/tokens/index.js b/js-old/src/util/tokens/index.js new file mode 100644 index 000000000..11ad0f903 --- /dev/null +++ b/js-old/src/util/tokens/index.js @@ -0,0 +1,299 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +import { range } from 'lodash'; +import BigNumber from 'bignumber.js'; + +import { hashToImageUrl } from '~/redux/util'; +import { sha3 } from '~/api/util/sha3'; +import imagesEthereum from '~/../assets/images/contracts/ethereum-black-64x64.png'; +import { + tokenAddresses as tokenAddressesBytcode, + tokensBalances as tokensBalancesBytecode +} from './bytecodes'; + +export const ETH_TOKEN = { + address: '', + format: new BigNumber(10).pow(18), + id: getTokenId('eth_native_token'), + image: imagesEthereum, + name: 'Ethereum', + native: true, + tag: 'ETH' +}; + +export function fetchTokenIds (tokenregInstance) { + return tokenregInstance.tokenCount + .call() + .then((numTokens) => { + const tokenIndexes = range(numTokens.toNumber()); + + return tokenIndexes; + }); +} + +export function fetchTokensBasics (api, tokenReg, start = 0, limit = 100) { + const tokenAddressesCallData = encode( + api, + [ 'address', 'uint', 'uint' ], + [ tokenReg.address, start, limit ] + ); + + return api.eth + .call({ data: tokenAddressesBytcode + tokenAddressesCallData }) + .then((result) => { + return decodeArray(api, 'address[]', result); + }) + .then((tokenAddresses) => { + return tokenAddresses.map((tokenAddress, index) => { + if (/^0x0*$/.test(tokenAddress)) { + return null; + } + + const tokenIndex = start + index; + + return { + address: tokenAddress, + id: getTokenId(tokenAddress, tokenIndex), + index: tokenIndex, + + fetched: false + }; + }); + }) + .then((tokens) => tokens.filter((token) => token)) + .then((tokens) => { + const randomAddress = sha3(`${Date.now()}`).substr(0, 42); + + return fetchTokensBalances(api, tokens, [randomAddress]) + .then((_balances) => { + const balances = _balances[randomAddress]; + + return tokens.filter(({ id }) => balances[id].eq(0)); + }); + }); +} + +export function fetchTokensInfo (api, tokenReg, tokenIndexes) { + const requests = tokenIndexes.map((tokenIndex) => { + const tokenCalldata = tokenReg.getCallData(tokenReg.instance.token, {}, [tokenIndex]); + + return { to: tokenReg.address, data: tokenCalldata }; + }); + + const calls = requests.map((req) => api.eth.call(req)); + const imagesPromise = fetchTokensImages(api, tokenReg, tokenIndexes); + + return Promise.all(calls) + .then((results) => { + return imagesPromise.then((images) => [ results, images ]); + }) + .then(([ results, images ]) => { + return results.map((rawTokenData, index) => { + const tokenIndex = tokenIndexes[index]; + const tokenData = tokenReg.instance.token + .decodeOutput(rawTokenData) + .map((t) => t.value); + + const [ address, tag, format, name ] = tokenData; + const image = images[index]; + + const token = { + address, + id: getTokenId(address, tokenIndex), + index: tokenIndex, + + format: format.toString(), + image, + name, + tag, + + fetched: true + }; + + return token; + }); + }); +} + +export function fetchTokensImages (api, tokenReg, tokenIndexes) { + const requests = tokenIndexes.map((tokenIndex) => { + const metaCalldata = tokenReg.getCallData(tokenReg.instance.meta, {}, [tokenIndex, 'IMG']); + + return { to: tokenReg.address, data: metaCalldata }; + }); + + const calls = requests.map((req) => api.eth.call(req)); + + return Promise.all(calls) + .then((results) => { + return results.map((rawImage) => { + const image = tokenReg.instance.meta.decodeOutput(rawImage)[0].value; + + return hashToImageUrl(image); + }); + }); +} + +/** + * `updates` should be in the shape: + * { + * [ who ]: [ tokenId ] // Array of tokens to updates + * } + * + * Returns a Promise resolved with the balances in the shape: + * { + * [ who ]: { [ tokenId ]: BigNumber } // The balances of `who` + * } + */ +export function fetchAccountsBalances (api, tokens, updates) { + const accountAddresses = Object.keys(updates); + + // Updates for the ETH balances + const ethUpdates = accountAddresses + .filter((accountAddress) => { + return updates[accountAddress].find((tokenId) => tokenId === ETH_TOKEN.id); + }) + .reduce((nextUpdates, accountAddress) => { + nextUpdates[accountAddress] = [ETH_TOKEN.id]; + return nextUpdates; + }, {}); + + // Updates for Tokens balances + const tokenUpdates = Object.keys(updates) + .reduce((nextUpdates, accountAddress) => { + const tokenIds = updates[accountAddress].filter((tokenId) => tokenId !== ETH_TOKEN.id); + + if (tokenIds.length > 0) { + nextUpdates[accountAddress] = tokenIds; + } + + return nextUpdates; + }, {}); + + let ethBalances = {}; + let tokensBalances = {}; + + const ethPromise = fetchEthBalances(api, Object.keys(ethUpdates)) + .then((_ethBalances) => { + ethBalances = _ethBalances; + }); + + const tokenPromise = Object.keys(tokenUpdates) + .reduce((tokenPromise, accountAddress) => { + const tokenIds = tokenUpdates[accountAddress]; + const updateTokens = tokens + .filter((t) => tokenIds.includes(t.id)); + + return tokenPromise + .then(() => fetchTokensBalances(api, updateTokens, [ accountAddress ])) + .then((balances) => { + tokensBalances[accountAddress] = balances[accountAddress]; + }); + }, Promise.resolve()); + + return Promise.all([ ethPromise, tokenPromise ]) + .then(() => { + const balances = Object.assign({}, tokensBalances); + + Object.keys(ethBalances).forEach((accountAddress) => { + if (!balances[accountAddress]) { + balances[accountAddress] = {}; + } + + balances[accountAddress] = Object.assign( + {}, + balances[accountAddress], + ethBalances[accountAddress] + ); + }); + + return balances; + }); +} + +function fetchEthBalances (api, accountAddresses) { + const promises = accountAddresses + .map((accountAddress) => api.eth.getBalance(accountAddress)); + + return Promise.all(promises) + .then((balancesArray) => { + return balancesArray.reduce((balances, balance, index) => { + balances[accountAddresses[index]] = { + [ETH_TOKEN.id]: balance + }; + + return balances; + }, {}); + }); +} + +function fetchTokensBalances (api, tokens, accountAddresses) { + const tokenAddresses = tokens.map((t) => t.address); + const tokensBalancesCallData = encode( + api, + [ 'address[]', 'address[]' ], + [ accountAddresses, tokenAddresses ] + ); + + return api.eth + .call({ data: tokensBalancesBytecode + tokensBalancesCallData }) + .then((result) => { + const rawBalances = decodeArray(api, 'uint[]', result); + const balances = {}; + + accountAddresses.forEach((accountAddress, accountIndex) => { + const balance = {}; + const preIndex = accountIndex * tokenAddresses.length; + + tokenAddresses.forEach((tokenAddress, tokenIndex) => { + const index = preIndex + tokenIndex; + const token = tokens[tokenIndex]; + + balance[token.id] = rawBalances[index]; + }); + + balances[accountAddress] = balance; + }); + + return balances; + }); +} + +function getTokenId (...args) { + return sha3(args.join('')).slice(0, 10); +} + +function encode (api, types, values) { + return api.util.abiEncode( + null, + types, + values + ).replace('0x', ''); +} + +function decodeArray (api, type, data) { + return api.util + .abiDecode( + [type], + [ + '0x', + (32).toString(16).padStart(64, 0), + data.replace('0x', '') + ].join('') + )[0] + .map((t) => t.value); +} diff --git a/js-old/src/util/tx.js b/js-old/src/util/tx.js index e325e6024..d5dae650d 100644 --- a/js-old/src/util/tx.js +++ b/js-old/src/util/tx.js @@ -81,12 +81,11 @@ export function getTxOptions (api, func, _options, values = []) { options.to = options.to || func.contract.address; } - if (!address) { - return Promise.resolve({ func, options, values }); - } + const promise = (!address) + ? Promise.resolve(false) + : WalletsUtils.isWallet(api, address); - return WalletsUtils - .isWallet(api, address) + return promise .then((isWallet) => { if (!isWallet) { return { func, options, values }; diff --git a/js-old/src/util/wallets.js b/js-old/src/util/wallets.js index 6b1c29d01..9f22ef262 100644 --- a/js-old/src/util/wallets.js +++ b/js-old/src/util/wallets.js @@ -78,13 +78,39 @@ export default class WalletsUtils { .delegateCall(api, walletContract.address, 'fetchTransactions', [ walletContract ]) .then((transactions) => { return transactions.sort((txA, txB) => { - const comp = txB.blockNumber.comparedTo(txA.blockNumber); + const bnA = txA.blockNumber; + const bnB = txB.blockNumber; + + if (!bnA) { + console.warn('could not find block number in transaction', txA); + return 1; + } + + if (!bnB) { + console.warn('could not find block number in transaction', txB); + return -1; + } + + const comp = bnA.comparedTo(bnB); if (comp !== 0) { return comp; } - return txB.transactionIndex.comparedTo(txA.transactionIndex); + const txIdxA = txA.transactionIndex; + const txIdxB = txB.transactionIndex; + + if (!txIdxA) { + console.warn('could not find transaction index in transaction', txA); + return 1; + } + + if (!txIdxB) { + console.warn('could not find transaction index in transaction', txB); + return -1; + } + + return txIdxA.comparedTo(txIdxB); }); }); } diff --git a/js-old/src/util/wallets/consensys-wallet.js b/js-old/src/util/wallets/consensys-wallet.js index 9f9f9d5fa..bfc8cb679 100644 --- a/js-old/src/util/wallets/consensys-wallet.js +++ b/js-old/src/util/wallets/consensys-wallet.js @@ -212,6 +212,7 @@ export default class ConsensysWalletUtils { const transaction = { transactionHash: log.transactionHash, + transactionIndex: log.transactionIndex, blockNumber: log.blockNumber }; diff --git a/js-old/src/util/wallets/foundation-wallet.js b/js-old/src/util/wallets/foundation-wallet.js index 4fb1cfe22..926b40a80 100644 --- a/js-old/src/util/wallets/foundation-wallet.js +++ b/js-old/src/util/wallets/foundation-wallet.js @@ -130,27 +130,67 @@ export default class FoundationWalletUtils { .ConfirmationNeeded .getAllLogs() .then((logs) => { - return logs.map((log) => ({ - initiator: log.params.initiator.value, - to: log.params.to.value, - data: log.params.data.value, - value: log.params.value.value, - operation: bytesToHex(log.params.operation.value), - transactionIndex: log.transactionIndex, - transactionHash: log.transactionHash, - blockNumber: log.blockNumber, - confirmedBy: [] - })); + return logs + .filter((log) => { + if (!log.blockNumber) { + console.warn('got a log without blockNumber', log); + return false; + } + + if (!log.transactionIndex) { + console.warn('got a log without transactionIndex', log); + return false; + } + + return true; + }) + .map((log) => ({ + initiator: log.params.initiator.value, + to: log.params.to.value, + data: log.params.data.value, + value: log.params.value.value, + operation: bytesToHex(log.params.operation.value), + transactionIndex: log.transactionIndex, + transactionHash: log.transactionHash, + blockNumber: log.blockNumber, + confirmedBy: [] + })); }) .then((logs) => { return logs.sort((logA, logB) => { - const comp = logA.blockNumber.comparedTo(logB.blockNumber); + const bnA = logA.blockNumber; + const bnB = logA.blockNumber; + + if (!bnA) { + console.warn('could not find block number in log', logA); + return 1; + } + + if (!bnB) { + console.warn('could not find block number in log', logB); + return -1; + } + + const comp = bnA.comparedTo(bnB); if (comp !== 0) { return comp; } - return logA.transactionIndex.comparedTo(logB.transactionIndex); + const txIdxA = logA.transactionIndex; + const txIdxB = logB.transactionIndex; + + if (!txIdxA) { + console.warn('could not find transaction index in log', logA); + return 1; + } + + if (!txIdxB) { + console.warn('could not find transaction index in log', logB); + return -1; + } + + return txIdxA.comparedTo(txIdxB); }); }) .then((pendingTxs) => { @@ -205,40 +245,48 @@ export default class FoundationWalletUtils { ] ] }) .then((logs) => { - const transactions = logs.map((log) => { - const signature = toHex(log.topics[0]); + const transactions = logs + .map((log) => { + const signature = toHex(log.topics[0]); - const value = log.params.value.value; - const from = signature === WalletSignatures.Deposit - ? log.params['_from'].value - : walletContract.address; + const value = log.params.value.value; + const from = signature === WalletSignatures.Deposit + ? log.params['_from'].value + : walletContract.address; - const to = signature === WalletSignatures.Deposit - ? walletContract.address - : log.params.to.value; + const to = signature === WalletSignatures.Deposit + ? walletContract.address + : log.params.to.value; - const transaction = { - transactionHash: log.transactionHash, - blockNumber: log.blockNumber, - from, to, value - }; + const transaction = { + transactionHash: log.transactionHash, + transactionIndex: log.transactionIndex, + blockNumber: log.blockNumber, + from, to, value + }; - if (log.params.created && log.params.created.value && !/^(0x)?0*$/.test(log.params.created.value)) { - transaction.creates = log.params.created.value; - delete transaction.to; - } + if (!transaction.blockNumber) { + console.warn('log without block number', log); + return null; + } - if (log.params.operation) { - transaction.operation = bytesToHex(log.params.operation.value); - checkPendingOperation(api, log, transaction.operation); - } + if (log.params.created && log.params.created.value && !/^(0x)?0*$/.test(log.params.created.value)) { + transaction.creates = log.params.created.value; + delete transaction.to; + } - if (log.params.data) { - transaction.data = log.params.data.value; - } + if (log.params.operation) { + transaction.operation = bytesToHex(log.params.operation.value); + checkPendingOperation(api, log, transaction.operation); + } - return transaction; - }); + if (log.params.data) { + transaction.data = log.params.data.value; + } + + return transaction; + }) + .filter((tx) => tx); return transactions; }); diff --git a/js-old/src/views/Account/account.js b/js-old/src/views/Account/account.js index fdccac793..50ad70164 100644 --- a/js-old/src/views/Account/account.js +++ b/js-old/src/views/Account/account.js @@ -26,7 +26,6 @@ import HardwareStore from '~/mobx/hardwareStore'; import ExportStore from '~/modals/ExportAccount/exportStore'; import { DeleteAccount, EditMeta, Faucet, PasswordManager, Shapeshift, Transfer, Verification } from '~/modals'; import { setVisibleAccounts } from '~/redux/providers/personalActions'; -import { fetchCertifiers, fetchCertifications } from '~/redux/providers/certifications/actions'; import { Actionbar, Button, ConfirmDialog, Input, Page, Portal } from '~/ui'; import { DeleteIcon, DialIcon, EditIcon, LockedIcon, SendIcon, VerifyIcon, FileDownloadIcon } from '~/ui/Icons'; @@ -45,8 +44,6 @@ class Account extends Component { static propTypes = { accounts: PropTypes.object.isRequired, - fetchCertifiers: PropTypes.func.isRequired, - fetchCertifications: PropTypes.func.isRequired, setVisibleAccounts: PropTypes.func.isRequired, account: PropTypes.object, @@ -67,7 +64,6 @@ class Account extends Component { } componentDidMount () { - this.props.fetchCertifiers(); this.setVisibleAccounts(); } @@ -90,11 +86,10 @@ class Account extends Component { } setVisibleAccounts (props = this.props) { - const { params, setVisibleAccounts, fetchCertifications } = props; + const { params, setVisibleAccounts } = props; const addresses = [params.address]; setVisibleAccounts(addresses); - fetchCertifications(params.address); } render () { @@ -370,14 +365,14 @@ class Account extends Component { onDeny={ this.exportClose } title={ } >
@@ -388,13 +383,13 @@ class Account extends Component { type='password' hint={ } label={ } @@ -524,8 +519,6 @@ function mapStateToProps (state, props) { function mapDispatchToProps (dispatch) { return bindActionCreators({ - fetchCertifiers, - fetchCertifications, newError, setVisibleAccounts }, dispatch); diff --git a/js-old/src/views/Account/account.spec.js b/js-old/src/views/Account/account.spec.js index 6a96d6300..d80376029 100644 --- a/js-old/src/views/Account/account.spec.js +++ b/js-old/src/views/Account/account.spec.js @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . +import sinon from 'sinon'; import { shallow } from 'enzyme'; import React from 'react'; @@ -34,7 +35,15 @@ function render (props) { />, { context: { - store: createRedux() + store: createRedux(), + api: { + transport: { + on: sinon.stub() + }, + pubsub: { + subscribeAndGetResult: sinon.stub() + } + } } } ).find('Account').shallow(); diff --git a/js-old/src/views/Accounts/List/list.js b/js-old/src/views/Accounts/List/list.js index 2fa3be70b..7ff04ab30 100644 --- a/js-old/src/views/Accounts/List/list.js +++ b/js-old/src/views/Accounts/List/list.js @@ -17,10 +17,8 @@ import { pick } from 'lodash'; import React, { Component, PropTypes } from 'react'; import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; import { Container, SectionList } from '~/ui'; -import { fetchCertifiers, fetchCertifications } from '~/redux/providers/certifications/actions'; import { ETH_TOKEN } from '~/util/tokens'; import Summary from '../Summary'; @@ -38,20 +36,9 @@ class List extends Component { orderFallback: PropTypes.string, search: PropTypes.array, - fetchCertifiers: PropTypes.func.isRequired, - fetchCertifications: PropTypes.func.isRequired, handleAddSearchToken: PropTypes.func }; - componentWillMount () { - const { accounts, fetchCertifiers, fetchCertifications } = this.props; - - fetchCertifiers(); - for (let address in accounts) { - fetchCertifications(address); - } - } - render () { const { accounts, disabled, empty } = this.props; @@ -264,14 +251,7 @@ function mapStateToProps (state, props) { return { balances, certifications }; } -function mapDispatchToProps (dispatch) { - return bindActionCreators({ - fetchCertifiers, - fetchCertifications - }, dispatch); -} - export default connect( mapStateToProps, - mapDispatchToProps + null )(List); diff --git a/js-old/src/views/Accounts/accounts.spec.js b/js-old/src/views/Accounts/accounts.spec.js index 3c6ab9439..3fad02643 100644 --- a/js-old/src/views/Accounts/accounts.spec.js +++ b/js-old/src/views/Accounts/accounts.spec.js @@ -27,7 +27,11 @@ let instance; let redux; function createApi () { - api = {}; + api = { + pubsub: { + subscribeAndGetResult: sinon.stub().returns(Promise.reject(new Error('uninitialized'))) + } + }; return api; } diff --git a/js-old/src/views/Application/Container/container.js b/js-old/src/views/Application/Container/container.js index 5138450e2..522ad23a6 100644 --- a/js-old/src/views/Application/Container/container.js +++ b/js-old/src/views/Application/Container/container.js @@ -16,8 +16,7 @@ import React, { Component, PropTypes } from 'react'; -import { FirstRun, UpgradeParity } from '~/modals'; -import { Errors, ParityBackground, Tooltips } from '~/ui'; +import { Errors, ParityBackground } from '~/ui'; import styles from '../application.css'; @@ -25,24 +24,17 @@ export default class Container extends Component { static propTypes = { children: PropTypes.node.isRequired, onCloseFirstRun: PropTypes.func, - showFirstRun: PropTypes.bool, - upgradeStore: PropTypes.object.isRequired + showFirstRun: PropTypes.bool }; render () { - const { children, onCloseFirstRun, showFirstRun, upgradeStore } = this.props; + const { children } = this.props; return ( - - - { children } diff --git a/js-old/src/views/Application/TabBar/tabBar.js b/js-old/src/views/Application/TabBar/tabBar.js index 7ac0d8eac..068562db1 100644 --- a/js-old/src/views/Application/TabBar/tabBar.js +++ b/js-old/src/views/Application/TabBar/tabBar.js @@ -15,13 +15,12 @@ // along with Parity. If not, see . import React, { Component, PropTypes } from 'react'; -import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { Link } from 'react-router'; import { Toolbar, ToolbarGroup } from 'material-ui/Toolbar'; import { isEqual } from 'lodash'; -import { Tooltip, StatusIndicator } from '~/ui'; +import { StatusIndicator } from '~/ui'; import Tab from './Tab'; import styles from './tabBar.css'; @@ -66,15 +65,6 @@ class TabBar extends Component { { this.renderTabItems() } - - } - />
diff --git a/js-old/src/views/Application/application.js b/js-old/src/views/Application/application.js index 5566253b8..c85f537b0 100644 --- a/js-old/src/views/Application/application.js +++ b/js-old/src/views/Application/application.js @@ -18,27 +18,14 @@ import { observer } from 'mobx-react'; import React, { Component, PropTypes } from 'react'; import { connect } from 'react-redux'; -import UpgradeStore from '~/modals/UpgradeParity/store'; - -import Connection from '../Connection'; -import ParityBar from '../ParityBar'; -import SyncWarning, { showSyncWarning } from '../SyncWarning'; - import Snackbar from './Snackbar'; import Container from './Container'; import DappContainer from './DappContainer'; -import Extension from './Extension'; -import FrameError from './FrameError'; -import Status from './Status'; import Store from './store'; import TabBar from './TabBar'; -import Requests from './Requests'; import styles from './application.css'; -const inFrame = window.parent !== window && window.parent.frames.length !== 0; -const doShowSyncWarning = showSyncWarning(); - @observer class Application extends Component { static contextTypes = { @@ -53,11 +40,9 @@ class Application extends Component { } store = new Store(this.context.api); - upgradeStore = UpgradeStore.get(this.context.api); render () { const [root] = (window.location.hash || '').replace('#/', '').split('/'); - const isMinimized = root === 'app' || root === 'web'; if (process.env.NODE_ENV !== 'production' && root === 'playground') { return ( @@ -69,47 +54,20 @@ class Application extends Component { return (
- { - inFrame - ? - : null - } - { - isMinimized - ? this.renderMinimized() - : this.renderApp() - } - { - doShowSyncWarning - ? () - : null - } - - - + { this.renderApp() }
); } renderApp () { - const { blockNumber, children, pending } = this.props; + const { children, pending } = this.props; return ( - +
{ children }
- { - blockNumber - ? - : null - } -
); diff --git a/js-old/src/views/Settings/Views/defaults.js b/js-old/src/views/Settings/Views/defaults.js index 7f3842504..9521ff94a 100644 --- a/js-old/src/views/Settings/Views/defaults.js +++ b/js-old/src/views/Settings/Views/defaults.js @@ -17,7 +17,7 @@ import React from 'react'; import imagesEthcoreBlock from '~/../assets/images/parity-logo-white-no-text.svg'; -import { AccountsIcon, AddressesIcon, AppsIcon, ContactsIcon, FingerprintIcon, SettingsIcon } from '~/ui/Icons'; +import { AccountsIcon, AddressesIcon, ContactsIcon, FingerprintIcon, SettingsIcon } from '~/ui/Icons'; import styles from './views.css'; @@ -50,13 +50,6 @@ const defaultViews = { value: 'address' }, - apps: { - active: true, - icon: , - route: '/apps', - value: 'app' - }, - contracts: { active: false, onlyPersonal: true, diff --git a/js-old/src/views/Settings/Views/views.js b/js-old/src/views/Settings/Views/views.js index 3a5e58aaa..3a93e14de 100644 --- a/js-old/src/views/Settings/Views/views.js +++ b/js-old/src/views/Settings/Views/views.js @@ -91,17 +91,6 @@ class Views extends Component { /> ) } - { - this.renderView('apps', - , - - ) - } { this.renderView('contracts', =2.2.7 <3" - -abab@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" - -abbrev@1, abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -accepts@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" - dependencies: - mime-types "~2.1.11" - negotiator "0.6.1" - -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - dependencies: - acorn "^4.0.3" - -acorn-globals@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" - dependencies: - acorn "^4.0.4" - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^4.0.3, acorn@^4.0.4: - version "4.0.11" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" - -acorn@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" - -ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - -ajv@^4.7.0, ajv@^4.9.1: - version "4.11.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi@^0.3.0, ansi@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" - -any-promise@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27" - -anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" - -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - -aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" - -archive-type@^3.0.0, archive-type@^3.0.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6" - dependencies: - file-type "^3.1.0" - -are-we-there-yet@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.0 || ^1.1.13" - -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" - -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.0, array-uniq@^1.0.1, array-uniq@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -array.prototype.find@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asap@~2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" - -asn1.js@^4.0.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" - -assertion-error@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" - -ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - -async-each-series@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async@1.5.0, async@1.x, async@^1.4.0, async@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.0.tgz#2796642723573859565633fc6274444bee2f8ce3" - -async@^2.1.2, async@^2.1.4: - version "2.3.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9" - dependencies: - lodash "^4.14.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -attr-accept@^1.0.3: - version "1.1.0" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.0.tgz#b5cd35227f163935a8f1de10ed3eba16941f6be6" - -autoprefixer@^6.0.0, autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -babel-cli@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.23.0.tgz#52ff946a2b0f64645c35e7bd5eea267aa0948c0f" - dependencies: - babel-core "^6.23.0" - babel-polyfill "^6.23.0" - babel-register "^6.23.0" - babel-runtime "^6.22.0" - commander "^2.8.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.0.0" - glob "^7.0.0" - lodash "^4.2.0" - output-file-sync "^1.1.0" - path-is-absolute "^1.0.0" - slash "^1.0.0" - source-map "^0.5.0" - v8flags "^2.0.10" - optionalDependencies: - chokidar "^1.6.1" - -babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-core@6.23.1, babel-core@^6.23.0: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.23.0" - babel-helpers "^6.23.0" - babel-messages "^6.23.0" - babel-register "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-eslint@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.1.1.tgz#8a6a884f085aa7060af69cfc77341c2f99370fb2" - dependencies: - babel-code-frame "^6.16.0" - babel-traverse "^6.15.0" - babel-types "^6.15.0" - babylon "^6.13.0" - lodash.pickby "^4.6.0" - -babel-generator@^6.18.0, babel-generator@^6.23.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.23.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-helper-bindify-decorators@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.22.0.tgz#d7f5bc261275941ac62acfc4e20dacfb8a3fe952" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-helper-builder-binary-assignment-operator-visitor@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.22.0.tgz#29df56be144d81bdeac08262bfa41d2c5e91cdcd" - dependencies: - babel-helper-explode-assignable-expression "^6.22.0" - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-helper-builder-react-jsx@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.23.0.tgz#d53fc8c996e0bc56d0de0fc4cc55a7138395ea4b" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.23.0" - esutils "^2.0.0" - lodash "^4.2.0" - -babel-helper-call-delegate@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef" - dependencies: - babel-helper-hoist-variables "^6.22.0" - babel-runtime "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-helper-define-map@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.23.0.tgz#1444f960c9691d69a2ced6a205315f8fd00804e7" - dependencies: - babel-helper-function-name "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.23.0" - lodash "^4.2.0" - -babel-helper-explode-assignable-expression@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.22.0.tgz#c97bf76eed3e0bae4048121f2b9dae1a4e7d0478" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-helper-explode-class@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.22.0.tgz#646304924aa6388a516843ba7f1855ef8dfeb69b" - dependencies: - babel-helper-bindify-decorators "^6.22.0" - babel-runtime "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-helper-function-name@^6.22.0, babel-helper-function-name@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.23.0.tgz#25742d67175c8903dbe4b6cb9d9e1fcb8dcf23a6" - dependencies: - babel-helper-get-function-arity "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - -babel-helper-get-function-arity@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-helper-hoist-variables@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-helper-optimise-call-expression@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.23.0.tgz#f3ee7eed355b4282138b33d02b78369e470622f5" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.23.0" - -babel-helper-regex@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - lodash "^4.2.0" - -babel-helper-remap-async-to-generator@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.22.0.tgz#2186ae73278ed03b8b15ced089609da981053383" - dependencies: - babel-helper-function-name "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-helper-replace-supers@^6.22.0, babel-helper-replace-supers@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.23.0.tgz#eeaf8ad9b58ec4337ca94223bacdca1f8d9b4bfd" - dependencies: - babel-helper-optimise-call-expression "^6.23.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - -babel-helpers@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.23.0.tgz#4f8f2e092d0b6a8808a4bde79c27f1e2ecf0d992" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.23.0" - -babel-loader@6.3.2: - version "6.3.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.3.2.tgz#18de4566385578c1b4f8ffe6cbc668f5e2a5ef03" - dependencies: - find-cache-dir "^0.1.1" - loader-utils "^0.2.16" - mkdirp "^0.5.1" - object-assign "^4.0.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0, babel-plugin-check-es2015-constants@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-lodash@3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.2.11.tgz#21c8fdec9fe1835efaa737873e3902bdd66d5701" - dependencies: - glob "^7.1.1" - lodash "^4.17.2" - -babel-plugin-react-intl@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-2.3.1.tgz#3d43912e824da005e08e8e8239d5ba784374bb00" - dependencies: - babel-runtime "^6.2.0" - intl-messageformat-parser "^1.2.0" - mkdirp "^0.5.1" - -babel-plugin-recharts@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-recharts/-/babel-plugin-recharts-1.1.0.tgz#812cc84b13eb58dd405b2c63a28ea6f7b26ab4a7" - dependencies: - babel-traverse "^6.19.0" - babel-types "^6.19.0" - babylon "^6.14.1" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - -babel-plugin-syntax-class-constructor-call@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-decorators@^6.1.18, babel-plugin-syntax-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" - -babel-plugin-syntax-do-expressions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-export-extensions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-function-bind@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" - -babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.13.0, babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-generator-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.22.0.tgz#a720a98153a7596f204099cd5409f4b3c05bab46" - dependencies: - babel-helper-remap-async-to-generator "^6.22.0" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.22.0.tgz#194b6938ec195ad36efc4c33a971acf00d8cd35e" - dependencies: - babel-helper-remap-async-to-generator "^6.22.0" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-constructor-call@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.22.0.tgz#11a4d2216abb5b0eef298b493748f4f2f4869120" - dependencies: - babel-plugin-syntax-class-constructor-call "^6.18.0" - babel-runtime "^6.22.0" - babel-template "^6.22.0" - -babel-plugin-transform-class-properties@6.23.0, babel-plugin-transform-class-properties@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.23.0.tgz#187b747ee404399013563c993db038f34754ac3b" - dependencies: - babel-helper-function-name "^6.23.0" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - -babel-plugin-transform-decorators-legacy@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925" - dependencies: - babel-plugin-syntax-decorators "^6.1.18" - babel-runtime "^6.2.0" - babel-template "^6.3.0" - -babel-plugin-transform-decorators@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.22.0.tgz#c03635b27a23b23b7224f49232c237a73988d27c" - dependencies: - babel-helper-explode-class "^6.22.0" - babel-plugin-syntax-decorators "^6.13.0" - babel-runtime "^6.22.0" - babel-template "^6.22.0" - babel-types "^6.22.0" - -babel-plugin-transform-do-expressions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" - dependencies: - babel-plugin-syntax-do-expressions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0, babel-plugin-transform-es2015-arrow-functions@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.22.0, babel-plugin-transform-es2015-block-scoping@^6.6.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.23.0.tgz#e48895cf0b375be148cd7c8879b422707a053b51" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - lodash "^4.2.0" - -babel-plugin-transform-es2015-classes@^6.22.0, babel-plugin-transform-es2015-classes@^6.6.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.23.0.tgz#49b53f326202a2fd1b3bbaa5e2edd8a4f78643c1" - dependencies: - babel-helper-define-map "^6.23.0" - babel-helper-function-name "^6.23.0" - babel-helper-optimise-call-expression "^6.23.0" - babel-helper-replace-supers "^6.23.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - -babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.22.0" - -babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.6.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.6.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.6.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104" - dependencies: - babel-helper-function-name "^6.22.0" - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-literals@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.0, babel-plugin-transform-es2015-modules-amd@^6.8.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.0.tgz#a1911fb9b7ec7e05a43a63c5995007557bcf6a2e" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.0" - babel-runtime "^6.22.0" - babel-template "^6.22.0" - -babel-plugin-transform-es2015-modules-commonjs@6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.22.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.0, babel-plugin-transform-es2015-modules-commonjs@^6.6.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.0.tgz#e921aefb72c2cc26cb03d107626156413222134f" - dependencies: - babel-plugin-transform-strict-mode "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-types "^6.23.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.12.0, babel-plugin-transform-es2015-modules-systemjs@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz#ae3469227ffac39b0310d90fec73bfdc4f6317b0" - dependencies: - babel-helper-hoist-variables "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - -babel-plugin-transform-es2015-modules-umd@^6.12.0, babel-plugin-transform-es2015-modules-umd@^6.22.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.0.tgz#fd5fa63521cae8d273927c3958afd7c067733450" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - -babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc" - dependencies: - babel-helper-replace-supers "^6.22.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.22.0, babel-plugin-transform-es2015-parameters@^6.6.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz#3a2aabb70c8af945d5ce386f1a4250625a83ae3b" - dependencies: - babel-helper-call-delegate "^6.22.0" - babel-helper-get-function-arity "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593" - dependencies: - babel-helper-regex "^6.22.0" - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-es2015-template-literals@^6.6.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.6.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.3.13: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20" - dependencies: - babel-helper-regex "^6.22.0" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.22.0.tgz#d57c8335281918e54ef053118ce6eb108468084d" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.22.0" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-export-extensions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" - dependencies: - babel-plugin-syntax-export-extensions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-function-bind@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" - dependencies: - babel-plugin-syntax-function-bind "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@6.23.0, babel-plugin-transform-object-rest-spread@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-display-name@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.23.0.tgz#4398910c358441dc4cef18787264d0412ed36b37" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-self@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-source@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.23.0.tgz#23e892f7f2e759678eb5e4446a8f8e94e81b3470" - dependencies: - babel-helper-builder-react-jsx "^6.23.0" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-remove-prop-types@0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.3.2.tgz#6da8d834c6d7ad8ab02f956509790cfaa01ffe19" - -babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.6.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6" - dependencies: - regenerator-transform "0.9.8" - -babel-plugin-transform-runtime@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-strict-mode@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-webpack-alias@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/babel-plugin-webpack-alias/-/babel-plugin-webpack-alias-2.1.2.tgz#05a1ba23c28595660fb6ea5736424fc596b4a247" - dependencies: - babel-types "^6.14.0" - find-up "^2.0.0" - lodash.some "^4.5.1" - lodash.template "^4.3.0" - -babel-polyfill@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" - dependencies: - babel-runtime "^6.22.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-preset-env@1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.1.9.tgz#49443dcd6ef52b48b7191ea33869e24590a9eb4a" - dependencies: - babel-plugin-check-es2015-constants "^6.3.13" - babel-plugin-syntax-trailing-function-commas "^6.13.0" - babel-plugin-transform-async-to-generator "^6.8.0" - babel-plugin-transform-es2015-arrow-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoping "^6.6.0" - babel-plugin-transform-es2015-classes "^6.6.0" - babel-plugin-transform-es2015-computed-properties "^6.3.13" - babel-plugin-transform-es2015-destructuring "^6.6.0" - babel-plugin-transform-es2015-duplicate-keys "^6.6.0" - babel-plugin-transform-es2015-for-of "^6.6.0" - babel-plugin-transform-es2015-function-name "^6.3.13" - babel-plugin-transform-es2015-literals "^6.3.13" - babel-plugin-transform-es2015-modules-amd "^6.8.0" - babel-plugin-transform-es2015-modules-commonjs "^6.6.0" - babel-plugin-transform-es2015-modules-systemjs "^6.12.0" - babel-plugin-transform-es2015-modules-umd "^6.12.0" - babel-plugin-transform-es2015-object-super "^6.3.13" - babel-plugin-transform-es2015-parameters "^6.6.0" - babel-plugin-transform-es2015-shorthand-properties "^6.3.13" - babel-plugin-transform-es2015-spread "^6.3.13" - babel-plugin-transform-es2015-sticky-regex "^6.3.13" - babel-plugin-transform-es2015-template-literals "^6.6.0" - babel-plugin-transform-es2015-typeof-symbol "^6.6.0" - babel-plugin-transform-es2015-unicode-regex "^6.3.13" - babel-plugin-transform-exponentiation-operator "^6.8.0" - babel-plugin-transform-regenerator "^6.6.0" - browserslist "^1.4.0" - electron-to-chromium "^1.1.0" - invariant "^2.2.2" - -babel-preset-es2015@6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.22.0" - babel-plugin-transform-es2015-classes "^6.22.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.22.0" - babel-plugin-transform-es2015-modules-systemjs "^6.22.0" - babel-plugin-transform-es2015-modules-umd "^6.22.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.22.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - -babel-preset-es2016@6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.22.0.tgz#b061aaa3983d40c9fbacfa3743b5df37f336156c" - dependencies: - babel-plugin-transform-exponentiation-operator "^6.22.0" - -babel-preset-es2017@6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.22.0.tgz#de2f9da5a30c50d293fb54a0ba15d6ddc573f0f2" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - -babel-preset-flow@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" - dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" - -babel-preset-react@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.23.0.tgz#eb7cee4de98a3f94502c28565332da9819455195" - dependencies: - babel-plugin-syntax-jsx "^6.3.13" - babel-plugin-transform-react-display-name "^6.23.0" - babel-plugin-transform-react-jsx "^6.23.0" - babel-plugin-transform-react-jsx-self "^6.22.0" - babel-plugin-transform-react-jsx-source "^6.22.0" - babel-preset-flow "^6.23.0" - -babel-preset-stage-0@6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.22.0.tgz#707eeb5b415da769eff9c42f4547f644f9296ef9" - dependencies: - babel-plugin-transform-do-expressions "^6.22.0" - babel-plugin-transform-function-bind "^6.22.0" - babel-preset-stage-1 "^6.22.0" - -babel-preset-stage-1@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.22.0.tgz#7da05bffea6ad5a10aef93e320cfc6dd465dbc1a" - dependencies: - babel-plugin-transform-class-constructor-call "^6.22.0" - babel-plugin-transform-export-extensions "^6.22.0" - babel-preset-stage-2 "^6.22.0" - -babel-preset-stage-2@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.22.0.tgz#ccd565f19c245cade394b21216df704a73b27c07" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-class-properties "^6.22.0" - babel-plugin-transform-decorators "^6.22.0" - babel-preset-stage-3 "^6.22.0" - -babel-preset-stage-3@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.22.0.tgz#a4e92bbace7456fafdf651d7a7657ee0bbca9c2e" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-generator-functions "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-object-rest-spread "^6.22.0" - -babel-register@6.23.0, babel-register@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.23.0.tgz#c9aa3d4cca94b51da34826c4a0f9e08145d74ff3" - dependencies: - babel-core "^6.23.0" - babel-runtime "^6.22.0" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - -babel-runtime@6.23.0, babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.9.2: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-template@^6.16.0, babel-template@^6.22.0, babel-template@^6.23.0, babel-template@^6.3.0, babel-template@^6.7.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - babylon "^6.11.0" - lodash "^4.2.0" - -babel-template@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - lodash "^4.2.0" - -babel-traverse@^6.15.0, babel-traverse@^6.18.0, babel-traverse@^6.19.0, babel-traverse@^6.22.0, babel-traverse@^6.23.0, babel-traverse@^6.23.1: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.23.0" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-traverse@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-types@^6.14.0, babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babel-types@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.11.0, babylon@^6.13.0, babylon@^6.14.1, babylon@^6.15.0: - version "6.16.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" - -balanced-match@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.2.1.tgz#7bc658b4bed61eee424ad74f75f5c3e2c4df3cc7" - -balanced-match@^0.4.0, balanced-match@^0.4.1, balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -base32.js@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/base32.js/-/base32.js-0.1.0.tgz#b582dec693c2f11e893cf064ee6ac5b6131a2202" - -base64-js@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" - -batch-processor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - -beeper@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" - -big.js@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" - -bignumber.js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-3.0.1.tgz#807652d10e39de37e9e3497247edc798bb746f76" - -"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": - version "2.0.7" - resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" - -bin-build@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc" - dependencies: - archive-type "^3.0.1" - decompress "^3.0.0" - download "^4.1.2" - exec-series "^1.0.0" - rimraf "^2.2.6" - tempfile "^1.0.0" - url-regex "^3.0.0" - -bin-check@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930" - dependencies: - executable "^1.0.0" - -bin-version-check@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0" - dependencies: - bin-version "^1.0.0" - minimist "^1.1.0" - semver "^4.0.3" - semver-truncate "^1.0.0" - -bin-version@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e" - dependencies: - find-versions "^1.0.0" - -bin-wrapper@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb" - dependencies: - bin-check "^2.0.0" - bin-version-check "^2.1.0" - download "^4.0.0" - each-async "^1.1.1" - lazy-req "^1.0.0" - os-filter-obj "^1.0.0" - -binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" - -bindings@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" - -bip66@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.4.tgz#8a59f8ae16eccb94681c3c2a7b224774605aadfb" - -bl@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98" - dependencies: - readable-stream "^2.0.5" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -blockies@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/blockies/-/blockies-0.0.2.tgz#22ad58da4f6b382bc79bf4386c5820c70047e4ed" - -bluebird@^2.10.2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" - -bluebird@^3.4.7: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.3, bn.js@^4.4.0, bn.js@^4.8.0: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -bowser@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.6.0.tgz#37fc387b616cb6aef370dab4d6bd402b74c5c54d" - -brace-expansion@^1.0.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" - dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" - -brace@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/brace/-/brace-0.9.0.tgz#ad034bae65220eb676d949cb280383fa8e12fa72" - dependencies: - w3c-blob "0.0.1" - -brace@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/brace/-/brace-0.8.0.tgz#e826c6d5054cae5f607ad7b1c81236dd2cf01978" - dependencies: - w3c-blob "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" - dependencies: - buffer-xor "^1.0.2" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - inherits "^2.0.1" - -browserify-cipher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - dependencies: - pako "~0.2.0" - -browserslist@^1.0.0, browserslist@^1.0.1, browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.4.0, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - -buffer-to-vinyl@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262" - dependencies: - file-type "^3.1.0" - readable-stream "^2.0.2" - uuid "^2.0.1" - vinyl "^1.0.0" - -buffer-xor@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -bytes@2.4.0, bytes@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -caniuse-api@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2" - dependencies: - browserslist "^1.0.1" - caniuse-db "^1.0.30000346" - lodash.memoize "^4.1.0" - lodash.uniq "^4.3.0" - -caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000649" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000649.tgz#1ee1754a6df235450c8b7cd15e0ebf507221a86a" - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -caw@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034" - dependencies: - get-proxy "^1.0.1" - is-obj "^1.0.0" - object-assign "^3.0.0" - tunnel-agent "^0.4.0" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chai-as-promised@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6" - dependencies: - check-error "^1.0.2" - -chai-enzyme@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/chai-enzyme/-/chai-enzyme-0.6.1.tgz#585c963c6ea1331446efd12ee8391e807d758620" - dependencies: - html "^1.0.0" - react-element-to-jsx-string "^5.0.0" - -chai@3.5.0, "chai@>=1.9.2 <4.0.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" - dependencies: - assertion-error "^1.0.1" - deep-eql "^0.1.3" - type-detect "^1.0.0" - -chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -change-emitter@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.3.tgz#731c9360913855f613dd256568d50f854a8806ac" - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - -cheerio@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash.assignin "^4.0.9" - lodash.bind "^4.1.4" - lodash.defaults "^4.0.1" - lodash.filter "^4.4.0" - lodash.flatten "^4.2.0" - lodash.foreach "^4.3.0" - lodash.map "^4.4.0" - lodash.merge "^4.4.0" - lodash.pick "^4.2.1" - lodash.reduce "^4.4.0" - lodash.reject "^4.4.0" - lodash.some "^4.4.0" - -chokidar@^1.4.3, chokidar@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chownr@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - -ci-info@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" - -cipher-base@^1.0.0, cipher-base@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" - dependencies: - inherits "^2.0.1" - -circular-dependency-plugin@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-2.0.0.tgz#c10796c83390488a9bcdd42f032d6e64e984f660" - -circular-json@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" - -clap@^1.0.9: - version "1.1.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.3.tgz#b3bd36e93dd4cbfb395a3c26896352445265c05b" - dependencies: - chalk "^1.1.3" - -classnames@2.2.5, classnames@^2.2.0, classnames@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" - -clean-css@4.0.x: - version "4.0.11" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.11.tgz#a6d88bffb399420b24298db49d99a1ed067534a8" - dependencies: - source-map "0.5.x" - -cli-cursor@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - dependencies: - restore-cursor "^1.0.1" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -clone-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.0.tgz#eae0a2413f55c0942f818c229fefce845d7f3b1c" - dependencies: - is-regexp "^1.0.0" - is-supported-regexp-flag "^1.0.0" - -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - -clone@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" - -clone@^1.0.0, clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" - -cmd-shim@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" - dependencies: - graceful-fs "^4.1.2" - mkdirp "~0.5.0" - -co@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -coa@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3" - dependencies: - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -codemirror@^5.18.2: - version "5.25.2" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.25.2.tgz#8c77677ca9c9248d757d3a07ed1e89a8404850b7" - -collapse-white-space@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.2.tgz#9c463fb9c6d190d2dcae21a356a01bcae9eeef6d" - -color-convert@^1.3.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" - dependencies: - color-name "^1.1.1" - -color-diff@^0.1.3: - version "0.1.7" - resolved "https://registry.yarnpkg.com/color-diff/-/color-diff-0.1.7.tgz#6db78cd9482a8e459d40821eaf4b503283dcb8e2" - -color-name@^1.0.0, color-name@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" - -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - dependencies: - color-name "^1.0.0" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -colorguard@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/colorguard/-/colorguard-1.2.0.tgz#f3facaf5caaeba4ef54653d9fb25bb73177c0d84" - dependencies: - chalk "^1.1.1" - color-diff "^0.1.3" - log-symbols "^1.0.2" - object-assign "^4.0.1" - pipetteur "^2.0.0" - plur "^2.0.0" - postcss "^5.0.4" - postcss-reporter "^1.2.1" - text-table "^0.2.0" - yargs "^1.2.6" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -commander@2.9.0, commander@2.9.x, commander@^2.7.1, commander@^2.8.1, commander@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commander@~2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -commonmark-react-renderer@^4.2.4: - version "4.3.2" - resolved "https://registry.yarnpkg.com/commonmark-react-renderer/-/commonmark-react-renderer-4.3.2.tgz#f30cdebd66141eef45ccd2d82fc00861e1e1f747" - dependencies: - in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.isplainobject "^4.0.6" - pascalcase "^0.1.1" - xss-filters "^1.2.6" - -commonmark@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.24.0.tgz#b80de0182c546355643aa15db12bfb282368278f" - dependencies: - entities "~ 1.1.1" - mdurl "~ 1.0.1" - string.prototype.repeat "^0.2.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@^1.4.6, concat-stream@^1.4.7: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -console-stream@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - -content-type-parser@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" - -content-type@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" - -convert-source-map@^1.1.0, convert-source-map@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -copy-to-clipboard@^3: - version "3.0.5" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.0.5.tgz#4cd40e7c2ee159bc72d4f06b5bec8f9e0a1a3442" - dependencies: - toggle-selection "^1.0.3" - -copy-webpack-plugin@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz#9728e383b94316050d0c7463958f2b85c0aa8200" - dependencies: - bluebird "^2.10.2" - fs-extra "^0.26.4" - glob "^6.0.4" - is-glob "^3.1.0" - loader-utils "^0.2.15" - lodash "^4.3.0" - minimatch "^3.0.0" - node-dir "^0.1.10" - -core-js@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.0.tgz#df408ab46d01aff91c01c3e7971935d422c54f81" - -core-js@2.4.1, core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -core-js@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-0.8.4.tgz#c22665f1e0d1b9c3c5e1b08dabd1f108695e4fcf" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.1.1.tgz#817f2c2039347a1e9bf7d090c0923e53f749ca82" - dependencies: - js-yaml "^3.4.3" - minimist "^1.2.0" - object-assign "^4.1.0" - os-homedir "^1.0.1" - parse-json "^2.2.0" - require-from-string "^1.1.0" - -coveralls@2.11.16: - version "2.11.16" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-2.11.16.tgz#da9061265142ddee954f68379122be97be8ab4b1" - dependencies: - js-yaml "3.6.1" - lcov-parse "0.0.10" - log-driver "1.2.5" - minimist "1.2.0" - request "2.79.0" - -create-ecdh@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^1.0.0" - sha.js "^2.3.6" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" - dependencies: - create-hash "^1.1.0" - inherits "^2.0.1" - -create-thenable@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/create-thenable/-/create-thenable-1.0.2.tgz#e2031720ccc9575d8cfa31f5c146e762a80c0534" - dependencies: - object.omit "~2.0.0" - unique-concat "~0.2.2" - -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -crypto-browserify@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - -crypto-js@^3.1.4: - version "3.1.8" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.8.tgz#715f070bf6014f2ae992a98b3929258b713f08d5" - -css-color-names@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.3.tgz#de0cef16f4d8aa8222a320d5b6d7e9bbada7b9f6" - -css-color-names@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - -css-loader@0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.1.tgz#2ba7f20131b93597496b3e9bb500785a49cd29ea" - dependencies: - babel-code-frame "^6.11.0" - css-selector-tokenizer "^0.7.0" - cssnano ">=2.6.1 <4" - loader-utils "~0.2.2" - lodash.camelcase "^4.3.0" - object-assign "^4.0.1" - postcss "^5.0.6" - postcss-modules-extract-imports "^1.0.0" - postcss-modules-local-by-default "^1.0.1" - postcss-modules-scope "^1.0.0" - postcss-modules-values "^1.1.0" - source-list-map "^0.1.4" - -css-rule-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/css-rule-stream/-/css-rule-stream-1.1.0.tgz#3786e7198983d965a26e31957e09078cbb7705a2" - dependencies: - css-tokenize "^1.0.1" - duplexer2 "0.0.2" - ldjson-stream "^1.2.1" - through2 "^0.6.3" - -css-select@^1.1.0, css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-selector-tokenizer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-selector-tokenizer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-tokenize@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-tokenize/-/css-tokenize-1.0.1.tgz#4625cb1eda21c143858b7f81d6803c1d26fc14be" - dependencies: - inherits "^2.0.1" - readable-stream "^1.0.33" - -css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - -"cssnano@>=2.6.1 <4": - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" - -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - dependencies: - cssom "0.3.x" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -d3-array@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.1.1.tgz#a01abe63a25ffb91d3423c3c6d051b4d36bc8a09" - -d3-collection@1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.3.tgz#00bdea94fbc1628d435abbae2f4dc2164e37dd34" - -d3-color@1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.0.3.tgz#bc7643fca8e53a8347e2fbdaffa236796b58509b" - -d3-format@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.2.0.tgz#6b480baa886885d4651dc248a8f4ac9da16db07a" - -d3-interpolate@1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.4.tgz#a43ec5b3bee350d8516efdf819a4c08c053db302" - dependencies: - d3-color "1" - -d3-path@1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.5.tgz#241eb1849bd9e9e8021c0d0a799f8a0e8e441764" - -d3-scale@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.0.tgz#0b4175ca31cbe65e254427e4662dfaefc373462d" - dependencies: - d3-array "1" - d3-collection "1" - d3-color "1" - d3-format "1" - d3-interpolate "1" - d3-time "1" - d3-time-format "2" - -d3-shape@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.0.0.tgz#cca332487579e457354c8838a0a283be638459ba" - dependencies: - d3-path "1" - -d3-time-format@2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.0.5.tgz#9d7780204f7c9119c9170b1a56db4de9a8af972e" - dependencies: - d3-time "1" - -d3-time@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.6.tgz#a55b13d7d15d3a160ae91708232e0835f1d5e945" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -date-difference@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/date-difference/-/date-difference-1.0.0.tgz#d3e6e883c0cad2dc9dbfcbf12e06297b97298974" - dependencies: - get-stdin "^3.0.2" - meow "^3.1.0" - -date-now@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-1.0.1.tgz#bb7d086438debe4182a485fb3df3fbfb99d6153c" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - -dateformat@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" - -death@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" - -debounce@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.0.0.tgz#0948af513d2e4ce407916f8506a423d3f9cf72d8" - dependencies: - date-now "1.0.1" - -debug@2.2.0, debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -debug@^2.1.1, debug@^2.2.0, debug@^2.3.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" - dependencies: - ms "0.7.2" - -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -decompress-tar@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466" - dependencies: - is-tar "^1.0.0" - object-assign "^2.0.0" - strip-dirs "^1.0.0" - tar-stream "^1.1.1" - through2 "^0.6.1" - vinyl "^0.4.3" - -decompress-tarbz2@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d" - dependencies: - is-bzip2 "^1.0.0" - object-assign "^2.0.0" - seek-bzip "^1.0.3" - strip-dirs "^1.0.0" - tar-stream "^1.1.1" - through2 "^0.6.1" - vinyl "^0.4.3" - -decompress-targz@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0" - dependencies: - is-gzip "^1.0.0" - object-assign "^2.0.0" - strip-dirs "^1.0.0" - tar-stream "^1.1.1" - through2 "^0.6.1" - vinyl "^0.4.3" - -decompress-unzip@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb" - dependencies: - is-zip "^1.0.0" - read-all-stream "^3.0.0" - stat-mode "^0.2.0" - strip-dirs "^1.0.0" - through2 "^2.0.0" - vinyl "^1.0.0" - yauzl "^2.2.1" - -decompress@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed" - dependencies: - buffer-to-vinyl "^1.0.0" - concat-stream "^1.4.6" - decompress-tar "^3.0.0" - decompress-tarbz2 "^3.0.0" - decompress-targz "^3.0.0" - decompress-unzip "^3.0.0" - stream-combiner2 "^1.1.1" - vinyl-assign "^1.0.1" - vinyl-fs "^2.2.0" - -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" - dependencies: - type-detect "0.1.1" - -deep-equal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - dependencies: - clone "^1.0.2" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - -diff@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" - -diffie-hellman@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -doctrine@^1.2.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doiuse@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/doiuse/-/doiuse-2.6.0.tgz#1892d10b61a9a356addbf2b614933e81f8bb3834" - dependencies: - browserslist "^1.1.1" - caniuse-db "^1.0.30000187" - css-rule-stream "^1.1.0" - duplexer2 "0.0.2" - jsonfilter "^1.1.2" - ldjson-stream "^1.2.1" - lodash "^4.0.0" - multimatch "^2.0.0" - postcss "^5.0.8" - source-map "^0.4.2" - through2 "^0.6.3" - yargs "^3.5.4" - -dom-converter@~0.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" - dependencies: - utila "~0.3" - -dom-serializer@0, dom-serializer@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" - -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - -domain-browser@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - -domelementtype@1, domelementtype@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - -domhandler@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" - dependencies: - domelementtype "1" - -domhandler@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" - dependencies: - domelementtype "1" - -domutils@1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" - dependencies: - domelementtype "1" - -domutils@1.5.1, domutils@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - dependencies: - dom-serializer "0" - domelementtype "1" - -download@^4.0.0, download@^4.1.2, download@^4.4.1: - version "4.4.3" - resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" - dependencies: - caw "^1.0.1" - concat-stream "^1.4.7" - each-async "^1.0.0" - filenamify "^1.0.1" - got "^5.0.0" - gulp-decompress "^1.2.0" - gulp-rename "^1.2.0" - is-url "^1.2.0" - object-assign "^4.0.1" - read-all-stream "^3.0.0" - readable-stream "^2.0.2" - stream-combiner2 "^1.1.1" - vinyl "^1.0.0" - vinyl-fs "^2.2.0" - ware "^1.2.0" - -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - -duplexer2@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" - -duplexer2@^0.1.4, duplexer2@~0.1.0: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - -duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - -duplexify@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" - dependencies: - end-of-stream "1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -each-async@^1.0.0, each-async@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473" - dependencies: - onetime "^1.0.0" - set-immediate-shim "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -editions@^1.1.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.3.tgz#0907101bdda20fac3cbe334c27cbd0688dc99a5b" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -ejs-loader@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/ejs-loader/-/ejs-loader-0.3.0.tgz#68736fdc231a490edf919a6446ad9d9055a587be" - dependencies: - loader-utils "^0.2.7" - lodash "^3.6.0" - -ejs@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-1.0.0.tgz#c9c60a48a46ee452fb32a71c317b95e5aa1fcb3d" - -ejsify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ejsify/-/ejsify-1.0.0.tgz#37194f5a85c12ae438429395799ec47b43bc453f" - dependencies: - ejs "~1.0.0" - through "~2.3.4" - -electron-to-chromium@^1.1.0, electron-to-chromium@^1.2.7: - version "1.3.2" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.2.tgz#b8ce5c93b308db0e92f6d0435c46ddec8f6363ab" - -element-resize-detector@^1.1.0: - version "1.1.11" - resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.1.11.tgz#34dc9aff624239e0ebdba6cdadeeae88a4cf0b1b" - dependencies: - batch-processor "^1.0.0" - -elliptic@6.4.0, elliptic@^6.0.0, elliptic@^6.2.3: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - -end-of-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" - dependencies: - once "~1.3.0" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" - dependencies: - once "^1.4.0" - -enhanced-resolve@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.5" - -entities@^1.1.1, "entities@~ 1.1.1", entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - -enzyme@2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.7.1.tgz#76370e1d99e91f73091bb8c4314b7c128cc2d621" - dependencies: - cheerio "^0.22.0" - function.prototype.name "^1.0.0" - is-subset "^0.1.1" - lodash "^4.17.2" - object-is "^1.0.1" - object.assign "^4.0.4" - object.entries "^1.0.3" - object.values "^1.0.3" - uuid "^2.0.3" - -errno@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" - dependencies: - prr "~0.0.0" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292" - dependencies: - stackframe "^0.3.1" - -es-abstract@^1.6.1, es-abstract@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.0" - is-callable "^1.1.3" - is-regex "^1.0.3" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.15" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6" - dependencies: - es6-iterator "2" - es6-symbol "~3.1" - -es6-error@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.0.tgz#f094c7041f662599bb12720da059d6b9c7ff0f40" - -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-promise@4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-templates@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" - dependencies: - recast "~0.11.12" - through "~2.3.6" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@^1.6.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-config-semistandard@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-semistandard/-/eslint-config-semistandard-7.0.0.tgz#f803493f56a5172f7f59c35ae648360b41f2ff71" - -eslint-config-standard-jsx@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.3.0.tgz#cab0801a15a360bf63facb97ab22fbdd88d8a5e0" - -eslint-config-standard-react@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard-react/-/eslint-config-standard-react-4.2.0.tgz#d15fd25e837e20aff0db32f64fb55d11880eb8d0" - dependencies: - eslint-config-standard-jsx "^3.0.0" - -eslint-config-standard@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz#d3a68aafc7191639e7ee441e7348739026354292" - -eslint-plugin-promise@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.4.2.tgz#1be2793eafe2d18b5b123b8136c269f804fe7122" - -eslint-plugin-react@6.10.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.0.tgz#9c48b48d101554b5355413e7c64238abde6ef1ef" - dependencies: - array.prototype.find "^2.0.1" - doctrine "^1.2.2" - has "^1.0.1" - jsx-ast-utils "^1.3.4" - object.assign "^4.0.4" - -eslint-plugin-standard@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz#3589699ff9c917f2c25f76a916687f641c369ff3" - -eslint@3.16.1: - version "3.16.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.16.1.tgz#9bc31fc7341692cf772e80607508f67d711c5609" - dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.4.6" - debug "^2.1.1" - doctrine "^1.2.2" - escope "^3.6.0" - espree "^3.4.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" - -espree@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2" - dependencies: - acorn "^5.0.1" - acorn-jsx "^3.0.0" - -esprima@^2.6.0, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -esprima@^3.1.1, esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -esrecurse@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" - dependencies: - estraverse "~4.1.0" - object-assign "^4.0.1" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -estraverse@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" - -esutils@^2.0.0, esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -etag@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - -ethereumjs-tx@1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.2.5.tgz#ed36d7ffeb97bc889c61eef1ab76f47a613d8286" - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-util@5.1.1, ethereumjs-util@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.1.1.tgz#122fb38dea747dc62b3aebfc365d1bd48be4b73e" - dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - ethjs-util "^0.1.3" - keccak "^1.0.2" - rlp "^2.0.0" - secp256k1 "^3.0.1" - -ethjs-util@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.4.tgz#1c8b6879257444ef4d3f3fbbac2ded12cd997d93" - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - -eventemitter3@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.2.tgz#20ce4891909ce9f35b088c94fab40e2c96f473ac" - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -evp_bytestokey@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" - dependencies: - create-hash "^1.1.1" - -exec-buffer@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.1.0.tgz#851b46d062fca9bcbc6ff8781693e28e8da80402" - dependencies: - execa "^0.5.0" - p-finally "^1.0.0" - pify "^2.3.0" - rimraf "^2.5.4" - tempfile "^1.0.0" - -exec-series@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a" - dependencies: - async-each-series "^1.1.0" - object-assign "^4.1.0" - -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execall@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" - dependencies: - clone-regexp "^1.0.0" - -executable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9" - dependencies: - meow "^3.1.0" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expand-template@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.0.3.tgz#6c303323177a62b1b22c070279f7861287b69b1a" - -express@4.14.1: - version "4.14.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.14.1.tgz#646c237f766f148c2120aff073817b9e4d7e0d33" - dependencies: - accepts "~1.3.3" - array-flatten "1.1.1" - content-disposition "0.5.2" - content-type "~1.0.2" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "~2.2.0" - depd "~1.1.0" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.7.0" - finalhandler "0.5.1" - fresh "0.3.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.1" - path-to-regexp "0.1.7" - proxy-addr "~1.1.3" - qs "6.2.0" - range-parser "~1.2.0" - send "0.14.2" - serve-static "~1.11.2" - type-is "~1.6.14" - utils-merge "1.0.0" - vary "~1.1.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - dependencies: - is-extendable "^0.1.0" - -extend@^3.0.0, extend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" - -extend@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-1.2.1.tgz#a0f5fd6cfc83a5fe49ef698d60ec8a624dd4576c" - -external-editor@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095" - dependencies: - tmp "^0.0.31" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extract-loader@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/extract-loader/-/extract-loader-0.1.0.tgz#a1c146915241cc486d5292263c7555d5aa19766e" - dependencies: - loader-utils "^0.2.16" - -extract-text-webpack-plugin@2.0.0-beta.4: - version "2.0.0-beta.4" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.0.0-beta.4.tgz#d32393069e7d90c8318d48392302618b56bc1ba9" - dependencies: - async "^1.5.0" - loader-utils "^0.2.3" - webpack-sources "^0.1.0" - -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" - -fancy-log@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" - dependencies: - chalk "^1.1.1" - time-stamp "^1.0.0" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - -fbjs@^0.8.1, fbjs@^0.8.4, fbjs@^0.8.6: - version "0.8.12" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.9" - -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - dependencies: - pend "~1.2.0" - -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -file-loader@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.10.0.tgz#bbe6db7474ac92c7f54fdc197cf547e98b6b8e12" - dependencies: - loader-utils "~0.2.5" - -file-loader@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42" - dependencies: - loader-utils "~0.2.5" - -file-saver@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.3.tgz#cdd4c44d3aa264eac2f68ec165bc791c34af1232" - -file-type@^3.1.0, file-type@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" - -filename-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" - -filename-reserved-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" - -filenamify@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" - dependencies: - filename-reserved-regex "^1.0.0" - strip-outer "^1.0.0" - trim-repeated "^1.0.0" - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - -filesize@^3.1.2: - version "3.5.6" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.6.tgz#5fd98f3eac94ec9516ef8ed5782fad84a01a0a1a" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -finalhandler@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.1.tgz#2c400d8d4530935bc232549c5fa385ec07de6fcd" - dependencies: - debug "~2.2.0" - escape-html "~1.0.3" - on-finished "~2.3.0" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-parent-dir@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -find-versions@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62" - dependencies: - array-uniq "^1.0.0" - get-stdin "^4.0.1" - meow "^3.5.0" - semver-regex "^1.0.0" - -first-chunk-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" - -flat-cache@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - -flat@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat/-/flat-2.0.1.tgz#70e29188a74be0c3c89409eed1fa9577907ae32f" - dependencies: - is-buffer "~1.1.2" - -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -format-json@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/format-json/-/format-json-1.0.3.tgz#268e3d3e169792ff49bb5b030f22c87ca1c2cd9f" - -format-number@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/format-number/-/format-number-2.0.1.tgz#e9231a8743ca64b47d09555dce40296343be66eb" - -formatio@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" - dependencies: - samsam "~1.1" - -forwarded@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" - -fresh@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" - -fs-extra@^0.26.4: - version "0.26.7" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-readdir-recursive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.29" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.0.2, function-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" - -function.prototype.name@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.0.tgz#5f523ca64e491a5f95aba80cc1e391080a14482e" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.0" - is-callable "^1.1.2" - -gather-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" - -gauge@~1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" - dependencies: - ansi "^0.3.0" - has-unicode "^2.0.0" - lodash.pad "^4.1.0" - lodash.padend "^4.1.0" - lodash.padstart "^4.1.0" - -gauge@~2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -geopattern@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/geopattern/-/geopattern-1.2.3.tgz#de96602e46dba9095ca5774bfb3b36308f7e63fe" - dependencies: - extend "~1.2.1" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-own-enumerable-property-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-1.0.1.tgz#f1d4e3ad1402e039898e56d1e9b9aa924c26e484" - -get-proxy@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb" - dependencies: - rc "^1.1.2" - -get-stdin@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-3.0.2.tgz#c1ced24b9039b38ded85bdf161e57713b6dd4abe" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stdin@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - -getpass@^0.1.1: - version "0.1.6" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" - dependencies: - assert-plus "^1.0.0" - -gifsicle@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-3.0.4.tgz#f45cb5ed10165b665dc929e0e9328b6c821dfa3b" - dependencies: - bin-build "^2.0.0" - bin-wrapper "^3.0.0" - logalot "^2.0.0" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob-parent@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-stream@^5.3.2: - version "5.3.5" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" - dependencies: - extend "^3.0.0" - glob "^5.0.3" - glob-parent "^3.0.0" - micromatch "^2.3.7" - ordered-read-streams "^0.3.0" - through2 "^0.6.0" - to-absolute-glob "^0.1.1" - unique-stream "^2.0.2" - -glob@7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^5.0.3: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df" - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -globals@^9.0.0, globals@^9.14.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globjoin@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" - -glogg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" - dependencies: - sparkles "^1.0.0" - -got@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^3.0.0" - unzip-response "^1.0.2" - url-parse-lax "^1.0.0" - -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - -gulp-decompress@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7" - dependencies: - archive-type "^3.0.0" - decompress "^3.0.0" - gulp-util "^3.0.1" - readable-stream "^2.0.2" - -gulp-rename@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" - -gulp-sourcemaps@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" - dependencies: - convert-source-map "^1.1.1" - graceful-fs "^4.1.2" - strip-bom "^2.0.0" - through2 "^2.0.0" - vinyl "^1.0.0" - -gulp-util@^3.0.1: - version "3.0.8" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^2.0.0" - fancy-log "^1.1.0" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash._reescape "^3.0.0" - lodash._reevaluate "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.template "^3.0.0" - minimist "^1.1.0" - multipipe "^0.1.2" - object-assign "^3.0.0" - replace-ext "0.0.1" - through2 "^2.0.0" - vinyl "^0.5.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - dependencies: - glogg "^1.0.0" - -handlebars@^4.0.3: - version "4.0.6" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -happypack@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/happypack/-/happypack-3.0.3.tgz#22f78c87a325cdb798c958cf4ec383fcd4d6fdc7" - dependencies: - async "1.5.0" - json-stringify-safe "5.0.1" - loader-utils "0.2.16" - mkdirp "0.5.1" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-gulplog@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" - dependencies: - sparkles "^1.0.0" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" - dependencies: - inherits "^2.0.1" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -he@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - -history@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c" - dependencies: - invariant "^2.2.1" - loose-envify "^1.2.0" - query-string "^4.2.2" - warning "^3.0.0" - -hmac-drbg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -hoist-non-react-statics@^1.0.0, hoist-non-react-statics@^1.0.3, hoist-non-react-statics@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.4.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.1.tgz#4b0445e41c004a8bd1337773a4ff790ca40318c8" - -html-comment-regex@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" - -html-encoding-sniffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" - dependencies: - whatwg-encoding "^1.0.1" - -html-entities@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2" - -html-loader@0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.4.4.tgz#f2b5b9acd5e035ff3ab5fd369c13c97a7bb014da" - dependencies: - es6-templates "^0.2.2" - fastparse "^1.1.1" - html-minifier "^3.0.1" - loader-utils "^0.2.15" - object-assign "^4.1.0" - -html-minifier@^3.0.1, html-minifier@^3.2.3: - version "3.4.2" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.4.2.tgz#31896baaf735c1d95f7a0b7291f9dc36c0720752" - dependencies: - camel-case "3.0.x" - clean-css "4.0.x" - commander "2.9.x" - he "1.1.x" - ncname "1.0.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "2.8.x" - -html-tags@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-1.1.1.tgz#869f43859f12d9bdc3892419e494a628aa1b204e" - -html-webpack-plugin@2.28.0: - version "2.28.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" - dependencies: - bluebird "^3.4.7" - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - toposort "^1.0.0" - -html@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/html/-/html-1.0.0.tgz#a544fa9ea5492bfb3a2cca8210a10be7b5af1f61" - dependencies: - concat-stream "^1.4.7" - -htmlparser2@^3.9.1: - version "3.9.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" - dependencies: - domelementtype "^1.3.0" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^2.0.2" - -htmlparser2@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" - dependencies: - domelementtype "1" - domhandler "2.1" - domutils "1.1" - readable-stream "1.0" - -http-errors@~1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" - dependencies: - inherits "2.0.3" - setprototypeof "1.0.2" - statuses ">= 1.3.1 < 2" - -http-proxy-middleware@0.17.3: - version "0.17.3" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d" - dependencies: - http-proxy "^1.16.2" - is-glob "^3.1.0" - lodash "^4.17.2" - micromatch "^2.3.11" - -http-proxy@^1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" - dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" - -humanize@0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/humanize/-/humanize-0.0.9.tgz#1994ffaecdfe9c441ed2bdac7452b7bb4c9e41a4" - -husky@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-0.13.1.tgz#11efc6fc10e0ec4e789776f6582be37d71ba4ccf" - dependencies: - chalk "^1.1.3" - find-parent-dir "^0.3.0" - is-ci "^1.0.9" - normalize-path "^1.0.0" - -hyphenate-style-name@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" - -iconv-lite@0.4.13, iconv-lite@~0.4.13: - version "0.4.13" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" - -icss-replace-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5" - -ieee754@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - -ignore-styles@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ignore-styles/-/ignore-styles-5.0.1.tgz#b49ef2274bdafcd8a4880a966bfe38d1a0bf4671" - -ignore@^3.2.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c" - -image-webpack-loader@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/image-webpack-loader/-/image-webpack-loader-3.2.0.tgz#f26306d6048d3a2f5a8d844ecaedd2b7148f0a4e" - dependencies: - file-loader "^0.9.0" - imagemin "^5.2.2" - imagemin-gifsicle "^5.1.0" - imagemin-mozjpeg "^6.0.0" - imagemin-optipng "^5.2.1" - imagemin-pngquant "^5.0.0" - imagemin-svgo "^5.2.0" - loader-utils "^0.2.16" - -imagemin-gifsicle@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-5.1.0.tgz#2e4ddcda2a109b221cabaec498e1e2dd28ca768f" - dependencies: - exec-buffer "^3.0.0" - gifsicle "^3.0.0" - is-gif "^1.0.0" - -imagemin-mozjpeg@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-6.0.0.tgz#71a32a457aa1b26117a68eeef2d9b190c2e5091e" - dependencies: - exec-buffer "^3.0.0" - is-jpg "^1.0.0" - mozjpeg "^4.0.0" - -imagemin-optipng@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz#d22da412c09f5ff00a4339960b98a88b1dbe8695" - dependencies: - exec-buffer "^3.0.0" - is-png "^1.0.0" - optipng-bin "^3.0.0" - -imagemin-pngquant@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/imagemin-pngquant/-/imagemin-pngquant-5.0.0.tgz#7d72405778caba9c510eb3cb4590c8413383560e" - dependencies: - exec-buffer "^3.0.0" - is-png "^1.0.0" - pngquant-bin "^3.0.0" - -imagemin-svgo@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-5.2.1.tgz#74d593ce4cbe1b87efdb3d06a4a56078f71a8147" - dependencies: - is-svg "^2.0.0" - svgo "^0.7.0" - -imagemin@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-5.2.2.tgz#e14a0f357f8810266875eda38634eeb96f6fbd16" - dependencies: - file-type "^3.8.0" - globby "^5.0.0" - mkdirp "^0.5.1" - pify "^2.3.0" - promise.pipe "^3.0.0" - replace-ext "0.0.1" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@^1.3.4, ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -inline-style-prefixer@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz#c153c7e88fd84fef5c602e95a8168b2770671fe7" - dependencies: - bowser "^1.0.0" - hyphenate-style-name "^1.0.1" - -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - -inquirer@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347" - dependencies: - ansi-escapes "^1.1.0" - chalk "^1.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.1" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx "^4.1.0" - string-width "^2.0.0" - strip-ansi "^3.0.0" - through "^2.3.6" - -interpret@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.2.tgz#f4f623f0bb7122f15f5717c8e254b8161b5c5b2d" - -intl-format-cache@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.0.5.tgz#b484cefcb9353f374f25de389a3ceea1af18d7c9" - -intl-messageformat-parser@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.2.0.tgz#5906b7f953ab7470e0dc8549097b648b991892ff" - -intl-messageformat-parser@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.3.0.tgz#c5d26ffb894c7d9c2b9fa444c67f417ab2594268" - -intl-messageformat@1.3.0, intl-messageformat@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-1.3.0.tgz#f7d926aded7a3ab19b2dc601efd54e99a4bd4eae" - dependencies: - intl-messageformat-parser "1.2.0" - -intl-relativeformat@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/intl-relativeformat/-/intl-relativeformat-1.3.0.tgz#893dc7076fccd380cf091a2300c380fa57ace45b" - dependencies: - intl-messageformat "1.3.0" - -invariant@^2.0.0, invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -ip-regex@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" - -ipaddr.js@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" - -irregular-plurals@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - -is-absolute@^0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f" - dependencies: - is-relative "^0.1.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.0.2, is-buffer@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-bzip2@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc" - -is-callable@^1.1.1, is-callable@^1.1.2, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-ci@^1.0.10, is-ci@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" - dependencies: - ci-info "^1.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-dom@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.0.9.tgz#483832d52972073de12b9fe3f60320870da8370d" - -is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-extglob@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-gif@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-1.0.0.tgz#a6d2ae98893007bffa97a1d8c01d63205832097e" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - -is-gzip@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" - -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - -is-jpg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-1.0.0.tgz#2959c17e73430db38264da75b90dd54f2d86da1c" - -is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - -is-natural-number@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" - -is-number@^2.0.2, is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0, is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" - dependencies: - path-is-inside "^1.0.1" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - -is-plain-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.1.tgz#4d7ca539bc9db9b737b8acb612f2318ef92f294f" - dependencies: - isobject "^1.0.0" - -is-png@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-png/-/is-png-1.0.0.tgz#3d80373fe9b89d65fd341f659d3fc0a1135e718a" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-regex@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - -is-relative@^0.1.0: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" - -is-resolvable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" - dependencies: - tryit "^1.0.1" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - -is-supported-regexp-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz#8b520c85fae7a253382d4b02652e045576e13bb8" - -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -is-tar@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-url@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is-valid-glob@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" - -is-zip@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isomorphic-fetch@2.2.1, isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -istanbul-api@^1.0.0-alpha: - version "1.1.7" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.7.tgz#f6f37f09f8002b130f891c646b70ee4a8e7345ae" - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.0.2" - istanbul-lib-hook "^1.0.5" - istanbul-lib-instrument "^1.7.0" - istanbul-lib-report "^1.0.0" - istanbul-lib-source-maps "^1.1.1" - istanbul-reports "^1.0.2" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.2.tgz#87a0c015b6910651cb3b184814dfb339337e25e1" - -istanbul-lib-hook@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.5.tgz#6ca3d16d60c5f4082da39f7c5cd38ea8a772b88e" - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.0.tgz#b8e0dc25709bb44e17336ab47b7bb5c97c23f659" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.13.0" - istanbul-lib-coverage "^1.0.2" - semver "^5.3.0" - -istanbul-lib-report@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.0.0.tgz#d83dac7f26566b521585569367fe84ccfc7aaecb" - dependencies: - istanbul-lib-coverage "^1.0.2" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.1.1.tgz#f8c8c2e8f2160d1d91526d97e5bd63b2079af71c" - dependencies: - istanbul-lib-coverage "^1.0.2" - mkdirp "^0.5.1" - rimraf "^2.4.4" - source-map "^0.5.3" - -istanbul-reports@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.2.tgz#4e8366abe6fa746cc1cd6633f108de12cc6ac6fa" - dependencies: - handlebars "^4.0.3" - -istanbul@1.0.0-alpha.2: - version "1.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-1.0.0-alpha.2.tgz#06096bc08e98baad744aae46962d8df9fac63d08" - dependencies: - abbrev "1.0.x" - async "1.x" - istanbul-api "^1.0.0-alpha" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - which "^1.1.1" - wordwrap "^1.0.0" - -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - -js-base64@^2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" - -js-sha3@0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.5.tgz#baf0c0e8c54ad5903447df96ade7a4a1bca79a4a" - -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" - -js-yaml@3.6.1, js-yaml@3.x, js-yaml@^3.5.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - -js-yaml@^3.4.3, js-yaml@^3.7.0: - version "3.8.2" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.2.tgz#02d3e2c0f6beab20248d412c352203827d786721" - dependencies: - argparse "^1.0.7" - esprima "^3.1.1" - -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsdom@9.11.0: - version "9.11.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.11.0.tgz#a95b0304e521a2ca5a63c6ea47bf7708a7a84591" - dependencies: - abab "^1.0.3" - acorn "^4.0.4" - acorn-globals "^3.1.0" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - escodegen "^1.6.1" - html-encoding-sniffer "^1.0.1" - nwmatcher ">= 1.3.9 < 2.0.0" - parse5 "^1.5.1" - request "^2.79.0" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.2" - webidl-conversions "^4.0.0" - whatwg-encoding "^1.0.1" - whatwg-url "^4.3.0" - xml-name-validator "^2.0.1" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-loader@0.5.4, json-loader@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@5.0.1, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfilter@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/jsonfilter/-/jsonfilter-1.1.2.tgz#21ef7cedc75193813c75932e96a98be205ba5a11" - dependencies: - JSONStream "^0.8.4" - minimist "^1.1.0" - stream-combiner "^0.2.1" - through2 "^0.6.3" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsonparse@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64" - -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - -jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" - dependencies: - assert-plus "1.0.0" - extsprintf "1.0.2" - json-schema "0.2.3" - verror "1.3.6" - -jsqr@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/jsqr/-/jsqr-0.2.2.tgz#8c1f0279fb7c94542aaa9e8aeb7c722d523ea092" - -jsx-ast-utils@^1.3.4: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.0.tgz#5afe38868f56bc8cc7aeaef0100ba8c75bd12591" - dependencies: - object-assign "^4.1.0" - -keccak@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.2.0.tgz#b53618fc7961b642f6e73f1546eec3329f7effe0" - dependencies: - bindings "^1.2.1" - inherits "^2.0.3" - nan "^2.2.1" - prebuild-install "^2.0.0" - -keycode@^2.1.1: - version "2.1.8" - resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.8.tgz#94d2b7098215eff0e8f9a8931d5a59076c4532fb" - -keythereum@0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/keythereum/-/keythereum-0.4.6.tgz#0fdec7cf938ae39e5e3061b2f6e16677b766c5da" - dependencies: - elliptic "6.4.0" - ethereumjs-util "5.1.1" - sjcl "1.0.6" - uuid "3.0.0" - validator "4.0.2" - -kind-of@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" - dependencies: - is-buffer "^1.0.2" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: - graceful-fs "^4.1.9" - -known-css-properties@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.0.6.tgz#71a0b8fde1b6e3431c471efbc3d9733faebbcfbf" - -laggard@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/laggard/-/laggard-0.1.0.tgz#2efd645f7f2d8f3d27ac808039ca86a8ee341075" - dependencies: - minimist "^1.2.0" - pixrem "^3.0.0" - postcss "^5.0.0" - postcss-color-rgba-fallback "^2.0.0" - postcss-opacity "^3.0.0" - postcss-pseudoelements "^3.0.0" - postcss-reporter "^1.2.1" - postcss-vmin "^2.0.0" - postcss-will-change "^1.0.0" - read-file-stdin "^0.2.0" - write-file-stdout "0.0.2" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lazy-req@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - dependencies: - readable-stream "^2.0.5" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -lcov-parse@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" - -ldjson-stream@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ldjson-stream/-/ldjson-stream-1.2.1.tgz#91beceda5ac4ed2b17e649fb777e7abfa0189c2b" - dependencies: - split2 "^0.2.1" - through2 "^0.6.1" - -leven@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lie@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - dependencies: - immediate "~3.0.5" - -load-json-file@^1.0.0, load-json-file@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - -loader-utils@0.2.16: - version "0.2.16" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@0.2.x, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.3, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash-es@^4.2.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - -lodash._basetostring@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" - -lodash._basevalues@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash._reescape@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" - -lodash._reevaluate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" - -lodash._reinterpolate@^3.0.0, lodash._reinterpolate@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash._root@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - -lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - -lodash.assignin@^4.0.9: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - -lodash.bind@^4.1.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash.defaults@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - -lodash.escape@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" - dependencies: - lodash._root "^3.0.0" - -lodash.filter@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - -lodash.foreach@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.isequal@^4.0.0, lodash.isequal@^4.1.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.map@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - -lodash.memoize@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - -lodash.merge@^4.4.0, lodash.merge@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - -lodash.pad@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - -lodash.padend@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - -lodash.padstart@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - -lodash.pickby@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" - -lodash.reduce@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" - -lodash.reject@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - -lodash.some@^4.4.0, lodash.some@^4.5.1: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - -lodash.template@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" - dependencies: - lodash._basecopy "^3.0.0" - lodash._basetostring "^3.0.0" - lodash._basevalues "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - lodash.keys "^3.0.0" - lodash.restparam "^3.0.0" - lodash.templatesettings "^3.0.0" - -lodash.template@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" - dependencies: - lodash._reinterpolate "~3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - -lodash.templatesettings@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" - dependencies: - lodash._reinterpolate "~3.0.0" - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - -lodash.uniq@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - -lodash@4.13.1, lodash@~4.13.1: - version "4.13.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.13.1.tgz#83e4b10913f48496d4d16fec4a560af2ee744b68" - -lodash@4.17.2: - version "4.17.2" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" - -lodash@^3.6.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1, lodash@~4.17.2: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -log-driver@1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - dependencies: - chalk "^1.0.0" - -logalot@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" - dependencies: - figures "^1.3.5" - squeak "^1.0.0" - -loglevel@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd" - -lolex@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" - -longest@^1.0.0, longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -loud-rejection@^1.0.0, loud-rejection@^1.2.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lpad-align@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.0.tgz#27fa786bcb695fc434ea1500723eb8d0bdc82bf4" - dependencies: - get-stdin "^4.0.1" - longest "^1.0.0" - lpad "^2.0.1" - meow "^3.3.0" - -lpad@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lpad/-/lpad-2.0.1.tgz#28316b4e7b2015f511f6591459afc0e5944008ad" - -lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - -macaddress@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -marked@0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" - -material-ui-chip-input@0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/material-ui-chip-input/-/material-ui-chip-input-0.11.1.tgz#e92b2cc5c9741cd75d6b1822f1c7771ad4ce6c10" - -material-ui@0.16.5: - version "0.16.5" - resolved "https://registry.yarnpkg.com/material-ui/-/material-ui-0.16.5.tgz#bb8661aac7cac8cb223a3e76f4f57ee18a4aefc1" - dependencies: - babel-runtime "^6.11.6" - inline-style-prefixer "^2.0.1" - keycode "^2.1.1" - lodash.merge "^4.6.0" - lodash.throttle "^4.1.1" - react-addons-create-fragment "^15.0.0" - react-addons-transition-group "^15.0.0" - react-event-listener "^0.4.0" - recompose "^0.20.2" - simple-assign "^0.1.0" - warning "^3.0.0" - -math-expression-evaluator@^1.2.14: - version "1.2.16" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9" - -"mdurl@~ 1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -memory-fs@^0.4.0, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - -meow@^3.1.0, meow@^3.3.0, meow@^3.5.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - -merge-stream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - dependencies: - readable-stream "^2.0.1" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -miller-rabin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" - -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" - dependencies: - mime-db "~1.27.0" - -mime@1.2.x: - version "1.2.11" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" - -mime@1.3.4, mime@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - dependencies: - dom-walk "^0.1.0" - -minimalistic-assert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - dependencies: - brace-expansion "^1.0.0" - -minimist@0.0.8, minimist@~0.0.1: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.2, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mobx-react-devtools@4.2.10: - version "4.2.10" - resolved "https://registry.yarnpkg.com/mobx-react-devtools/-/mobx-react-devtools-4.2.10.tgz#79274bd8d44ba04d950728738a144541fa2a6012" - -mobx-react@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-4.0.3.tgz#40eb31d25e0b8d63048eda2376cc56bfabd14f75" - dependencies: - hoist-non-react-statics "^1.2.0" - -mobx@2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/mobx/-/mobx-2.6.4.tgz#e05a91a5b2c97dac3fdab34024e6b74a7f4311ab" - -mocha@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.2.0.tgz#7dc4f45e5088075171a68896814e6ae9eb7a85e3" - dependencies: - browser-stdout "1.3.0" - commander "2.9.0" - debug "2.2.0" - diff "1.4.0" - escape-string-regexp "1.0.5" - glob "7.0.5" - growl "1.9.2" - json3 "3.3.2" - lodash.create "3.1.1" - mkdirp "0.5.1" - supports-color "3.1.2" - -mock-local-storage@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/mock-local-storage/-/mock-local-storage-1.0.2.tgz#a65a65cddab4707433d52ba4e9f6b63084b8c298" - dependencies: - core-js "^0.8.3" - -mock-socket@6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-6.0.4.tgz#85f58a0aa83bc1db4ca7d14b42d8f9dd663e7569" - -moment@2.17.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.0.tgz#a4c292e02aac5ddefb29a6eed24f51938dd3b74f" - -mozjpeg@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-4.1.1.tgz#859030b24f689a53db9b40f0160d89195b88fd50" - dependencies: - bin-build "^2.0.0" - bin-wrapper "^3.0.0" - logalot "^2.0.0" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -multimatch@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -multipipe@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" - dependencies: - duplexer2 "0.0.2" - -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - -mute-stream@0.0.7, mute-stream@~0.0.4: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -nan@^2.2.1, nan@^2.3.0, nan@^2.3.3: - version "2.5.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" - -napa@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/napa/-/napa-2.3.0.tgz#4196546d1a0b6bb94f37042053cc5ddd79731e53" - dependencies: - download "^4.4.1" - extend "^3.0.0" - load-json-file "^1.1.0" - minimist "^1.2.0" - mkdirp "^0.5.0" - npm-cache-filename "^1.0.1" - npmlog "^2.0.2" - rimraf "^2.5.1" - tar-pack "^3.1.2" - write-json-file "^1.2.0" - -native-promise-only@~0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -ncname@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" - dependencies: - xml-char-classes "^1.0.0" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -no-case@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" - dependencies: - lower-case "^1.1.1" - -nock@9.0.7: - version "9.0.7" - resolved "https://registry.yarnpkg.com/nock/-/nock-9.0.7.tgz#cc93481bb15f38bec2a39c4442be07825235b1a1" - dependencies: - chai ">=1.9.2 <4.0.0" - debug "^2.2.0" - deep-equal "^1.0.0" - json-stringify-safe "^5.0.1" - lodash "~4.17.2" - mkdirp "^0.5.0" - propagate "0.4.0" - qs "^6.0.2" - -node-abi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.0.0.tgz#443bfd151b599231028ae425e592e76cd31cb537" - -node-dir@^0.1.10: - version "0.1.16" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4" - dependencies: - minimatch "^3.0.2" - -node-emoji@^1.0.4: - version "1.5.1" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.5.1.tgz#fd918e412769bf8c448051238233840b2aff16a1" - dependencies: - string.prototype.codepointat "^0.2.0" - -node-fetch@^1.0.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-gyp@^3.2.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.0.tgz#7474f63a3a0501161dda0b6341f022f14c423fa6" - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - minimatch "^3.0.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "2" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - -node-libs-browser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.1.4" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "0.0.1" - os-browserify "^0.2.0" - path-browserify "0.0.0" - process "^0.11.0" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.0.5" - stream-browserify "^2.0.1" - stream-http "^2.3.1" - string_decoder "^0.10.25" - timers-browserify "^2.0.2" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - -"nopt@2 || 3", nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.6" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" - -normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - -normalize-selector@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" - -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -npm-cache-filename@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.1, npmlog@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.1" - set-blocking "~2.0.0" - -npmlog@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" - dependencies: - ansi "~0.3.1" - are-we-there-yet "~1.1.2" - gauge "~1.2.5" - -nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -"nwmatcher@>= 1.3.9 < 2.0.0": - version "1.3.9" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - -object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - -object-keys@^1.0.10, object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -object-path@^0.11.2: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - -object.assign@^4.0.1, object.assign@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.0" - object-keys "^1.0.10" - -object.entries@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" - -object.omit@^2.0.0, object.omit@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.values@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - -onecolor@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.4.tgz#75a46f80da6c7aaa5b4daae17a47198bd9652494" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -optipng-bin@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-3.1.2.tgz#18c5a3388ed5d6f1e6ef1998ab0a6bcc8bdd0ca0" - dependencies: - bin-build "^2.0.0" - bin-wrapper "^3.0.0" - logalot "^2.0.0" - -ordered-read-streams@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" - dependencies: - is-stream "^1.0.1" - readable-stream "^2.0.1" - -os-browserify@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" - -os-filter-obj@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad" - -os-homedir@^1.0.0, os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -output-file-sync@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.1.0, parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - -parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - -path-to-regexp@^1.0.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - dependencies: - isarray "0.0.1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -pbkdf2@^3.0.3: - version "3.0.9" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" - dependencies: - create-hmac "^1.1.2" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - -performance-now@^0.2.0, performance-now@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -phoneformat.js@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/phoneformat.js/-/phoneformat.js-1.0.3.tgz#11be3474e76474540fe3734cc33f1a65841d5f87" - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pipetteur@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/pipetteur/-/pipetteur-2.0.3.tgz#1955760959e8d1a11cb2a50ec83eec470633e49f" - dependencies: - onecolor "^3.0.4" - synesthesia "^1.0.1" - -pixrem@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pixrem/-/pixrem-3.0.2.tgz#30d1bafb4c3bdce8e9bb4bd56a13985619320c34" - dependencies: - browserslist "^1.0.0" - postcss "^5.0.0" - reduce-css-calc "^1.2.7" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - -plur@^2.0.0, plur@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" - dependencies: - irregular-plurals "^1.0.0" - -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - -pngquant-bin@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pngquant-bin/-/pngquant-bin-3.1.1.tgz#d124d98a75a9487f40c1640b4dbfcbb2bd5a1fd1" - dependencies: - bin-build "^2.0.0" - bin-wrapper "^3.0.0" - logalot "^2.0.0" - -postcss-alias@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-alias/-/postcss-alias-1.0.0.tgz#070c61ee1197af6ee5eb75d26adf48899b9d2f7b" - dependencies: - postcss "^5.0.0" - -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-clearfix@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-clearfix/-/postcss-clearfix-1.0.0.tgz#afec6a0e01d25dac36a54adb89ffd4bfe1d219af" - dependencies: - postcss "^5.0" - -postcss-color-rgba-fallback@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-2.2.0.tgz#6d29491be5990a93173d47e7c76f5810b09402ba" - dependencies: - postcss "^5.0.0" - postcss-value-parser "^3.0.2" - rgb-hex "^1.0.0" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - dependencies: - postcss "^5.0.14" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - dependencies: - postcss "^5.0.4" - -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - dependencies: - postcss "^5.0.14" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-easings@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/postcss-easings/-/postcss-easings-0.3.0.tgz#23dccbf97587e28d5da19c3bae4b50698c5aad5e" - dependencies: - postcss "^5.0.2" - -postcss-filter-plugins@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" - dependencies: - postcss "^5.0.4" - uniqid "^4.0.0" - -postcss-fontpath@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/postcss-fontpath/-/postcss-fontpath-0.3.0.tgz#28142a79dd18f2c9f0bf5c87f7a3eb794c53929e" - dependencies: - object-assign "^4.0.1" - postcss "^5.0.0" - -postcss-hexrgba@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/postcss-hexrgba/-/postcss-hexrgba-0.2.1.tgz#5c61abba439c0a38e49e7fbc0b3cd936119ec225" - dependencies: - postcss "^5.0.0" - -postcss-import@9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-9.1.0.tgz#95fe9876a1e79af49fbdc3589f01fe5aa7cc1e80" - dependencies: - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - promise-each "^2.2.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-input-style@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/postcss-input-style/-/postcss-input-style-0.3.0.tgz#e3b4fdb0aa441bed1930cbb44d8ad5634cf38540" - dependencies: - postcss "^5.0.0" - -postcss-less@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-0.14.0.tgz#c631b089c6cce422b9a10f3a958d2bedd3819324" - dependencies: - postcss "^5.0.21" - -postcss-load-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" - dependencies: - cosmiconfig "^2.1.0" - object-assign "^4.1.0" - postcss-load-options "^1.2.0" - postcss-load-plugins "^2.3.0" - -postcss-load-options@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" - dependencies: - cosmiconfig "^2.1.0" - object-assign "^4.1.0" - -postcss-load-plugins@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" - dependencies: - cosmiconfig "^2.1.1" - object-assign "^4.1.0" - -postcss-loader@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-1.3.2.tgz#c568b61c2e48e274e1c224a2587fb566f4ec26f5" - dependencies: - loader-utils "^1.0.2" - object-assign "^4.1.1" - postcss "^5.2.15" - postcss-load-config "^1.2.0" - -postcss-media-query-parser@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" - -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" - -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - -postcss-modules-extract-imports@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341" - dependencies: - postcss "^5.0.4" - -postcss-modules-local-by-default@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce" - dependencies: - css-selector-tokenizer "^0.6.0" - postcss "^5.0.4" - -postcss-modules-scope@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29" - dependencies: - css-selector-tokenizer "^0.6.0" - postcss "^5.0.4" - -postcss-modules-values@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1" - dependencies: - icss-replace-symbols "^1.0.2" - postcss "^5.0.14" - -postcss-nested@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-1.0.0.tgz#d136bd4b576bd5632df142c12b2198a9ccf794df" - dependencies: - postcss "^5.0.2" - -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - dependencies: - postcss "^5.0.5" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-opacity@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-opacity/-/postcss-opacity-3.0.0.tgz#7879bcc734405bf74aa6c81c391762052fc55b29" - dependencies: - postcss "^5.0.4" - -postcss-opacity@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-opacity/-/postcss-opacity-4.0.0.tgz#aa562043da3394c94a3acedcf43f0c323d0986a1" - dependencies: - postcss "^5.0.4" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-position@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/postcss-position/-/postcss-position-0.5.0.tgz#8653d4f0b84ffb07e544fb7f7eae08c6551b73a0" - dependencies: - postcss "^5.0.0" - -postcss-pseudoelements@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudoelements/-/postcss-pseudoelements-3.0.0.tgz#6c682177c7900ba053b6df17f8c590284c7b8bbc" - dependencies: - postcss "^5.0.4" - -postcss-quantity-queries@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/postcss-quantity-queries/-/postcss-quantity-queries-0.4.0.tgz#be1370a7be9312a173639c0869aa4210244f86ce" - dependencies: - balanced-match "^0.2.0" - postcss "^5.0.4" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - dependencies: - postcss "^5.0.4" - -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" - -postcss-reporter@^1.2.1, postcss-reporter@^1.3.3: - version "1.4.1" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-1.4.1.tgz#c136f0a5b161915f379dd3765c61075f7e7b9af2" - dependencies: - chalk "^1.0.0" - lodash "^4.1.0" - log-symbols "^1.0.2" - postcss "^5.0.0" - -postcss-reporter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-2.0.0.tgz#d25e74ba7fce911e2aa72ec1ae592fade6ec3671" - dependencies: - chalk "^1.0.0" - lodash "^4.1.0" - log-symbols "^1.0.2" - postcss "^5.0.0" - -postcss-reporter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-3.0.0.tgz#09ea0f37a444c5693878606e09b018ebeff7cf8f" - dependencies: - chalk "^1.0.0" - lodash "^4.1.0" - log-symbols "^1.0.2" - postcss "^5.0.0" - -postcss-resolve-nested-selector@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" - -postcss-responsive-type@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/postcss-responsive-type/-/postcss-responsive-type-0.5.1.tgz#274133bc046359e542a58bbc621847d040fd10e6" - dependencies: - postcss "^5.0.0" - -postcss-scss@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.4.1.tgz#ad771b81f0f72f5f4845d08aa60f93557653d54c" - dependencies: - postcss "^5.2.13" - -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.1.1, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-simple-vars@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-3.0.0.tgz#1fa4ccb4b7151d9f0d52fb8ea19a15c1319599d6" - dependencies: - postcss "^5.0.21" - -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" - -postcss-vmin@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-vmin/-/postcss-vmin-2.0.0.tgz#5327c21191371256868fd7a739917f1474d57fee" - dependencies: - postcss "^5.0.0" - -postcss-will-change@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-will-change/-/postcss-will-change-1.1.0.tgz#a651dd5a81e82c412d39a6cf90a92bb3269af18c" - dependencies: - postcss "^5.0.16" - -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0, postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.18, postcss@^5.0.2, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.13, postcss@^5.2.15, postcss@^5.2.16, postcss@^5.2.4: - version "5.2.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.16.tgz#732b3100000f9ff8379a48a53839ed097376ad57" - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -prebuild-install@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.1.1.tgz#d0a77ea51b6a00f928cb71bc0ccea24f87ec171e" - dependencies: - expand-template "^1.0.2" - github-from-package "0.0.0" - minimist "^1.2.0" - node-abi "^2.0.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - os-homedir "^1.0.1" - pump "^1.0.1" - rc "^1.1.6" - simple-get "^1.4.2" - tar-fs "^1.13.0" - tunnel-agent "^0.4.3" - xtend "4.0.1" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -prepend-http@^1.0.0, prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-error@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.0.3.tgz#bed3d816a008e76da617cde8216f4b778849b5d9" - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -private@^0.1.6, private@~0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process@^0.11.0: - version "0.11.9" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" - -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - -progress-bar-webpack-plugin@1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-1.9.3.tgz#81fb8bd8e38da6edaf9a20beed79bd978dd63c2a" - dependencies: - chalk "^1.1.1" - object.assign "^4.0.1" - progress "^1.1.8" - -progress@1.1.8, progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - -promise-each@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/promise-each/-/promise-each-2.2.0.tgz#3353174eff2694481037e04e01f77aa0fb6d1b60" - dependencies: - any-promise "^0.1.0" - -promise-worker@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-worker/-/promise-worker-1.1.1.tgz#c2b75d045d249625c02264e2dff9ad22e031c69b" - dependencies: - is-promise "^2.1.0" - lie "^3.0.2" - -promise.pipe@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/promise.pipe/-/promise.pipe-3.0.0.tgz#b8f729867f54353996e6d8e86f3bbd56882e32a6" - -promise@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" - dependencies: - asap "~2.0.3" - -propagate@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/propagate/-/propagate-0.4.0.tgz#f3fcca0a6fe06736a7ba572966069617c130b481" - -proper-lockfile@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-2.0.0.tgz#b21f5e79bcbb6b4e23eeeced15cfc7f63e8a2e55" - dependencies: - graceful-fs "^4.1.2" - retry "^0.10.0" - -proxy-addr@~1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" - dependencies: - forwarded "~0.1.0" - ipaddr.js "1.3.0" - -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -public-encrypt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -pump@^1.0.0, pump@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -push.js@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/push.js/-/push.js-0.0.11.tgz#4fad3a9f90844212e2aa67d073a23d470e32a891" - -q@^1.1.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" - -qs@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" - -qs@6.3.0, qs@^6.0.2, qs@~6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -query-string@^4.1.0, query-string@^4.2.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd" - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0, querystring@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -raf@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.3.0.tgz#93845eeffc773f8129039f677f80a36044eee2c3" - dependencies: - performance-now "~0.2.0" - -randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" - dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" - -randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" - -range-parser@^1.0.3, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-loader@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" - -rc@^1.1.2, rc@^1.1.6, rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-ace@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-4.1.0.tgz#659faa010d173f60d6a8940f0b325c5e422cab54" - dependencies: - brace "^0.8.0" - lodash.isequal "^4.1.1" - -react-addons-create-fragment@^15.0.0: - version "15.5.1" - resolved "https://registry.yarnpkg.com/react-addons-create-fragment/-/react-addons-create-fragment-15.5.1.tgz#62c2427ee1e32fcd511f612cf3fe326ef9671b1c" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-addons-css-transition-group@15.4.2: - version "15.4.2" - resolved "https://registry.yarnpkg.com/react-addons-css-transition-group/-/react-addons-css-transition-group-15.4.2.tgz#b7828834dfa14229fe07750e331e8a8cb6fb7745" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-addons-perf@15.4.2: - version "15.4.2" - resolved "https://registry.yarnpkg.com/react-addons-perf/-/react-addons-perf-15.4.2.tgz#110bdcf5c459c4f77cb85ed634bcd3397536383b" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-addons-shallow-compare@^15.4.2: - version "15.5.0" - resolved "https://registry.yarnpkg.com/react-addons-shallow-compare/-/react-addons-shallow-compare-15.5.0.tgz#4d95c68a5537ccb75f395169b64db1745617fab5" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-addons-test-utils@15.4.2: - version "15.4.2" - resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.4.2.tgz#93bcaa718fcae7360d42e8fb1c09756cc36302a2" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -"react-addons-transition-group@^0.14.0 || ^15.0.0", react-addons-transition-group@^15.0.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/react-addons-transition-group/-/react-addons-transition-group-15.5.0.tgz#4a7dd48d2061f49a8977396f9e7c3f40f1b07a40" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-codemirror@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/react-codemirror/-/react-codemirror-0.3.0.tgz#cd6bd6ef458ec1e035cfd8b3fe7b30c8c7883c6c" - dependencies: - classnames "^2.2.5" - codemirror "^5.18.2" - lodash.debounce "^4.0.8" - -react-container-dimensions@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/react-container-dimensions/-/react-container-dimensions-1.2.0.tgz#bfb5e70e10aa82d2ecba49147d14bb4c22cafdaa" - dependencies: - element-resize-detector "^1.1.0" - invariant "^2.2.1" - -react-copy-to-clipboard@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-4.2.3.tgz#268c5a0fbde9a95d96145014e7f85110b0e7fb8e" - dependencies: - copy-to-clipboard "^3" - -react-deep-force-update@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-2.0.1.tgz#4f7f6c12c3e7de42f345992a3c518236fa1ecad3" - -react-dom@15.4.2: - version "15.4.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.4.2.tgz#015363f05b0a1fd52ae9efdd3a0060d90695208f" - dependencies: - fbjs "^0.8.1" - loose-envify "^1.1.0" - object-assign "^4.1.0" - -react-dropzone@3.7.3: - version "3.7.3" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-3.7.3.tgz#7852b6652a43afc7fa072021f3369123ea4a61e0" - dependencies: - attr-accept "^1.0.3" - -react-element-to-jsx-string@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-6.0.0.tgz#f2c151476ee8dd817891ed352be4ace9fb3631c2" - dependencies: - collapse-white-space "^1.0.0" - is-plain-object "^2.0.1" - lodash "^4.17.4" - sortobject "^1.0.0" - stringify-object "^3.1.0" - traverse "^0.6.6" - -react-element-to-jsx-string@^5.0.0: - version "5.0.7" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-5.0.7.tgz#c663a4800a9c712115c0d8519cb0215a46a1f0f2" - dependencies: - collapse-white-space "^1.0.0" - is-plain-object "^2.0.1" - lodash "^4.17.4" - sortobject "^1.0.0" - stringify-object "2.4.0" - traverse "^0.6.6" - -react-event-listener@0.4.1, react-event-listener@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.4.1.tgz#86b53974c3df651857766b7b177682ed7c7c8318" - dependencies: - babel-runtime "^6.20.0" - react-addons-shallow-compare "^15.4.2" - warning "^3.0.0" - -react-hot-loader@3.0.0-beta.6: - version "3.0.0-beta.6" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-3.0.0-beta.6.tgz#463fac0bfc8b63a8385258af20c91636abce75f4" - dependencies: - babel-template "^6.7.0" - global "^4.3.0" - react-deep-force-update "^2.0.1" - react-proxy "^3.0.0-alpha.0" - redbox-react "^1.2.5" - source-map "^0.4.4" - -react-inspector@paritytech/react-inspector: - version "1.1.2" - resolved "https://codeload.github.com/paritytech/react-inspector/tar.gz/73b5214261a5131821eb9088f58d7e5f31210c23" - dependencies: - babel-runtime "^6.9.2" - is-dom "^1.0.5" - -react-intl-aggregate-webpack-plugin@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/react-intl-aggregate-webpack-plugin/-/react-intl-aggregate-webpack-plugin-0.0.1.tgz#c29958860d7bcdfa6f460dec79f55ae0220488c6" - dependencies: - mkdirp "^0.5.1" - -react-intl@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.1.5.tgz#f9795ea34b790dcb5d0d8ef7060dddbe85bf8763" - dependencies: - intl-format-cache "^2.0.5" - intl-messageformat "^1.3.0" - intl-relativeformat "^1.3.0" - invariant "^2.1.1" - -react-markdown@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-2.4.4.tgz#26d825438d292e7ca6e292fe76201e1dbf2cfeee" - dependencies: - commonmark "^0.24.0" - commonmark-react-renderer "^4.2.4" - in-publish "^2.0.0" - -react-portal@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-3.0.0.tgz#9304fce836e8a3216b22588f8dc91b447728f0ae" - -react-proxy@^3.0.0-alpha.0: - version "3.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/react-proxy/-/react-proxy-3.0.0-alpha.1.tgz#4400426bcfa80caa6724c7755695315209fa4b07" - dependencies: - lodash "^4.6.1" - -react-qr-reader@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/react-qr-reader/-/react-qr-reader-1.0.3.tgz#9cd9e526cb2ae3ef2eabd7b3798172b8990d11ce" - dependencies: - jsqr "^0.2.1" - webrtc-adapter "^2.0.8" - -react-redux@4.4.6: - version "4.4.6" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-4.4.6.tgz#4b9d32985307a11096a2dd61561980044fcc6209" - dependencies: - hoist-non-react-statics "^1.0.3" - invariant "^2.0.0" - lodash "^4.2.0" - loose-envify "^1.1.0" - -react-router-redux@4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-4.0.7.tgz#9b1fde4e70106c50f47214e12bdd888cfb96e2a6" - -react-router@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.0.0.tgz#3f313e4dbaf57048c48dd0a8c3cac24d93667dff" - dependencies: - history "^3.0.0" - hoist-non-react-statics "^1.2.0" - invariant "^2.2.1" - loose-envify "^1.2.0" - warning "^3.0.0" - -react-smooth@0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-0.1.11.tgz#f389f8e58cbb546abb4921ca0cbe7b079bc51a0d" - dependencies: - lodash "~4.13.1" - raf "^3.2.0" - react-addons-transition-group "^0.14.0 || ^15.0.0" - -react-tap-event-plugin@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/react-tap-event-plugin/-/react-tap-event-plugin-2.0.1.tgz#316beb3bc6556e29ec869a7293e89c826a9074d2" - dependencies: - fbjs "^0.8.6" - -react-tooltip@3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-3.2.2.tgz#3a599c0eabbd9eb9597aa2d72b217fd7ba358767" - dependencies: - classnames "^2.2.0" - -react@15.4.2: - version "15.4.2" - resolved "https://registry.yarnpkg.com/react/-/react-15.4.2.tgz#41f7991b26185392ba9bae96c8889e7e018397ef" - dependencies: - fbjs "^0.8.4" - loose-envify "^1.1.0" - object-assign "^4.1.0" - -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - dependencies: - pify "^2.3.0" - -read-file-stdin@^0.2.0, read-file-stdin@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" - dependencies: - gather-stream "^1.0.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - dependencies: - mute-stream "~0.0.4" - -readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^1.0.33, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - -recast@~0.11.12: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - -recharts-scale@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.2.1.tgz#378f543ed17c3245e4d9afb10aaf6298240d2fcb" - -recharts@0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/recharts/-/recharts-0.15.2.tgz#636f21a341f00b31c925739ed4aef70adb55d80f" - dependencies: - classnames "2.2.5" - core-js "2.4.0" - d3-scale "1.0.0" - d3-shape "1.0.0" - lodash "4.13.1" - react-container-dimensions "1.2.0" - react-smooth "0.1.11" - recharts-scale "0.2.1" - reduce-css-calc "^1.3.0" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - -recompose@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.20.2.tgz#113d6ac7e29ca664cfffec16b681ddddf15250bc" - dependencies: - change-emitter "^0.1.2" - fbjs "^0.8.1" - hoist-non-react-statics "^1.0.0" - symbol-observable "^0.2.4" - -redbox-react@^1.2.5: - version "1.3.4" - resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.3.4.tgz#3d882bb62cc7c8f6256279d12f05c6a5a96d24c6" - dependencies: - error-stack-parser "^1.3.6" - object-assign "^4.0.1" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -reduce-css-calc@^1.2.6, reduce-css-calc@^1.2.7, reduce-css-calc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - dependencies: - balanced-match "^0.4.2" - -reduce-reducers@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/reduce-reducers/-/reduce-reducers-0.1.2.tgz#fa1b4718bc5292a71ddd1e5d839c9bea9770f14b" - -redux-actions@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/redux-actions/-/redux-actions-1.1.0.tgz#df8ec791d9e267544e58a8ba2b72fc5c30afba3b" - dependencies: - invariant "^2.2.1" - lodash "^4.13.1" - reduce-reducers "^0.1.0" - -redux-thunk@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.1.0.tgz#c724bfee75dbe352da2e3ba9bc14302badd89a98" - -redux@3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.6.0.tgz#887c2b3d0b9bd86eca2be70571c27654c19e188d" - dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.2" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" - -regenerator-transform@0.9.8: - version "0.9.8" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - -remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" - -renderkid@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" - dependencies: - css-select "^1.1.0" - dom-converter "~0.1" - htmlparser2 "~3.3.0" - strip-ansi "^3.0.0" - utila "~0.3" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - -request-capture-har@^1.1.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/request-capture-har/-/request-capture-har-1.2.2.tgz#cd692cfb2cc744fd84a3358aac6ee51528cf720d" - -request@2, request@^2.75.0, request@^2.79.0, request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -requires-port@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - -resolve-from@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" - -resolve@^1.1.6, resolve@^1.1.7: - version "1.3.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" - dependencies: - path-parse "^1.0.5" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - -rgb-hex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgb-hex/-/rgb-hex-1.0.0.tgz#bfaf8cd9cd9164b5a26d71eb4f15a0965324b3c1" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.0, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -ripemd160@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" - -rlp@2.0.0, rlp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.0.0.tgz#9db384ff4b89a8f61563d92395d8625b18f3afb0" - -roadrunner@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/roadrunner/-/roadrunner-1.1.0.tgz#1180a30d64e1970d8f55dd8cb0da8ffccecad71e" - -rucksack-css@0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/rucksack-css/-/rucksack-css-0.9.1.tgz#da7eba4c67bd05b00cbf4c834305c5fe55375de1" - dependencies: - autoprefixer "^6.0.0" - laggard "^0.1.0" - minimist "^1.1.2" - postcss "^5.0.0" - postcss-alias "^1.0.0" - postcss-clearfix "^1.0.0" - postcss-color-rgba-fallback "^2.0.0" - postcss-easings "^0.3.0" - postcss-fontpath "^0.3.0" - postcss-hexrgba "^0.2.0" - postcss-input-style "^0.3.0" - postcss-opacity "^4.0.0" - postcss-position "^0.5.0" - postcss-pseudoelements "^3.0.0" - postcss-quantity-queries "^0.4.0" - postcss-reporter "^2.0.0" - postcss-responsive-type "^0.5.0" - postcss-vmin "^2.0.0" - read-file-stdin "^0.2.0" - write-file-stdout "^0.0.2" - -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - dependencies: - once "^1.3.0" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - -rx@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" - -samsam@1.1.2, samsam@~1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" - -sax@^1.2.1, sax@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" - -script-ext-html-webpack-plugin@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/script-ext-html-webpack-plugin/-/script-ext-html-webpack-plugin-1.7.1.tgz#ae9c0e26d7767d4aa793c76e3550344ec08b6d10" - dependencies: - debug "^2.3.3" - -scryptsy@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.0.0.tgz#262c36f0231cfa7654e2363fa394cd2dec66f378" - -sdp@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sdp/-/sdp-1.4.1.tgz#68e1a8d88e3a10ae098aaf32b147b70851b42165" - -secp256k1@3.2.5, secp256k1@^3.0.1: - version "3.2.5" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.2.5.tgz#0dde5b27e5021665f6dffca7b2c3e010c6c13c93" - dependencies: - bindings "^1.2.1" - bip66 "^1.1.3" - bn.js "^4.11.3" - create-hash "^1.1.2" - drbg.js "^1.0.1" - elliptic "^6.2.3" - nan "^2.2.1" - prebuild-install "^2.0.0" - -seek-bzip@^1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" - dependencies: - commander "~2.8.1" - -semver-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" - -semver-truncate@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" - dependencies: - semver "^5.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -semver@^4.0.3: - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" - -send@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.14.2.tgz#39b0438b3f510be5dc6f667a11f71689368cdeef" - dependencies: - debug "~2.2.0" - depd "~1.1.0" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.7.0" - fresh "0.3.0" - http-errors "~1.5.1" - mime "1.3.4" - ms "0.7.2" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - -serve-static@~1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7" - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.14.2" - -serviceworker-cache-polyfill@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz#de19ee73bef21ab3c0740a37b33db62464babdeb" - -serviceworker-webpack-plugin@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/serviceworker-webpack-plugin/-/serviceworker-webpack-plugin-0.2.0.tgz#6de9dec82ed144c754c6f15b343e7b8764ac5b28" - dependencies: - minimatch "^3.0.3" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.0, set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" - -sha.js@^2.3.6: - version "2.4.8" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" - dependencies: - inherits "^2.0.1" - -shelljs@^0.7.5: - version "0.7.7" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -simple-assign@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/simple-assign/-/simple-assign-0.1.0.tgz#17fd3066a5f3d7738f50321bb0f14ca281cc4baa" - -simple-get@^1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-1.4.3.tgz#e9755eda407e96da40c5e5158c9ea37b33becbeb" - dependencies: - once "^1.3.1" - unzip-response "^1.0.0" - xtend "^4.0.0" - -sinon-as-promised@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/sinon-as-promised/-/sinon-as-promised-4.0.2.tgz#120e9ce033daa39648dc429062fe660be1b5b412" - dependencies: - create-thenable "~1.0.0" - native-promise-only "~0.8.1" - -sinon-chai@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-2.8.0.tgz#432a9bbfd51a6fc00798f4d2526a829c060687ac" - -sinon@1.17.7: - version "1.17.7" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf" - dependencies: - formatio "1.1.1" - lolex "1.3.2" - samsam "1.1.2" - util ">=0.10.3 <1" - -sjcl@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.6.tgz#6415462a63cc0d4215c49baec9d3fa0c1b53520f" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -solc@ngotchac/solc-js: - version "0.4.4" - resolved "https://codeload.github.com/ngotchac/solc-js/tar.gz/04eb38cc3003fba8cb3656653a7941ed36408818" - dependencies: - memorystream "^0.3.1" - require-from-string "^1.1.0" - yargs "^4.7.1" - -sort-keys@^1.0.0, sort-keys@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - -sortobject@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sortobject/-/sortobject-1.1.1.tgz#4f695d4d44ed0a4c06482c34c2582a2dcdc2ab34" - dependencies: - editions "^1.1.1" - -source-list-map@^0.1.4, source-list-map@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" - -source-map-support@^0.4.2: - version "0.4.14" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef" - dependencies: - source-map "^0.5.6" - -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.4.2, source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - -sparkles@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - -specificity@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.3.0.tgz#332472d4e5eb5af20821171933998a6bc3b1ce6f" - -split2@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/split2/-/split2-0.2.1.tgz#02ddac9adc03ec0bb78c1282ec079ca6e85ae900" - dependencies: - through2 "~0.6.1" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -squeak@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" - dependencies: - chalk "^1.0.0" - console-stream "^0.1.1" - lpad-align "^1.0.1" - -sshpk@^1.7.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -stackframe@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4" - -stat-mode@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" - -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -store@1.3.20: - version "1.3.20" - resolved "https://registry.yarnpkg.com/store/-/store-1.3.20.tgz#13ea7e3fb2d6c239868265d686b1d84e99c5be3e" - -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-combiner2@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" - -stream-combiner@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" - dependencies: - duplexer "~0.1.1" - through "~2.3.4" - -stream-http@^2.3.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.0.tgz#cec1f4e3b494bc4a81b451808970f8b20b4ed5f6" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^3.0.0" - -string.prototype.codepointat@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz#6b26e9bd3afcaa7be3b4269b526de1b82000ac78" - -string.prototype.repeat@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" - -string_decoder@^0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -stringify-object@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-2.4.0.tgz#c62d11023eb21fe2d9b087be039a26df3b22a09d" - dependencies: - is-plain-obj "^1.0.0" - is-regexp "^1.0.0" - -stringify-object@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.0.tgz#94370a135e41bc048358813bf99481f1315c6aa6" - dependencies: - get-own-enumerable-property-symbols "^1.0.1" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-bom-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" - dependencies: - first-chunk-stream "^1.0.0" - strip-bom "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-dirs@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0" - dependencies: - chalk "^1.0.0" - get-stdin "^4.0.1" - is-absolute "^0.1.5" - is-natural-number "^2.0.0" - minimist "^1.1.0" - sum-up "^1.0.1" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - dependencies: - is-hex-prefixed "1.0.0" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -strip-outer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8" - dependencies: - escape-string-regexp "^1.0.2" - -style-loader@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.1.tgz#468280efbc0473023cd3a6cd56e33b5a1d7fc3a9" - dependencies: - loader-utils "^0.2.7" - -style-search@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" - -stylehacks@^2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-2.3.2.tgz#64c83e0438a68c9edf449e8c552a7d9ab6009b0b" - dependencies: - browserslist "^1.1.3" - chalk "^1.1.1" - log-symbols "^1.0.2" - minimist "^1.2.0" - plur "^2.1.2" - postcss "^5.0.18" - postcss-reporter "^1.3.3" - postcss-selector-parser "^2.0.0" - read-file-stdin "^0.2.1" - text-table "^0.2.0" - write-file-stdout "0.0.2" - -stylelint-config-standard@16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-16.0.0.tgz#bb7387bff1d7dd7186a52b3ebf885b2405d691bf" - -stylelint@7.9.0: - version "7.9.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-7.9.0.tgz#b8d9ea20f887ab351075c6aded9528de24509327" - dependencies: - autoprefixer "^6.0.0" - balanced-match "^0.4.0" - chalk "^1.1.1" - colorguard "^1.2.0" - cosmiconfig "^2.1.1" - doiuse "^2.4.1" - execall "^1.0.0" - get-stdin "^5.0.0" - globby "^6.0.0" - globjoin "^0.1.4" - html-tags "^1.1.1" - ignore "^3.2.0" - known-css-properties "^0.0.6" - lodash "^4.17.4" - log-symbols "^1.0.2" - meow "^3.3.0" - micromatch "^2.3.11" - normalize-selector "^0.2.0" - postcss "^5.0.20" - postcss-less "^0.14.0" - postcss-media-query-parser "^0.2.0" - postcss-reporter "^3.0.0" - postcss-resolve-nested-selector "^0.1.1" - postcss-scss "^0.4.0" - postcss-selector-parser "^2.1.1" - postcss-value-parser "^3.1.1" - resolve-from "^2.0.0" - specificity "^0.3.0" - string-width "^2.0.0" - style-search "^0.1.0" - stylehacks "^2.3.0" - sugarss "^0.2.0" - svg-tags "^1.0.0" - table "^4.0.1" - -sugarss@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-0.2.0.tgz#ac34237563327c6ff897b64742bf6aec190ad39e" - dependencies: - postcss "^5.2.4" - -sum-up@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" - dependencies: - chalk "^1.0.0" - -supports-color@3.1.2, supports-color@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" - dependencies: - has-flag "^1.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.2, supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -sw-toolbox@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/sw-toolbox/-/sw-toolbox-3.6.0.tgz#26df1d1c70348658e4dea2884319149b7b3183b5" - dependencies: - path-to-regexp "^1.0.1" - serviceworker-cache-polyfill "^4.0.0" - -symbol-observable@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" - -symbol-observable@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" - -symbol-tree@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - -synesthesia@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/synesthesia/-/synesthesia-1.0.1.tgz#5ef95ea548c0d5c6e6f9bb4b0d0731dff864a777" - dependencies: - css-color-names "0.0.3" - -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - -table@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - -tapable@^0.2.5, tapable@~0.2.5: - version "0.2.6" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" - -tar-fs@^1.13.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.15.2.tgz#761f5b32932c7b39461a60d537faea0d8084830c" - dependencies: - chownr "^1.0.1" - mkdirp "^0.5.1" - pump "^1.0.0" - tar-stream "^1.1.2" - -tar-pack@^3.1.2, tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar-stream@^1.1.1, tar-stream@^1.1.2, tar-stream@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" - dependencies: - bl "^1.0.0" - end-of-stream "^1.0.0" - readable-stream "^2.0.0" - xtend "^4.0.0" - -tar@^2.0.0, tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -tempfile@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" - dependencies: - os-tmpdir "^1.0.0" - uuid "^2.0.1" - -text-table@^0.2.0, text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -through2-filter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@^0.6.0, through2@^0.6.1, through2@^0.6.3, through2@~0.6.1: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - -through2@^2.0.0, through2@~2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -"through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -time-stamp@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" - -timed-out@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" - -timers-browserify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" - dependencies: - setimmediate "^1.0.4" - -tmp@^0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - dependencies: - os-tmpdir "~1.0.1" - -to-absolute-glob@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" - dependencies: - extend-shallow "^2.0.1" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-fast-properties@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" - -to-source@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/to-source/-/to-source-2.0.3.tgz#5387f8259cf35762b3e3e9b5c2dcd8e3db9a2d15" - -toggle-selection@^1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.5.tgz#726c703de607193a73c32c7df49cd24950fc574f" - -toposort@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" - -tough-cookie@^2.3.2, tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - -traverse@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-repeated@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" - dependencies: - escape-string-regexp "^1.0.2" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tryit@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -tunnel-agent@^0.4.0, tunnel-agent@^0.4.3, tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" - -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" - -type-is@~1.6.14: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - -typedarray-to-buffer@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz#1017b32d984ff556eba100f501589aba1ace2e04" - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -u2f-api-polyfill@0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/u2f-api-polyfill/-/u2f-api-polyfill-0.4.3.tgz#b7ad165a6f962558517a867c5c4bf9399fcf7e98" - -u2f-api@0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.0.9.tgz#bded457ba5a9a9ee9b58b3de291f8c1f8feacb7a" - -ua-parser-js@^0.7.9: - version "0.7.12" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" - -uglify-js@2.8.16, uglify-js@2.8.x, uglify-js@^2.6, uglify-js@^2.7.5: - version "2.8.16" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.16.tgz#d286190b6eefc6fd65eb0ecac6551e0b0e8839a4" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - -uniqid@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" - dependencies: - macaddress "^0.2.8" - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - -unique-concat@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/unique-concat/-/unique-concat-0.2.2.tgz#9210f9bdcaacc5e1e3929490d7c019df96f18712" - -unique-stream@^2.0.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" - dependencies: - json-stable-stringify "^1.0.0" - through2-filter "^2.0.0" - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -unzip-response@^1.0.0, unzip-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - -url-loader@0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.7.tgz#67e8779759f8000da74994906680c943a9b0925d" - dependencies: - loader-utils "0.2.x" - mime "1.2.x" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -url-regex@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" - dependencies: - ip-regex "^1.0.1" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - dependencies: - os-homedir "^1.0.0" - -useragent.js@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/useragent.js/-/useragent.js-0.5.6.tgz#a76aef101e2483702523ff6fb58a400af77e22a9" - -utf8@2.1.2, utf8@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -util@0.10.3, "util@>=0.10.3 <1", util@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - -utila@~0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - -uuid@3.0.0, uuid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" - -uuid@^2.0.1, uuid@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - -v8flags@^2.0.10: - version "2.0.12" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.12.tgz#73235d9f7176f8e8833fb286795445f7938d84e5" - dependencies: - user-home "^1.1.1" - -vali-date@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" - -valid-url@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" - -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -validator@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/validator/-/validator-4.0.2.tgz#70a1c2525ec4744e409971c1b298aa69a7534251" - -validator@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-6.2.0.tgz#b2cccdc49ff0f4b8ee4e61dba2ddd3dde13f23e7" - -vary@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - -vendors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" - -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" - dependencies: - extsprintf "1.0.2" - -vinyl-assign@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/vinyl-assign/-/vinyl-assign-1.2.1.tgz#4d198891b5515911d771a8cd9c5480a46a074a45" - dependencies: - object-assign "^4.0.1" - readable-stream "^2.0.0" - -vinyl-fs@^2.2.0: - version "2.4.4" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" - dependencies: - duplexify "^3.2.0" - glob-stream "^5.3.2" - graceful-fs "^4.0.0" - gulp-sourcemaps "1.6.0" - is-valid-glob "^0.3.0" - lazystream "^1.0.0" - lodash.isequal "^4.0.0" - merge-stream "^1.0.0" - mkdirp "^0.5.0" - object-assign "^4.0.0" - readable-stream "^2.0.4" - strip-bom "^2.0.0" - strip-bom-stream "^1.0.0" - through2 "^2.0.0" - through2-filter "^2.0.0" - vali-date "^1.0.0" - vinyl "^1.0.0" - -vinyl@^0.4.3: - version "0.4.6" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" - dependencies: - clone "^0.2.0" - clone-stats "^0.0.1" - -vinyl@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vinyl@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - dependencies: - indexof "0.0.1" - -w3c-blob@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/w3c-blob/-/w3c-blob-0.0.1.tgz#b0cd352a1a50f515563420ffd5861f950f1d85b8" - -ware@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" - dependencies: - wrap-fn "^0.1.0" - -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - dependencies: - loose-envify "^1.0.0" - -watchpack@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" - dependencies: - async "^2.1.2" - chokidar "^1.4.3" - graceful-fs "^4.1.2" - -web3@0.17.0-beta: - version "0.17.0-beta" - resolved "https://registry.yarnpkg.com/web3/-/web3-0.17.0-beta.tgz#57af38245bff7a32099f7ce5780fad5bbc00da5b" - dependencies: - bignumber.js "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" - crypto-js "^3.1.4" - utf8 "^2.1.1" - xmlhttprequest "*" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - -webidl-conversions@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0" - -webpack-bundle-size-analyzer@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-size-analyzer/-/webpack-bundle-size-analyzer-2.5.0.tgz#939ea465e4559353a9fce40af511820f216a9c80" - dependencies: - commander "^2.7.1" - filesize "^3.1.2" - humanize "0.0.9" - -webpack-dev-middleware@1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893" - dependencies: - memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - -webpack-error-notification@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/webpack-error-notification/-/webpack-error-notification-0.1.6.tgz#ebfcbd4ef46b83466b59c12fde8790168f47a257" - -webpack-hot-middleware@2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.17.1.tgz#0c8fbf6f93ff29c095d684b07ab6d6c0f2f951d7" - dependencies: - ansi-html "0.0.7" - html-entities "^1.2.0" - querystring "^0.2.0" - strip-ansi "^3.0.0" - -webpack-sources@^0.1.0, webpack-sources@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" - dependencies: - source-list-map "~0.1.7" - source-map "~0.5.3" - -webpack@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" - dependencies: - acorn "^4.0.4" - acorn-dynamic-import "^2.0.0" - ajv "^4.7.0" - ajv-keywords "^1.1.1" - async "^2.1.2" - enhanced-resolve "^3.0.0" - interpret "^1.0.0" - json-loader "^0.5.4" - loader-runner "^2.3.0" - loader-utils "^0.2.16" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^3.1.0" - tapable "~0.2.5" - uglify-js "^2.7.5" - watchpack "^1.2.0" - webpack-sources "^0.1.4" - yargs "^6.0.0" - -webrtc-adapter@^2.0.8: - version "2.1.0" - resolved "https://registry.yarnpkg.com/webrtc-adapter/-/webrtc-adapter-2.1.0.tgz#612b5bc6ce8e73c9d0660038a21f9255a867bf3e" - dependencies: - sdp "^1.0.0" - -websocket@1.0.24: - version "1.0.24" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.24.tgz#74903e75f2545b6b2e1de1425bc1c905917a1890" - dependencies: - debug "^2.2.0" - nan "^2.3.3" - typedarray-to-buffer "^3.1.2" - yaeti "^0.0.6" - -whatwg-encoding@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" - dependencies: - iconv-lite "0.4.13" - -whatwg-fetch@2.0.1, whatwg-fetch@>=0.10.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.1.tgz#078b9461bbe91cea73cbce8bb122a05f9e92b772" - -whatwg-url@^4.3.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.7.0.tgz#202035ac1955b087cdd20fa8b58ded3ab1cd2af5" - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - -which@1, which@^1.1.1, which@^1.2.9: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" - dependencies: - string-width "^1.0.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - -wordwrap@0.0.2, wordwrap@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -worker-loader@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-0.8.0.tgz#13582960dcd7d700dc829d3fd252a7561696167e" - dependencies: - loader-utils "^1.0.2" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-fn@^0.1.0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845" - dependencies: - co "3.1.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write-file-atomic@^1.1.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write-file-stdout@0.0.2, write-file-stdout@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/write-file-stdout/-/write-file-stdout-0.0.2.tgz#c252d7c7c5b1b402897630e3453c7bfe690d9ca1" - -write-json-file@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-1.2.0.tgz#2d5dfe96abc3c889057c93971aa4005efb548134" - dependencies: - graceful-fs "^4.1.2" - mkdirp "^0.5.1" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - sort-keys "^1.1.1" - write-file-atomic "^1.1.2" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - dependencies: - mkdirp "^0.5.1" - -xml-char-classes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" - -xml-name-validator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - -xmlhttprequest@*: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - -xss-filters@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/xss-filters/-/xss-filters-1.2.7.tgz#59fa1de201f36f2f3470dcac5f58ccc2830b0a9a" - -xtend@4.0.1, "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - -yallist@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - dependencies: - camelcase "^3.0.0" - -yargs@6.6.0, yargs@^6.0.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@^1.2.6: - version "1.3.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.3.3.tgz#054de8b61f22eefdb7207059eaef9d6b83fb931a" - -yargs@^3.5.4, yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yargs@^4.7.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" - -yarn@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-0.21.3.tgz#8dda3a63c798b383cfa577452c2b3cb3e4aa87e0" - dependencies: - babel-runtime "^6.0.0" - bytes "^2.4.0" - camelcase "^3.0.0" - chalk "^1.1.1" - cmd-shim "^2.0.1" - commander "^2.9.0" - death "^1.0.0" - debug "^2.2.0" - defaults "^1.0.3" - detect-indent "^5.0.0" - ini "^1.3.4" - inquirer "^3.0.1" - invariant "^2.2.0" - is-builtin-module "^1.0.0" - is-ci "^1.0.10" - leven "^2.0.0" - loud-rejection "^1.2.0" - minimatch "^3.0.3" - mkdirp "^0.5.1" - node-emoji "^1.0.4" - node-gyp "^3.2.1" - object-path "^0.11.2" - proper-lockfile "^2.0.0" - read "^1.0.7" - request "^2.75.0" - request-capture-har "^1.1.4" - rimraf "^2.5.0" - roadrunner "^1.1.0" - semver "^5.1.0" - strip-bom "^3.0.0" - tar "^2.2.1" - tar-stream "^1.5.2" - validate-npm-package-license "^3.0.1" - -yauzl@^2.2.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.7.0.tgz#e21d847868b496fc29eaec23ee87fdd33e9b2bce" - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.0.1" - -zxcvbn@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/zxcvbn/-/zxcvbn-4.4.1.tgz#2381aadd7f078a25a86b215327562647b80aa8ac" diff --git a/js/package-lock.json b/js/package-lock.json index a9a3d1d6e..e5c6899a8 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@parity/abi": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@parity/abi/-/abi-2.0.17.tgz", - "integrity": "sha512-6SMTB3x9o/7KIWCm8YHKHSxiTcchK8WXvsb/YCJirfNF5my0tlZot4QcBKZbjrbevPGmwcUv1/gDckQ1GRqT+Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@parity/abi/-/abi-2.1.1.tgz", + "integrity": "sha512-AWd1Lnsau8DvEihzoGg3xCSOIHFqf1tsn14wHVCRv7O5BcCI+6Ww/g4iLjdYKGLjtMKtxdQiUblCcIhaZrqmpQ==", "requires": { "bignumber.js": "3.0.1", "js-sha3": "0.5.5", @@ -15,24 +15,21 @@ } }, "@parity/api": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@parity/api/-/api-2.0.17.tgz", - "integrity": "sha512-zffiegquPQLfshhOV7s3ULolRizO41xUIgCTCMbOICS9e9QSxdfE789KEFbgA+Wci7xVRzUCDWRbm2xbzvHLmg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@parity/api/-/api-2.1.3.tgz", + "integrity": "sha512-M+/9mGQ6Th6LRIXetUHQQqsqSE//XAd/p5I/jrhKqV9dW73dwTIKW/xlPWPi/JwbRiTehbliJKmrt8vsOtvkww==", "requires": { - "@parity/abi": "2.0.17", - "@parity/jsonrpc": "2.0.18", + "@parity/abi": "2.1.1", + "@parity/jsonrpc": "2.1.2", "@parity/wordlist": "1.1.0", "bignumber.js": "3.0.1", "blockies": "0.0.2", "es6-error": "4.0.2", - "ethereumjs-tx": "1.3.3", + "es6-promise": "4.1.1", "eventemitter3": "2.0.3", "isomorphic-fetch": "2.2.1", "js-sha3": "0.5.5", - "keythereum": "0.4.6", "lodash": "4.17.4", - "node-fetch": "1.6.3", - "secp256k1": "3.2.5", "store": "2.0.12" }, "dependencies": { @@ -118,9 +115,9 @@ "@parity/dapp-playground": { "version": "github:paritytech/dapp-playground#e136730fa64aceae2d7e0d2cd2aeea24d22b30f3", "requires": { - "@parity/api": "2.0.17", - "@parity/shared": "2.0.17", - "@parity/ui": "2.0.47" + "@parity/api": "2.1.3", + "@parity/shared": "2.2.5", + "@parity/ui": "2.2.6" } }, "@parity/dapp-registry": { @@ -135,9 +132,9 @@ "@parity/dapp-signer": { "version": "github:paritytech/dapp-signer#96514150d210530eb3261399de84874b80a71f60", "requires": { - "@parity/api": "2.0.17", - "@parity/shared": "2.0.17", - "@parity/ui": "2.0.47" + "@parity/api": "2.1.3", + "@parity/shared": "2.2.5", + "@parity/ui": "2.2.6" } }, "@parity/dapp-status": { @@ -165,35 +162,30 @@ } }, "@parity/etherscan": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@parity/etherscan/-/etherscan-2.0.17.tgz", - "integrity": "sha512-N5stxDCdKnfnGc54PrRCeq+zXG6Z7kJkefj5ULGaIGebERv9kN0ci0wXOL6/PK8QKVVU0wUs3n+CG3Gm7PVcjg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@parity/etherscan/-/etherscan-2.1.3.tgz", + "integrity": "sha512-GtQMaE8t7PDOcz/K4Ud+Z6EELB47+qG5V6R7iTJ4DcueXVgiMAXK5OiNeKF3Qjd1/M4FIJdFm5NTSdC7bR38+Q==", "requires": { - "@parity/api": "2.0.17", + "@parity/api": "2.1.3", "bignumber.js": "3.0.1", "es6-promise": "4.1.1", - "node-fetch": "1.6.3", + "node-fetch": "1.7.3", "qs": "6.5.1", "whatwg-fetch": "2.0.3" - }, - "dependencies": { - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - } } }, "@parity/jsonrpc": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@parity/jsonrpc/-/jsonrpc-2.0.18.tgz", - "integrity": "sha512-PlaRg/bvNRw+HoomyQpBVv0kE4BUw4S1sUUk2J/NikQ9OdmsfMAU8Slyj6p0d+QNvSMMUzZD6gYWlzVj0uhw7Q==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@parity/jsonrpc/-/jsonrpc-2.1.2.tgz", + "integrity": "sha512-JN5MTZO9d27ZMLuibnYWri2Is0p5ZM7dAXafJNWBKGe1sMBDqQA44Sz6La4Baem2PTgjWAlWYjeD78SXx+9mYA==" }, "@parity/ledger": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@parity/ledger/-/ledger-2.0.17.tgz", - "integrity": "sha512-sE4FTJ9lWaBDqGfoMNNsPbgXx5NU0utYKnfmMzhdaWs7qhj/7psvMXmGLYLT7IbKfgVF4tlQcAh3BjkH3v5wRg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@parity/ledger/-/ledger-2.1.2.tgz", + "integrity": "sha512-NmpL41jKAJdypfPO8IlSeqKmmQt6IOFF9Ke0J6m85P3uTxDD0pGXEWAIrDo289UGSV3aoUrEUk4Xys2K4lrFhA==", "requires": { + "bignumber.js": "3.0.1", + "ethereumjs-tx": "1.3.3", "u2f-api": "0.0.9", "u2f-api-polyfill": "0.4.3" } @@ -211,28 +203,21 @@ "version": "github:paritytech/plugin-signer-qr#8d937dd5f5d726fb22be72967fd9a472fa467bfd" }, "@parity/shapeshift": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@parity/shapeshift/-/shapeshift-2.0.17.tgz", - "integrity": "sha512-zgNV+fqrjT83ksDYUD6rfITDiVq4E8L0kwNyftanlJZ+5oW4EdutU3n7kBMIA0bfaiS0W/py7DX7XN8hEmCXNw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@parity/shapeshift/-/shapeshift-2.1.2.tgz", + "integrity": "sha512-Ea2q/XY1N2LN8VZkBEsPb6+Aou268qabozlw9JM145acZNaOx+PDfw9+I7sQQqTZ00uKrJqsTSjPbdSQy1m9KA==", "requires": { "es6-promise": "4.1.1", - "node-fetch": "1.6.3", + "node-fetch": "1.7.3", "whatwg-fetch": "2.0.3" - }, - "dependencies": { - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - } } }, "@parity/shared": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@parity/shared/-/shared-2.0.17.tgz", - "integrity": "sha512-gChwaiVLHClSd9Qkp0d8Cw/bZfCVVLTzvQ31SYqrVK02tU7JRl7e41ABMI2UQgsHjH+K5u16jZnK08m4RmP6gw==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@parity/shared/-/shared-2.2.5.tgz", + "integrity": "sha512-3yu0I3bMCe9Tp8iB/854gUY0vIR0ZlF6/xdqqaY2U20aclLCdIPI19O1NQ0ZdCf2UN4U444QXcXWgXIhzh4+VA==", "requires": { - "@parity/ledger": "2.0.17", + "@parity/ledger": "2.1.2", "eventemitter3": "2.0.3", "loglevel": "1.4.1", "mobx": "2.6.4", @@ -249,13 +234,13 @@ } }, "@parity/ui": { - "version": "2.0.47", - "resolved": "https://registry.npmjs.org/@parity/ui/-/ui-2.0.47.tgz", - "integrity": "sha512-iti5HmmFH2Sm909wqBML6uw+cKe3tU89EsQGqmTI7O/9W8JYMT0sc0tVupxlkLfsp6wj2C6Es2CmhOb1cU4C2g==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@parity/ui/-/ui-2.2.6.tgz", + "integrity": "sha512-QBvAoD7sjrGCCWet/nb25Md3kub/86x/kim4CYse0qVnsc46myWLB4ijURSXhWnGUaeVJEeQLWr8usSIRk9iIg==", "requires": { - "@parity/api": "2.0.17", - "@parity/etherscan": "2.0.17", - "@parity/shared": "2.0.17", + "@parity/api": "2.1.3", + "@parity/etherscan": "2.1.3", + "@parity/shared": "2.2.5", "bignumber.js": "3.0.1", "brace": "0.9.0", "date-difference": "1.0.0", @@ -343,9 +328,9 @@ } }, "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", "dev": true }, "acorn-dynamic-import": { @@ -484,23 +469,6 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, - "archive-type": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", - "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", - "dev": true, - "requires": { - "file-type": "3.9.0" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - } - } - }, "are-we-there-yet": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", @@ -606,9 +574,9 @@ "dev": true }, "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -644,9 +612,9 @@ "dev": true }, "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { "lodash": "4.17.4" @@ -658,12 +626,6 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "async-each-series": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", - "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -682,7 +644,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000750", + "caniuse-db": "1.0.30000760", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -695,7 +657,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000750", + "caniuse-db": "1.0.30000760", "electron-to-chromium": "1.3.27" } } @@ -1600,7 +1562,7 @@ "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.5.1", + "browserslist": "2.8.0", "invariant": "2.2.2", "semver": "5.4.1" } @@ -1860,12 +1822,6 @@ "tweetnacl": "0.14.5" } }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", @@ -1877,97 +1833,6 @@ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-3.0.1.tgz", "integrity": "sha1-gHZS0Q453jfp40lyR+3HmLt0b3Y=" }, - "bin-build": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", - "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", - "dev": true, - "requires": { - "archive-type": "3.2.0", - "decompress": "3.0.0", - "download": "4.4.3", - "exec-series": "1.0.3", - "rimraf": "2.6.2", - "tempfile": "1.1.1", - "url-regex": "3.2.0" - }, - "dependencies": { - "tempfile": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", - "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2", - "uuid": "2.0.3" - } - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "bin-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", - "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", - "dev": true, - "requires": { - "executable": "1.1.0" - } - }, - "bin-version": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", - "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", - "dev": true, - "requires": { - "find-versions": "1.2.1" - } - }, - "bin-version-check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", - "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", - "dev": true, - "requires": { - "bin-version": "1.0.4", - "minimist": "1.2.0", - "semver": "4.3.6", - "semver-truncate": "1.1.2" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - } - } - }, - "bin-wrapper": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", - "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", - "dev": true, - "requires": { - "bin-check": "2.0.0", - "bin-version-check": "2.1.0", - "download": "4.4.3", - "each-async": "1.1.1", - "lazy-req": "1.1.0", - "os-filter-obj": "1.0.3" - } - }, "binary-extensions": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", @@ -2157,12 +2022,12 @@ } }, "browserslist": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.5.1.tgz", - "integrity": "sha512-jAvM2ku7YDJ+leAq3bFH1DE0Ylw+F+EQDq4GkqZfgPEqpWYw9ofQH85uKSB9r3Tv7XDbfqVtE+sdvKJW7IlPJA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.8.0.tgz", + "integrity": "sha512-iiWHM1Et6Q4TQpB7Ar6pxuM3TNMXasVJY4Y/oh3q38EwR3Z+IdZ9MyVf7PI4MJFB4xpwMcZgs9bEUnPG2E3TCA==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000750", + "caniuse-lite": "1.0.30000760", "electron-to-chromium": "1.3.27" } }, @@ -2183,32 +2048,6 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "buffer-to-vinyl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", - "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", - "dev": true, - "requires": { - "file-type": "3.9.0", - "readable-stream": "2.3.3", - "uuid": "2.0.3", - "vinyl": "1.2.0" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -2284,7 +2123,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000750", + "caniuse-db": "1.0.30000760", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -2295,28 +2134,22 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000750", + "caniuse-db": "1.0.30000760", "electron-to-chromium": "1.3.27" } } } }, "caniuse-db": { - "version": "1.0.30000750", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000750.tgz", - "integrity": "sha1-Px+FySyRNO3ac1aV42nX4XZ1K3U=", + "version": "1.0.30000760", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000760.tgz", + "integrity": "sha1-PqKUc+t4psywny63Osnh3r/sUo0=", "dev": true }, "caniuse-lite": { - "version": "1.0.30000750", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000750.tgz", - "integrity": "sha1-OK0ZqkxtiNo46JANNma047u2XCI=", - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "version": "1.0.30000760", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000760.tgz", + "integrity": "sha1-7HIDlXQvHH7IlH/W3SYE53qPmP8=", "dev": true }, "caseless": { @@ -2325,32 +2158,6 @@ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, - "caw": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz", - "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", - "dev": true, - "requires": { - "get-proxy": "1.1.0", - "is-obj": "1.0.1", - "object-assign": "3.0.0", - "tunnel-agent": "0.4.3" - }, - "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - } - } - }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", @@ -2472,6 +2279,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", + "fsevents": "1.1.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -2485,12 +2293,6 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" }, - "ci-info": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", - "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", - "dev": true - }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -2555,9 +2357,9 @@ } }, "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", "dev": true }, "clone-regexp": { @@ -2570,12 +2372,6 @@ "is-supported-regexp-flag": "1.0.0" } }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -2607,15 +2403,15 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "1.0.2", - "color-convert": "1.9.0", + "clone": "1.0.3", + "color-convert": "1.9.1", "color-string": "0.3.0" } }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "1.1.3" @@ -2781,9 +2577,9 @@ } }, "connect-history-api-fallback": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.4.0.tgz", - "integrity": "sha1-PbJPlz9LkjsOgvYZzg3wJBHKYj0=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", "dev": true }, "console-browserify": { @@ -2800,12 +2596,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", - "dev": true - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2978,15 +2768,6 @@ "elliptic": "6.4.0" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "1.0.0" - } - }, "create-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", @@ -3062,9 +2843,9 @@ } }, "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { "browserify-cipher": "1.0.0", @@ -3076,7 +2857,8 @@ "inherits": "2.0.3", "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "randombytes": "2.0.5", + "randomfill": "1.0.3" } }, "crypto-js": { @@ -3124,15 +2906,6 @@ "through2": "0.6.5" }, "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -3140,9 +2913,9 @@ "dev": true }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -3165,20 +2938,6 @@ "requires": { "readable-stream": "1.0.34", "xtend": "4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - } } } } @@ -3449,12 +3208,6 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3468,267 +3221,6 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "decompress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", - "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", - "dev": true, - "requires": { - "buffer-to-vinyl": "1.1.0", - "concat-stream": "1.6.0", - "decompress-tar": "3.1.0", - "decompress-tarbz2": "3.1.0", - "decompress-targz": "3.1.0", - "decompress-unzip": "3.4.0", - "stream-combiner2": "1.1.1", - "vinyl-assign": "1.2.1", - "vinyl-fs": "2.4.4" - } - }, - "decompress-tar": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", - "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", - "dev": true, - "requires": { - "is-tar": "1.0.0", - "object-assign": "2.1.1", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } - } - } - }, - "decompress-tarbz2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", - "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", - "dev": true, - "requires": { - "is-bzip2": "1.0.0", - "object-assign": "2.1.1", - "seek-bzip": "1.0.5", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } - } - } - }, - "decompress-targz": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", - "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", - "dev": true, - "requires": { - "is-gzip": "1.0.0", - "object-assign": "2.1.1", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } - } - } - }, - "decompress-unzip": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", - "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", - "dev": true, - "requires": { - "is-zip": "1.0.0", - "read-all-stream": "3.1.0", - "stat-mode": "0.2.2", - "strip-dirs": "1.1.1", - "through2": "2.0.3", - "vinyl": "1.2.0", - "yauzl": "2.4.1" - }, - "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - } - } - }, "deep-eql": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", @@ -3917,7 +3409,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000750", + "caniuse-db": "1.0.30000760", "css-rule-stream": "1.1.0", "duplexer2": "0.0.2", "jsonfilter": "1.1.2", @@ -3936,7 +3428,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000750", + "caniuse-db": "1.0.30000760", "electron-to-chromium": "1.3.27" } }, @@ -3946,15 +3438,6 @@ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -3962,9 +3445,9 @@ "dev": true }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -3996,20 +3479,6 @@ "requires": { "readable-stream": "1.0.34", "xtend": "4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - } } }, "window-size": { @@ -4112,29 +3581,6 @@ "domelementtype": "1.3.0" } }, - "download": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz", - "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", - "dev": true, - "requires": { - "caw": "1.2.0", - "concat-stream": "1.6.0", - "each-async": "1.1.1", - "filenamify": "1.2.1", - "got": "5.7.1", - "gulp-decompress": "1.2.0", - "gulp-rename": "1.2.2", - "is-url": "1.2.2", - "object-assign": "4.1.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "stream-combiner2": "1.1.1", - "vinyl": "1.2.0", - "vinyl-fs": "2.4.4", - "ware": "1.3.0" - } - }, "drbg.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", @@ -4152,34 +3598,38 @@ "dev": true }, "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, "requires": { - "readable-stream": "2.3.3" - } - }, - "duplexify": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", - "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", - "dev": true, - "requires": { - "end-of-stream": "1.4.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" - } - }, - "each-async": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", - "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", - "dev": true, - "requires": { - "onetime": "1.1.0", - "set-immediate-shim": "1.0.1" + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } } }, "ecc-jsbn": { @@ -4257,7 +3707,7 @@ "requires": { "@types/node": "7.0.46", "electron-download": "3.3.0", - "extract-zip": "1.6.5" + "extract-zip": "1.6.6" } }, "electron-download": { @@ -4393,14 +3843,6 @@ "object.values": "1.0.4", "prop-types": "15.5.10", "uuid": "3.1.0" - }, - "dependencies": { - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - } } }, "errno": { @@ -4605,7 +4047,7 @@ "file-entry-cache": "2.0.0", "glob": "7.1.2", "globals": "9.18.0", - "ignore": "3.3.6", + "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "0.12.0", "is-my-json-valid": "2.16.1", @@ -4704,7 +4146,7 @@ "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", "dev": true, "requires": { - "acorn": "5.1.2", + "acorn": "5.2.1", "acorn-jsx": "3.0.1" } }, @@ -4767,7 +4209,7 @@ "ethjs-util": "0.1.4", "keccak": "1.3.0", "rlp": "2.0.0", - "secp256k1": "3.2.5" + "secp256k1": "3.3.1" } }, "ethjs-util": { @@ -4818,37 +4260,6 @@ "safe-buffer": "5.1.1" } }, - "exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "p-finally": "1.0.0", - "pify": "3.0.0", - "rimraf": "2.6.2", - "tempfile": "2.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "exec-series": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", - "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", - "dev": true, - "requires": { - "async-each-series": "1.1.0", - "object-assign": "4.1.1" - } - }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -4873,15 +4284,6 @@ "clone-regexp": "1.0.0" } }, - "executable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", - "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, "exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", @@ -4973,15 +4375,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", "integrity": "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w=" }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -5020,33 +4413,24 @@ "integrity": "sha1-kMqnkHvESfM1AF46x1MrQbAN5hI=", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "loader-utils": "1.1.0", "schema-utils": "0.3.0", - "webpack-sources": "1.0.1" + "webpack-sources": "1.0.2" } }, "extract-zip": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.5.tgz", - "integrity": "sha1-maBnNbbqIOqbcF13ms/8yHz/BEA=", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", "dev": true, "requires": { "concat-stream": "1.6.0", - "debug": "2.2.0", + "debug": "2.6.9", "mkdirp": "0.5.0", "yauzl": "2.4.1" }, "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, "mkdirp": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", @@ -5055,12 +4439,6 @@ "requires": { "minimist": "0.0.8" } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true } } }, @@ -5070,16 +4448,6 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "fancy-log": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", - "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "time-stamp": "1.1.0" - } - }, "fast-deep-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", @@ -5191,35 +4559,12 @@ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-1.3.3.tgz", "integrity": "sha1-zdTETTqiZOrC9o7BZbx5HDSvEjI=" }, - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true - }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, - "filename-reserved-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", - "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", - "dev": true - }, - "filenamify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", - "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", - "dev": true, - "requires": { - "filename-reserved-regex": "1.0.0", - "strip-outer": "1.0.0", - "trim-repeated": "1.0.0" - } - }, "fileset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", @@ -5301,12 +4646,6 @@ "pkg-dir": "2.0.0" } }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -5316,32 +4655,6 @@ "pinkie-promise": "2.0.1" } }, - "find-versions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", - "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", - "dev": true, - "requires": { - "array-uniq": "1.0.3", - "get-stdin": "4.0.1", - "meow": "3.7.0", - "semver-regex": "1.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } - } - }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true - }, "flat-cache": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", @@ -5450,6 +4763,905 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.7.0", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -5521,15 +5733,6 @@ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==" }, - "get-proxy": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", - "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", - "dev": true, - "requires": { - "rc": "1.2.2" - } - }, "get-stdin": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz", @@ -5558,17 +5761,6 @@ } } }, - "gifsicle": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz", - "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, "github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -5607,102 +5799,6 @@ "is-glob": "2.0.1" } }, - "glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", - "dev": true, - "requires": { - "extend": "3.0.1", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" - }, - "dependencies": { - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - } - } - }, "global": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", @@ -5738,38 +5834,6 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, - "glogg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", - "dev": true, - "requires": { - "sparkles": "1.0.0" - } - }, - "got": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", - "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "dev": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer2": "0.1.4", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "node-status-codes": "1.0.0", - "object-assign": "4.1.1", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "timed-out": "3.1.3", - "unzip-response": "1.0.2", - "url-parse-lax": "1.0.0" - } - }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -5787,152 +5851,6 @@ "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", "dev": true }, - "gulp-decompress": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", - "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", - "dev": true, - "requires": { - "archive-type": "3.2.0", - "decompress": "3.0.0", - "gulp-util": "3.0.8", - "readable-stream": "2.3.3" - } - }, - "gulp-rename": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", - "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", - "dev": true - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", - "dev": true, - "requires": { - "convert-source-map": "1.5.0", - "graceful-fs": "4.1.11", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" - }, - "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - } - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.0", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", - "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" - }, - "dependencies": { - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "1.0.0" - } - }, "handle-thing": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", @@ -6036,15 +5954,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "1.0.0" - } - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -6170,7 +6079,7 @@ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "1.0.2" + "whatwg-encoding": "1.0.3" } }, "html-entities": { @@ -6219,7 +6128,7 @@ "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.1.5" + "uglify-js": "3.1.8" }, "dependencies": { "source-map": { @@ -6229,9 +6138,9 @@ "dev": true }, "uglify-js": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.5.tgz", - "integrity": "sha512-tSqlO7/GZHAVSw6mbtJt2kz0ZcUrKUH7Xg92o52aE+gL0r6cXiASZY4dpHqQ7RVGXmoQuPA2qAkG4TkP59f8XA==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.8.tgz", + "integrity": "sha512-1lnTkrJWw6LJ7n43ZyYVXx0eN2PQh0c3Inb0nY/vj5fNfwykXQFif2kvNgm/Bf0ClLA8R6SKaMHFzo9io4Q+vg==", "dev": true, "requires": { "commander": "2.11.0", @@ -6387,26 +6296,6 @@ "integrity": "sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ=", "dev": true }, - "husky": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-0.13.1.tgz", - "integrity": "sha1-Ee/G/BDg7E54l3b2WCvjfXG6TM8=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "find-parent-dir": "0.3.0", - "is-ci": "1.0.10", - "normalize-path": "1.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - } - } - }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -6424,7 +6313,7 @@ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, "requires": { - "postcss": "6.0.13" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -6433,7 +6322,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -6454,9 +6343,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -6488,9 +6377,9 @@ "dev": true }, "ignore": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.6.tgz", - "integrity": "sha512-HrxmNxKTGZ9a3uAl/FNG66Sdt0G9L4TtMbbUQjP1WhGmSj0FOyHvSgx7623aGJvXfPOur8MwmarlHT+37jmzlw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, "ignore-styles": { @@ -6499,128 +6388,6 @@ "integrity": "sha1-tJ7yJ0va/NikiAqWa/440aC/RnE=", "dev": true }, - "image-webpack-loader": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/image-webpack-loader/-/image-webpack-loader-3.2.0.tgz", - "integrity": "sha1-8mMG1gSNOi9ajYROyu3StxSPCk4=", - "dev": true, - "requires": { - "file-loader": "0.9.0", - "imagemin": "5.3.1", - "imagemin-gifsicle": "5.2.0", - "imagemin-mozjpeg": "6.0.0", - "imagemin-optipng": "5.2.1", - "imagemin-pngquant": "5.0.1", - "imagemin-svgo": "5.2.2", - "loader-utils": "0.2.17" - }, - "dependencies": { - "file-loader": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz", - "integrity": "sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=", - "dev": true, - "requires": { - "loader-utils": "0.2.17" - } - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - } - } - }, - "imagemin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-5.3.1.tgz", - "integrity": "sha1-8Zwu7h5xumxlWMUV+fyWaAGJptQ=", - "dev": true, - "requires": { - "file-type": "4.4.0", - "globby": "6.1.0", - "make-dir": "1.1.0", - "p-pipe": "1.2.0", - "pify": "2.3.0", - "replace-ext": "1.0.0" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "imagemin-gifsicle": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz", - "integrity": "sha512-K01m5QuPK+0en8oVhiOOAicF7KjrHlCZxS++mfLI2mV/Ksfq/Y9nCXCWDz6jRv13wwlqe5T7hXT+ji2DnLc2yQ==", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "gifsicle": "3.0.4", - "is-gif": "1.0.0" - } - }, - "imagemin-mozjpeg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-6.0.0.tgz", - "integrity": "sha1-caMqRXqhsmEXpo7u8tmxkMLlCR4=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-jpg": "1.0.0", - "mozjpeg": "4.1.1" - } - }, - "imagemin-optipng": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", - "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-png": "1.1.0", - "optipng-bin": "3.1.4" - } - }, - "imagemin-pngquant": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-5.0.1.tgz", - "integrity": "sha1-2KMp2lU6+iJrEc5i3r4Lfje0OeY=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-png": "1.1.0", - "pngquant-bin": "3.1.1" - } - }, - "imagemin-svgo": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-5.2.2.tgz", - "integrity": "sha1-UBaZ9XiXMKV5IrhzbqFcU/e1WDg=", - "dev": true, - "requires": { - "is-svg": "2.1.0", - "svgo": "0.7.2" - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -6709,9 +6476,9 @@ "dev": true }, "intl-format-cache": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.0.5.tgz", - "integrity": "sha1-tITO/Lk1PzdPJd44mjzuoa8Y18k=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.1.0.tgz", + "integrity": "sha1-BKNp/sv61tpgBbrh8UMzMy3PkxY=" }, "intl-messageformat": { "version": "1.3.0", @@ -6753,12 +6520,6 @@ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "ip-regex": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", - "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", - "dev": true - }, "ipaddr.js": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", @@ -6771,15 +6532,6 @@ "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", "dev": true }, - "is-absolute": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", - "dev": true, - "requires": { - "is-relative": "0.1.3" - } - }, "is-absolute-url": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", @@ -6801,9 +6553,9 @@ } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { @@ -6814,27 +6566,12 @@ "builtin-modules": "1.1.1" } }, - "is-bzip2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", - "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", - "dev": true - }, "is-callable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", "dev": true }, - "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "dev": true, - "requires": { - "ci-info": "1.1.1" - } - }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", @@ -6890,12 +6627,6 @@ "number-is-nan": "1.0.1" } }, - "is-gif": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz", - "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=", - "dev": true - }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", @@ -6905,23 +6636,11 @@ "is-extglob": "1.0.0" } }, - "is-gzip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", - "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", - "dev": true - }, "is-hex-prefixed": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" }, - "is-jpg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.0.tgz", - "integrity": "sha1-KVnBfnNDDbOCZNp1uQ3VTy2G2hw=", - "dev": true - }, "is-my-json-valid": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", @@ -6934,12 +6653,6 @@ "xtend": "4.0.1" } }, - "is-natural-number": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", - "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", - "dev": true - }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -6992,12 +6705,6 @@ "isobject": "3.0.1" } }, - "is-png": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", - "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", - "dev": true - }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -7016,12 +6723,6 @@ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -7036,12 +6737,6 @@ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" }, - "is-relative": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", - "dev": true - }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", @@ -7051,12 +6746,6 @@ "tryit": "1.0.3" } }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -7089,47 +6778,23 @@ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", "dev": true }, - "is-tar": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", - "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", - "dev": true - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-url": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", - "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", - "dev": true - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, - "is-valid-glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", - "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", - "dev": true - }, "is-windows": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", "dev": true }, - "is-zip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", - "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -7151,8 +6816,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.6.3", - "whatwg-fetch": "2.0.1" + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" } }, "isstream": { @@ -7191,7 +6856,7 @@ "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "fileset": "2.0.3", "istanbul-lib-coverage": "1.1.1", "istanbul-lib-hook": "1.1.0", @@ -7368,7 +7033,7 @@ "symbol-tree": "3.2.2", "tough-cookie": "2.3.3", "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.2", + "whatwg-encoding": "1.0.3", "whatwg-url": "4.8.0", "xml-name-validator": "2.0.1" }, @@ -7558,29 +7223,46 @@ "integrity": "sha1-lkojxU5IiUBbSGGlyfBIDUUUHfo=" }, "keythereum": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/keythereum/-/keythereum-0.4.6.tgz", - "integrity": "sha1-D97Hz5OK455eMGGy9uFmd7dmxdo=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/keythereum/-/keythereum-1.0.2.tgz", + "integrity": "sha1-YSukHN4lSxfddzfnUjeubuUWKZI=", "requires": { - "elliptic": "6.4.0", - "ethereumjs-util": "5.1.1", + "keccak": "1.2.0", + "secp256k1": "3.2.5", "sjcl": "1.0.6", - "uuid": "3.0.0", - "validator": "4.0.2" + "uuid": "3.0.0" }, "dependencies": { - "ethereumjs-util": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.1.1.tgz", - "integrity": "sha1-Ei+zjep0fcYrOuv8Nl0b1Ivktz4=", + "keccak": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.2.0.tgz", + "integrity": "sha1-tTYY/HlhtkL25z8VRu7DMp9+/+A=", "requires": { + "bindings": "1.3.0", + "inherits": "2.0.3", + "nan": "2.7.0", + "prebuild-install": "2.3.0" + } + }, + "secp256k1": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.2.5.tgz", + "integrity": "sha1-Dd5bJ+UCFmX23/ynssPgEMbBPJM=", + "requires": { + "bindings": "1.3.0", + "bip66": "1.1.5", "bn.js": "4.11.8", "create-hash": "1.1.3", - "ethjs-util": "0.1.4", - "keccak": "1.3.0", - "rlp": "2.0.0", - "secp256k1": "3.2.5" + "drbg.js": "1.0.1", + "elliptic": "6.4.0", + "nan": "2.7.0", + "prebuild-install": "2.3.0" } + }, + "uuid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz", + "integrity": "sha1-Zyj8BFnEUNeWqZwxg3VpvfZy1yg=" } } }, @@ -7590,7 +7272,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } }, "klaw": { @@ -7614,21 +7296,6 @@ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, - "lazy-req": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", - "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", - "dev": true - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -7778,18 +7445,6 @@ "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", "dev": true }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", @@ -7802,30 +7457,12 @@ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", "dev": true }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, "lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", @@ -7866,15 +7503,6 @@ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "3.0.1" - } - }, "lodash.filter": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", @@ -7972,12 +7600,6 @@ "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", "dev": true }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, "lodash.some": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", @@ -8028,16 +7650,6 @@ "chalk": "1.1.3" } }, - "logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", - "dev": true, - "requires": { - "figures": "1.7.0", - "squeak": "1.3.0" - } - }, "loglevel": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.4.1.tgz", @@ -8078,32 +7690,6 @@ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - }, - "lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "indent-string": "2.1.0", - "longest": "1.0.1", - "meow": "3.7.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } - } - }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", @@ -8268,15 +7854,6 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -8363,7 +7940,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "1.1.8" } @@ -8490,17 +8067,6 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.17.0.tgz", "integrity": "sha1-pMKS4CqsXd77Kabu0k9Rk43Tt08=" }, - "mozjpeg": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-4.1.1.tgz", - "integrity": "sha1-hZAwsk9omlPbm0DwFg2JGVuI/VA=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -8534,50 +8100,6 @@ "minimatch": "3.0.4" } }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - }, - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, "mute-stream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", @@ -8642,9 +8164,12 @@ } }, "node-abi": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.1.tgz", - "integrity": "sha512-6oxV13poCOv7TfGvhsSz6XZWpXeKkdGVh72++cs33OfMh3KAX8lN84dCvmqSETyDXAFcUHtV7eJrgFBoOqZbNQ==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.2.tgz", + "integrity": "sha512-hmUtb8m75RSi7N+zZLYqe75XDvZB+6LyTBPkj2DConvNgQet2e3BIqEwe1LLvqMrfyjabuT5ZOrTioLCH1HTdA==", + "requires": { + "semver": "5.4.1" + } }, "node-dir": { "version": "0.1.17", @@ -8656,9 +8181,9 @@ } }, "node-fetch": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", - "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { "encoding": "0.1.12", "is-stream": "1.1.0" @@ -8681,7 +8206,7 @@ "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", + "crypto-browserify": "3.12.0", "domain-browser": "1.1.7", "events": "1.1.1", "https-browserify": "0.0.1", @@ -8715,12 +8240,6 @@ } } }, - "node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", - "dev": true - }, "noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", @@ -8965,9 +8484,6 @@ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, - "oo7": { - "version": "github:paritytech/oo7#34fdb5991f4e59b2cf84260cab48cec9a57d88c0" - }, "opn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", @@ -9010,27 +8526,6 @@ "wordwrap": "1.0.0" } }, - "optipng-bin": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", - "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, - "ordered-read-streams": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", - "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", - "dev": true, - "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.3" - } - }, "original": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", @@ -9058,12 +8553,6 @@ "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", "dev": true }, - "os-filter-obj": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", - "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", - "dev": true - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -9120,12 +8609,6 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, - "p-pipe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", - "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", - "dev": true - }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -9147,7 +8630,7 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.9.1", + "asn1.js": "4.9.2", "browserify-aes": "1.1.1", "create-hash": "1.1.3", "evp_bytestokey": "1.0.3", @@ -9197,12 +8680,6 @@ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -9337,17 +8814,6 @@ "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", "dev": true }, - "pngquant-bin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-3.1.1.tgz", - "integrity": "sha1-0STZinWpSH9AwWQLTb/Lsr1aH9E=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, "portfinder": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", @@ -9485,7 +8951,7 @@ "dev": true, "requires": { "object-assign": "4.1.1", - "postcss": "6.0.13", + "postcss": "6.0.14", "postcss-value-parser": "3.3.0", "read-cache": "1.0.0", "resolve": "1.5.0" @@ -9497,7 +8963,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -9518,9 +8984,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -9593,7 +9059,7 @@ "dev": true, "requires": { "loader-utils": "1.1.0", - "postcss": "6.0.13", + "postcss": "6.0.14", "postcss-load-config": "1.2.0", "schema-utils": "0.3.0" }, @@ -9604,7 +9070,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -9625,9 +9091,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -9697,7 +9163,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000750", + "caniuse-db": "1.0.30000760", "electron-to-chromium": "1.3.27" } } @@ -9760,7 +9226,7 @@ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "dev": true, "requires": { - "postcss": "6.0.13" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -9769,7 +9235,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -9790,9 +9256,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -9824,7 +9290,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.13" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -9833,7 +9299,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -9854,9 +9320,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -9888,7 +9354,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.13" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -9897,7 +9363,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -9918,9 +9384,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -9952,7 +9418,7 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.13" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -9961,7 +9427,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -9982,9 +9448,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -10015,7 +9481,7 @@ "integrity": "sha512-0DbCNWZSI8SapZkfY1Ni/3019ZQWTe3wair/5tFLzXMi8u8pNWbc+EJDq+ckakylF0WnSrKIlJAd1mG32jsE/A==", "dev": true, "requires": { - "postcss": "6.0.13", + "postcss": "6.0.14", "postcss-selector-parser": "2.2.3" }, "dependencies": { @@ -10025,7 +9491,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -10046,9 +9512,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -10178,7 +9644,7 @@ "integrity": "sha1-1J4IKJfZpIJPImj6kdlp2UPi6nY=", "dev": true, "requires": { - "postcss": "6.0.13" + "postcss": "6.0.14" }, "dependencies": { "ansi-styles": { @@ -10187,7 +9653,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -10208,9 +9674,9 @@ "dev": true }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", @@ -10284,7 +9750,7 @@ "github-from-package": "0.0.0", "minimist": "1.2.0", "mkdirp": "0.5.1", - "node-abi": "2.1.1", + "node-abi": "2.1.2", "noop-logger": "0.1.1", "npmlog": "4.1.2", "os-homedir": "1.0.2", @@ -10535,7 +10001,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -10546,7 +10012,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -10560,6 +10026,16 @@ "safe-buffer": "5.1.1" } }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", @@ -10763,7 +10239,7 @@ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.1.5.tgz", "integrity": "sha1-+Xleo0t5DctdDY73Bg3dvoW/h2M=", "requires": { - "intl-format-cache": "2.0.5", + "intl-format-cache": "2.1.0", "intl-messageformat": "1.3.0", "intl-relativeformat": "1.3.0", "invariant": "2.2.2" @@ -10814,7 +10290,7 @@ "react-qr-reader": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/react-qr-reader/-/react-qr-reader-1.1.3.tgz", - "integrity": "sha1-dDmnZvyZPLj17u/HLCnblh1AswI=", + "integrity": "sha512-ruBF8KaSwUW9nbzjO4rA7/HOCGYZuNUz9od7uBRy8SRBi24nwxWWmwa2z8R6vPGDRglA0y2Qk1aVBuC1olTnHw==", "requires": { "jsqr": "git+https://github.com/JodusNodus/jsQR.git#5ba1acefa1cbb9b2bc92b49f503f2674e2ec212b", "prop-types": "15.5.10", @@ -10894,16 +10370,6 @@ "warning": "3.0.0" } }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1", - "readable-stream": "2.3.3" - } - }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -11283,12 +10749,6 @@ "is-finite": "1.0.2" } }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, "request": { "version": "2.79.0", "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", @@ -11314,7 +10774,7 @@ "stringstream": "0.0.5", "tough-cookie": "2.3.3", "tunnel-agent": "0.4.3", - "uuid": "3.0.0" + "uuid": "3.1.0" }, "dependencies": { "extend": { @@ -11491,9 +10951,9 @@ "integrity": "sha1-jgOPbdsUvXZa4fS1IW4SCUUR4NA=" }, "secp256k1": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.2.5.tgz", - "integrity": "sha1-Dd5bJ+UCFmX23/ynssPgEMbBPJM=", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.3.1.tgz", + "integrity": "sha512-lygjgfjzjBHblEDDkppUF5KK1EeVk6P/Dv2MsJZpYIR3vW5TKFRexOFkf0hHy9J5YxEpjQZ6x98Y3XQpMQO/vA==", "requires": { "bindings": "1.3.0", "bip66": "1.1.5", @@ -11502,27 +10962,8 @@ "drbg.js": "1.0.1", "elliptic": "6.4.0", "nan": "2.7.0", - "prebuild-install": "2.3.0" - } - }, - "seek-bzip": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", - "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", - "dev": true, - "requires": { - "commander": "2.8.1" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - } + "prebuild-install": "2.3.0", + "safe-buffer": "5.1.1" } }, "select-hose": { @@ -11575,21 +11016,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, - "semver-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", - "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", - "dev": true - }, - "semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "requires": { - "semver": "5.4.1" - } - }, "send": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/send/-/send-0.14.2.tgz", @@ -11852,7 +11278,7 @@ "faye-websocket": "0.11.1", "inherits": "2.0.3", "json3": "3.3.2", - "url-parse": "1.1.9" + "url-parse": "1.2.0" }, "dependencies": { "faye-websocket": { @@ -11950,12 +11376,6 @@ } } }, - "sparkles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", - "dev": true - }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -12066,17 +11486,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "console-stream": "0.1.1", - "lpad-align": "1.1.2" - } - }, "sshpk": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", @@ -12107,12 +11516,6 @@ "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=", "dev": true }, - "stat-mode": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", - "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", - "dev": true - }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", @@ -12144,16 +11547,6 @@ "through": "2.3.8" } }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "requires": { - "duplexer2": "0.1.4", - "readable-stream": "2.3.3" - } - }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", @@ -12167,12 +11560,6 @@ "xtend": "4.0.1" } }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -12233,44 +11620,6 @@ "is-utf8": "0.2.1" } }, - "strip-bom-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", - "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", - "dev": true, - "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" - } - }, - "strip-dirs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", - "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "get-stdin": "4.0.1", - "is-absolute": "0.1.7", - "is-natural-number": "2.1.1", - "minimist": "1.2.0", - "sum-up": "1.0.3" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -12305,15 +11654,6 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, - "strip-outer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz", - "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, "style-loader": { "version": "0.18.2", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", @@ -12355,7 +11695,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000750", + "caniuse-db": "1.0.30000760", "electron-to-chromium": "1.3.27" } }, @@ -12398,7 +11738,7 @@ "globby": "6.1.0", "globjoin": "0.1.4", "html-tags": "1.2.0", - "ignore": "3.3.6", + "ignore": "3.3.7", "imurmurhash": "0.1.4", "known-css-properties": "0.2.0", "lodash": "4.17.4", @@ -12439,9 +11779,9 @@ } }, "ajv-keywords": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, "ansi-regex": { @@ -12456,7 +11796,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "balanced-match": { @@ -12546,7 +11886,7 @@ "dev": true, "requires": { "ajv": "5.3.0", - "ajv-keywords": "2.1.0", + "ajv-keywords": "2.1.1", "chalk": "2.3.0", "lodash": "4.17.4", "slice-ansi": "1.0.0", @@ -12583,15 +11923,6 @@ "postcss": "5.2.18" } }, - "sum-up": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", - "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, "sumchecker": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz", @@ -12743,30 +12074,6 @@ "xtend": "4.0.1" } }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "requires": { - "temp-dir": "1.0.0", - "uuid": "3.1.0" - }, - "dependencies": { - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - } - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -12830,28 +12137,6 @@ } } }, - "through2-filter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", - "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", - "dev": true, - "requires": { - "through2": "2.0.3", - "xtend": "4.0.1" - }, - "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - } - } - }, "thunky": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", @@ -12859,15 +12144,9 @@ "dev": true }, "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "timed-out": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", - "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", "dev": true }, "timers-browserify": { @@ -12879,15 +12158,6 @@ "setimmediate": "1.0.5" } }, - "to-absolute-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", - "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1" - } - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -12941,15 +12211,6 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -13106,7 +12367,7 @@ "requires": { "source-map": "0.5.7", "uglify-js": "2.8.29", - "webpack-sources": "1.0.1" + "webpack-sources": "1.0.2" }, "dependencies": { "camelcase": { @@ -13190,16 +12451,6 @@ "integrity": "sha1-khD5vcqsxeHjkpSQ18AZ35bxhxI=", "dev": true }, - "unique-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", - "dev": true, - "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" - } - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -13266,9 +12517,9 @@ } }, "url-parse": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", - "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", "dev": true, "requires": { "querystringify": "1.0.0", @@ -13283,24 +12534,6 @@ } } }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "1.0.4" - } - }, - "url-regex": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", - "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", - "dev": true, - "requires": { - "ip-regex": "1.0.3" - } - }, "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -13352,9 +12585,10 @@ "dev": true }, "uuid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz", - "integrity": "sha1-Zyj8BFnEUNeWqZwxg3VpvfZy1yg=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true }, "v8flags": { "version": "2.1.1", @@ -13365,12 +12599,6 @@ "user-home": "1.1.1" } }, - "vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", @@ -13380,11 +12608,6 @@ "spdx-expression-parse": "1.0.4" } }, - "validator": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/validator/-/validator-4.0.2.tgz", - "integrity": "sha1-cKHCUl7EdE5AmXHBspiqaadTQlE=" - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -13416,72 +12639,6 @@ } } }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, - "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - }, - "dependencies": { - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - } - } - }, - "vinyl-assign": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", - "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "readable-stream": "2.3.3" - } - }, - "vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", - "dev": true, - "requires": { - "duplexify": "3.5.1", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.3", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" - }, - "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - } - } - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -13496,15 +12653,6 @@ "resolved": "https://registry.npmjs.org/w3c-blob/-/w3c-blob-0.0.1.tgz", "integrity": "sha1-sM01KhpQ9RVWNCD/1YYflQ8dhbg=" }, - "ware": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", - "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", - "dev": true, - "requires": { - "wrap-fn": "0.1.5" - } - }, "warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", @@ -13519,7 +12667,7 @@ "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "chokidar": "1.7.0", "graceful-fs": "4.1.11" } @@ -13561,11 +12709,11 @@ "integrity": "sha512-qeUx4nIbeLL53qqNTs3kObPBMkUVDrOjEfp/hTvMlx21qL2MsGNr8/tXCoX/lS12dLl9qtZaXv2qfBEctPScDg==", "dev": true, "requires": { - "acorn": "5.1.2", + "acorn": "5.2.1", "acorn-dynamic-import": "2.0.2", "ajv": "5.3.0", - "ajv-keywords": "2.1.0", - "async": "2.5.0", + "ajv-keywords": "2.1.1", + "async": "2.6.0", "enhanced-resolve": "3.4.1", "escope": "3.6.0", "interpret": "1.0.4", @@ -13581,7 +12729,7 @@ "tapable": "0.2.8", "uglifyjs-webpack-plugin": "0.4.6", "watchpack": "1.4.0", - "webpack-sources": "1.0.1", + "webpack-sources": "1.0.2", "yargs": "8.0.2" }, "dependencies": { @@ -13598,9 +12746,9 @@ } }, "ajv-keywords": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, "ansi-regex": { @@ -13783,14 +12931,6 @@ "path-is-absolute": "1.0.1", "range-parser": "1.2.0", "time-stamp": "2.0.0" - }, - "dependencies": { - "time-stamp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", - "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", - "dev": true - } } }, "webpack-dev-server": { @@ -13803,7 +12943,7 @@ "bonjour": "3.5.0", "chokidar": "1.7.0", "compression": "1.7.1", - "connect-history-api-fallback": "1.4.0", + "connect-history-api-fallback": "1.5.0", "del": "3.0.0", "express": "4.14.1", "html-entities": "1.2.1", @@ -13921,13 +13061,13 @@ } }, "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.2.tgz", + "integrity": "sha512-Y7UddMCv6dGjy81nBv6nuQeFFIt5aalHm7uyDsAsW86nZwfOVPGRr3XMjEQLaT+WKo8rlzhC9qtbJvYKLtAwaw==", "dev": true, "requires": { "source-list-map": "2.0.0", - "source-map": "0.5.7" + "source-map": "0.6.1" }, "dependencies": { "source-list-map": { @@ -13935,6 +13075,12 @@ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -13975,26 +13121,18 @@ "dev": true }, "whatwg-encoding": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.2.tgz", - "integrity": "sha512-9WQ+6BvuD7A1vaGMqMjyR5zhHnR/VXKrs2WHobV/YCfeKXKEk0SJbgwg4kjdpRRrenEQbYwZ/P9vQAVUEVAzUg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", "dev": true, "requires": { - "iconv-lite": "0.4.13" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", - "dev": true - } + "iconv-lite": "0.4.19" } }, "whatwg-fetch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.1.tgz", - "integrity": "sha1-B4uUYbvpHOpzy86LsSKgX56St3I=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" }, "whatwg-url": { "version": "4.8.0", @@ -14062,23 +13200,6 @@ "strip-ansi": "3.0.1" } }, - "wrap-fn": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", - "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", - "dev": true, - "requires": { - "co": "3.1.0" - }, - "dependencies": { - "co": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", - "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", - "dev": true - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/js/package.json b/js/package.json index 3ff5a08ca..3240e9a13 100644 --- a/js/package.json +++ b/js/package.json @@ -21,9 +21,9 @@ "Parity" ], "scripts": { - "build": "npm run build:lib && npm run build:app && npm run build:embed", - "build:app": "webpack --progress --config webpack/app", - "build:lib": "webpack --progress --config webpack/libraries", + "build": "npm run build:inject && npm run build:app && npm run build:embed", + "build:app": "webpack --config webpack/app", + "build:inject": "webpack --config webpack/inject", "build:embed": "cross-env EMBED=1 node webpack/embed", "build:i18n": "npm run clean && npm run build && babel-node ./scripts/build-i18n.js", "ci:build": "cross-env NODE_ENV=production npm run build", @@ -41,10 +41,7 @@ "start:app": "node webpack/dev.server", "start:electron": "npm run build:app && electron .build/", "test": "cross-env NODE_ENV=test mocha --compilers ejs:ejsify 'src/**/*.spec.js'", - "test:coverage": "cross-env NODE_ENV=test istanbul cover _mocha -- --compilers ejs:ejsify 'src/**/*.spec.js'", - "test:e2e": "cross-env NODE_ENV=test mocha 'src/**/*.e2e.js'", - "test:npm": "(cd .npmjs && npm i) && node test/npmParity && node test/npmJsonRpc && (rimraf .npmjs/node_modules)", - "prepush": "npm run lint:cached" + "test:coverage": "cross-env NODE_ENV=test istanbul cover _mocha -- --compilers ejs:ejsify 'src/**/*.spec.js'" }, "devDependencies": { "babel-cli": "6.26.0", @@ -94,9 +91,7 @@ "html-loader": "0.4.4", "html-webpack-plugin": "2.30.1", "http-proxy-middleware": "0.17.3", - "husky": "0.13.1", "ignore-styles": "5.0.1", - "image-webpack-loader": "3.2.0", "istanbul": "1.0.0-alpha.2", "jsdom": "9.11.0", "json-loader": "0.5.4", @@ -135,18 +130,8 @@ "yargs": "6.6.0" }, "dependencies": { - "@parity/abi": "^2", - "@parity/api": "^2", - "@parity/jsonrpc": "^2", - "@parity/etherscan": "^2", - "@parity/ledger": "^2", - "@parity/shapeshift": "^2", - "@parity/shared": "^2", - "@parity/ui": "^2", - "@parity/plugin-signer-account": "paritytech/plugin-signer-account", - "@parity/plugin-signer-default": "paritytech/plugin-signer-default", - "@parity/plugin-signer-hardware": "paritytech/plugin-signer-hardware", - "@parity/plugin-signer-qr": "paritytech/plugin-signer-qr", + "@parity/abi": "2.1.x", + "@parity/api": "2.1.x", "@parity/dapp-account": "paritytech/dapp-account", "@parity/dapp-accounts": "paritytech/dapp-accounts", "@parity/dapp-address": "paritytech/dapp-address", @@ -173,12 +158,21 @@ "@parity/dapp-vaults": "paritytech/dapp-vaults", "@parity/dapp-wallet": "paritytech/dapp-wallet", "@parity/dapp-web": "paritytech/dapp-web", - "isomorphic-fetch": "2.2.1", + "@parity/etherscan": "2.1.x", + "@parity/jsonrpc": "2.1.x", + "@parity/ledger": "2.1.x", + "@parity/plugin-signer-account": "paritytech/plugin-signer-account", + "@parity/plugin-signer-default": "paritytech/plugin-signer-default", + "@parity/plugin-signer-hardware": "paritytech/plugin-signer-hardware", + "@parity/plugin-signer-qr": "paritytech/plugin-signer-qr", + "@parity/shapeshift": "2.1.x", + "@parity/shared": "2.2.x", + "@parity/ui": "2.2.x", + "keythereum": "1.0.2", "lodash.flatten": "4.4.0", "lodash.omitby": "4.6.0", "lodash.throttle": "4.1.1", "lodash.uniq": "4.5.0", - "oo7": "paritytech/oo7#34fdb5991f4e59b2cf84260cab48cec9a57d88c0", "prop-types": "15.5.10", "react": "15.6.1", "react-dom": "15.6.1", @@ -189,7 +183,6 @@ "redux": "3.6.0", "solc": "ngotchac/solc-js", "store": "1.3.20", - "web3": "0.17.0-beta", - "whatwg-fetch": "2.0.1" + "web3": "0.17.0-beta" } } diff --git a/js/src/Application/application.js b/js/src/Application/application.js index 9dbee9b53..3ff4fb67b 100644 --- a/js/src/Application/application.js +++ b/js/src/Application/application.js @@ -20,9 +20,9 @@ import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import HardwareStore from '@parity/shared/mobx/hardwareStore'; -import UpgradeStore from '@parity/shared/mobx/upgradeParity'; -import Errors from '@parity/ui/Errors'; +import HardwareStore from '@parity/shared/lib/mobx/hardwareStore'; +import UpgradeStore from '@parity/shared/lib/mobx/upgradeParity'; +import Errors from '@parity/ui/lib/Errors'; import Connection from '../Connection'; import DappRequests from '../DappRequests'; @@ -145,11 +145,9 @@ class Application extends Component { function mapStateToProps (state) { const { blockNumber } = state.nodeStatus; - const { hasAccounts } = state.personal; return { - blockNumber, - hasAccounts + blockNumber }; } diff --git a/js/src/Connection/connection.js b/js/src/Connection/connection.js index 54b25b660..d6501b45d 100644 --- a/js/src/Connection/connection.js +++ b/js/src/Connection/connection.js @@ -19,9 +19,9 @@ import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import GradientBg from '@parity/ui/GradientBg'; -import Input from '@parity/ui/Form/Input'; -import { CompareIcon, ComputerIcon, DashboardIcon, VpnIcon } from '@parity/ui/Icons'; +import GradientBg from '@parity/ui/lib/GradientBg'; +import Input from '@parity/ui/lib/Form/Input'; +import { CompareIcon, ComputerIcon, DashboardIcon, VpnIcon } from '@parity/ui/lib/Icons'; import styles from './connection.css'; diff --git a/js/src/Dapp/dapp.js b/js/src/Dapp/dapp.js index b97e5adac..038df7da3 100644 --- a/js/src/Dapp/dapp.js +++ b/js/src/Dapp/dapp.js @@ -20,11 +20,10 @@ import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import Api from '@parity/api'; -import builtinDapps from '@parity/shared/config/dappsBuiltin.json'; -import viewsDapps from '@parity/shared/config/dappsViews.json'; -import DappsStore from '@parity/shared/mobx/dappsStore'; -import HistoryStore from '@parity/shared/mobx/historyStore'; -// import { Bond } from 'oo7'; +import builtinDapps from '@parity/shared/lib/config/dappsBuiltin.json'; +import viewsDapps from '@parity/shared/lib/config/dappsViews.json'; +import DappsStore from '@parity/shared/lib/mobx/dappsStore'; +import HistoryStore from '@parity/shared/lib/mobx/historyStore'; import styles from './dapp.css'; @@ -163,6 +162,5 @@ export default class Dapp extends Component { const frame = document.getElementById('dappFrame'); frame.style.opacity = 1; - // frame.contentWindow.injectedBondCache = Bond.cache; } } diff --git a/js/src/DappRequests/Request/request.js b/js/src/DappRequests/Request/request.js index d491412dc..776fd9089 100644 --- a/js/src/DappRequests/Request/request.js +++ b/js/src/DappRequests/Request/request.js @@ -18,9 +18,9 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import Button from '@parity/ui/Button'; +import Button from '@parity/ui/lib/Button'; -import DappsStore from '@parity/shared/mobx/dappsStore'; +import DappsStore from '@parity/shared/lib/mobx/dappsStore'; export default function Request ({ appId, className, approveRequest, denyRequest, queueId, request: { from, method } }) { const _onApprove = () => approveRequest(queueId, false); diff --git a/js/src/DappRequests/dappRequests.css b/js/src/DappRequests/dappRequests.css index 5226b52b2..8d82bfa1b 100644 --- a/js/src/DappRequests/dappRequests.css +++ b/js/src/DappRequests/dappRequests.css @@ -23,8 +23,8 @@ $backgroundTwo: #e57a00; position: fixed; left: 0; right: 0; - top: 2.75em; - z-index: 760; /* sits above requests */ + bottom: 0; + z-index: 1001; /* sits above sync warning */ .request { align-items: center; diff --git a/js/src/DappRequests/store.js b/js/src/DappRequests/store.js index 872423e59..4c5448a61 100644 --- a/js/src/DappRequests/store.js +++ b/js/src/DappRequests/store.js @@ -17,7 +17,7 @@ import { action, computed, observable } from 'mobx'; import store from 'store'; -import { sha3 } from '@parity/api/util/sha3'; +import { sha3 } from '@parity/api/lib/util/sha3'; import filteredRequests from './filteredRequests'; diff --git a/js/src/Dapps/dapps.js b/js/src/Dapps/dapps.js index 6c6afd048..1b96f4f1d 100644 --- a/js/src/Dapps/dapps.js +++ b/js/src/Dapps/dapps.js @@ -21,12 +21,12 @@ import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import DappCard from '@parity/ui/DappCard'; -import Checkbox from '@parity/ui/Form/Checkbox'; -import Page from '@parity/ui/Page'; -import SectionList from '@parity/ui/SectionList'; +import DappCard from '@parity/ui/lib/DappCard'; +import Checkbox from '@parity/ui/lib/Form/Checkbox'; +import Page from '@parity/ui/lib/Page'; +import SectionList from '@parity/ui/lib/SectionList'; -import DappsStore from '@parity/shared/mobx/dappsStore'; +import DappsStore from '@parity/shared/lib/mobx/dappsStore'; import styles from './dapps.css'; @@ -85,8 +85,8 @@ class Dapps extends Component { /> } > - { this.renderList(this.store.visibleViews) } { this.renderList(this.store.visibleLocal) } + { this.renderList(this.store.visibleViews) } { this.renderList(this.store.visibleBuiltin) } { this.renderList(this.store.visibleNetwork, externalOverlay) } diff --git a/js/src/Extension/extension.js b/js/src/Extension/extension.js index c1c3c452a..ac4206ec0 100644 --- a/js/src/Extension/extension.js +++ b/js/src/Extension/extension.js @@ -18,10 +18,10 @@ import { observer } from 'mobx-react'; import React, { Component } from 'react'; import { FormattedMessage } from 'react-intl'; -import Button from '@parity/ui/Button'; -import { CloseIcon, CheckIcon } from '@parity/ui/Icons'; +import Button from '@parity/ui/lib/Button'; +import { CloseIcon, CheckIcon } from '@parity/ui/lib/Icons'; -import Store from '@parity/shared/mobx/extensionStore'; +import Store from '@parity/shared/lib/mobx/extensionStore'; import styles from './extension.css'; @observer diff --git a/js/src/FirstRun/TnC/tnc.js b/js/src/FirstRun/TnC/tnc.js index 5a22cb0b5..93199b5c3 100644 --- a/js/src/FirstRun/TnC/tnc.js +++ b/js/src/FirstRun/TnC/tnc.js @@ -19,7 +19,7 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import ReactMarkdown from 'react-markdown'; -import Checkbox from '@parity/ui/Form/Checkbox'; +import Checkbox from '@parity/ui/lib/Form/Checkbox'; import styles from '../firstRun.css'; diff --git a/js/src/FirstRun/firstRun.js b/js/src/FirstRun/firstRun.js index ae6ac0f59..ef5867a01 100644 --- a/js/src/FirstRun/firstRun.js +++ b/js/src/FirstRun/firstRun.js @@ -21,11 +21,11 @@ import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; -import { createIdentityImg } from '@parity/api/util/identity'; -import { newError } from '@parity/shared/redux/actions'; -import Button from '@parity/ui/Button'; -import Portal from '@parity/ui/Portal'; -import { CheckIcon, DoneIcon, NextIcon, PrintIcon, ReplayIcon } from '@parity/ui/Icons'; +import { createIdentityImg } from '@parity/api/lib/util/identity'; +import { newError } from '@parity/shared/lib/redux/actions'; +import Button from '@parity/ui/lib/Button'; +import Portal from '@parity/ui/lib/Portal'; +import { CheckIcon, DoneIcon, NextIcon, PrintIcon, ReplayIcon } from '@parity/ui/lib/Icons'; import ParityLogo from '@parity/shared/assets/images/parity-logo-black-no-text.svg'; import { NewAccount, AccountDetails } from '@parity/dapp-accounts/src/CreateAccount'; diff --git a/js/src/ParityBar/parityBar.js b/js/src/ParityBar/parityBar.js index bfa211a5d..65dce7061 100644 --- a/js/src/ParityBar/parityBar.js +++ b/js/src/ParityBar/parityBar.js @@ -24,16 +24,16 @@ import { Link } from 'react-router'; import { connect } from 'react-redux'; import store from 'store'; -import AccountCard from '@parity/ui/AccountCard'; -import Button from '@parity/ui/Button'; -import ContainerTitle from '@parity/ui/Container/Title'; -import IdentityIcon from '@parity/ui/IdentityIcon'; -import GradientBg from '@parity/ui/GradientBg'; -import SelectionList from '@parity/ui/SelectionList'; -import SignerPending from '@parity/ui/SignerPending'; -import { CancelIcon } from '@parity/ui/Icons'; +import AccountCard from '@parity/ui/lib/AccountCard'; +import Button from '@parity/ui/lib/Button'; +import ContainerTitle from '@parity/ui/lib/Container/Title'; +import IdentityIcon from '@parity/ui/lib/IdentityIcon'; +import GradientBg from '@parity/ui/lib/GradientBg'; +import SelectionList from '@parity/ui/lib/SelectionList'; +import SignerPending from '@parity/ui/lib/SignerPending'; +import { CancelIcon } from '@parity/ui/lib/Icons'; -import DappsStore from '@parity/shared/mobx/dappsStore'; +import DappsStore from '@parity/shared/lib/mobx/dappsStore'; import Signer from '../Signer/Embedded'; import AccountStore from './accountStore'; diff --git a/js/src/PinMatrix/pinMatrix.js b/js/src/PinMatrix/pinMatrix.js index 2dabcf650..c8bf4445b 100644 --- a/js/src/PinMatrix/pinMatrix.js +++ b/js/src/PinMatrix/pinMatrix.js @@ -18,7 +18,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import GradientBg from '@parity/ui/GradientBg'; +import GradientBg from '@parity/ui/lib/GradientBg'; import styles from './pinMatrix.css'; diff --git a/js/src/Requests/requests.js b/js/src/Requests/requests.js index d208f79e0..3405c1f77 100644 --- a/js/src/Requests/requests.js +++ b/js/src/Requests/requests.js @@ -21,12 +21,12 @@ import ReactDOM from 'react-dom'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; -import { hideRequest } from '@parity/shared/redux/providers/requestsActions'; -import MethodDecoding from '@parity/ui/MethodDecoding'; -import IdentityIcon from '@parity/ui/IdentityIcon'; -import Progress from '@parity/ui/Progress'; -import ScrollableText from '@parity/ui/ScrollableText'; -import ShortenedHash from '@parity/ui/ShortenedHash'; +import { hideRequest } from '@parity/shared/lib/redux/providers/requestsActions'; +import MethodDecoding from '@parity/ui/lib/MethodDecoding'; +import IdentityIcon from '@parity/ui/lib/IdentityIcon'; +import Progress from '@parity/ui/lib/Progress'; +import ScrollableText from '@parity/ui/lib/ScrollableText'; +import ShortenedHash from '@parity/ui/lib/ShortenedHash'; import styles from './requests.css'; diff --git a/js/src/Signer/Embedded/embedded.js b/js/src/Signer/Embedded/embedded.js index 9c465c0c7..aee61f25e 100644 --- a/js/src/Signer/Embedded/embedded.js +++ b/js/src/Signer/Embedded/embedded.js @@ -20,8 +20,8 @@ import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import { observer } from 'mobx-react'; -import * as RequestsActions from '@parity/shared/redux/providers/signerActions'; -import Container from '@parity/ui/Container'; +import * as RequestsActions from '@parity/shared/lib/redux/providers/signerActions'; +import Container from '@parity/ui/lib/Container'; import PendingList from '../PendingList'; import PendingStore from '../pendingStore'; diff --git a/js/src/Signer/PendingItem/pendingItem.js b/js/src/Signer/PendingItem/pendingItem.js index 52cc2ce29..fa5ef062b 100644 --- a/js/src/Signer/PendingItem/pendingItem.js +++ b/js/src/Signer/PendingItem/pendingItem.js @@ -19,7 +19,7 @@ import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; -import SignerLayout from '@parity/ui/Signer/Layout'; +import SignerLayout from '@parity/ui/lib/Signer/Layout'; import PluginStore from '../pluginStore'; import styles from './pendingItem.css'; diff --git a/js/src/Snackbar/snackbar.js b/js/src/Snackbar/snackbar.js index f1b45f009..bbddbfcc7 100644 --- a/js/src/Snackbar/snackbar.js +++ b/js/src/Snackbar/snackbar.js @@ -19,8 +19,8 @@ import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; -import { closeSnackbar } from '@parity/shared/redux/providers/snackbarActions'; -import SnackbarUI from '@parity/ui/Snackbar'; +import { closeSnackbar } from '@parity/shared/lib/redux/providers/snackbarActions'; +import SnackbarUI from '@parity/ui/lib/Snackbar'; function Snackbar ({ closeSnackbar, cooldown = 3500, message, open = false }) { return ( diff --git a/js/src/Status/status.js b/js/src/Status/status.js index 08a50724c..563cc57bf 100644 --- a/js/src/Status/status.js +++ b/js/src/Status/status.js @@ -19,14 +19,14 @@ import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; import { FormattedMessage } from 'react-intl'; -import BlockNumber from '@parity/ui/BlockNumber'; -import ClientVersion from '@parity/ui/ClientVersion'; -import GradientBg from '@parity/ui/GradientBg'; -import IdentityIcon from '@parity/ui/IdentityIcon'; -import NetChain from '@parity/ui/NetChain'; -import NetPeers from '@parity/ui/NetPeers'; -import SignerPending from '@parity/ui/SignerPending'; -import StatusIndicator from '@parity/ui/StatusIndicator'; +import BlockNumber from '@parity/ui/lib/BlockNumber'; +import ClientVersion from '@parity/ui/lib/ClientVersion'; +import GradientBg from '@parity/ui/lib/GradientBg'; +import IdentityIcon from '@parity/ui/lib/IdentityIcon'; +import NetChain from '@parity/ui/lib/NetChain'; +import NetPeers from '@parity/ui/lib/NetPeers'; +import SignerPending from '@parity/ui/lib/SignerPending'; +import StatusIndicator from '@parity/ui/lib/StatusIndicator'; import Consensus from './Consensus'; import AccountStore from '../ParityBar/accountStore'; diff --git a/js/src/SyncWarning/syncWarning.js b/js/src/SyncWarning/syncWarning.js index 8ca88b7b2..8b36afcf8 100644 --- a/js/src/SyncWarning/syncWarning.js +++ b/js/src/SyncWarning/syncWarning.js @@ -18,7 +18,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; -import StatusIndicator from '@parity/ui/StatusIndicator'; +import StatusIndicator from '@parity/ui/lib/StatusIndicator'; import styles from './syncWarning.css'; diff --git a/js/src/UpgradeParity/upgradeParity.js b/js/src/UpgradeParity/upgradeParity.js index 87127d81f..c69c91fd6 100644 --- a/js/src/UpgradeParity/upgradeParity.js +++ b/js/src/UpgradeParity/upgradeParity.js @@ -19,10 +19,10 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import { STEP_COMPLETED, STEP_ERROR, STEP_INFO, STEP_UPDATING } from '@parity/shared/mobx/upgradeParity'; -import Button from '@parity/ui/Button'; -import Portal from '@parity/ui/Portal'; -import { CancelIcon, DoneIcon, ErrorIcon, NextIcon, UpdateIcon, UpdateWaitIcon } from '@parity/ui/Icons'; +import { STEP_COMPLETED, STEP_ERROR, STEP_INFO, STEP_UPDATING } from '@parity/shared/lib/mobx/upgradeParity'; +import Button from '@parity/ui/lib/Button'; +import Portal from '@parity/ui/lib/Portal'; +import { CancelIcon, DoneIcon, ErrorIcon, NextIcon, UpdateIcon, UpdateWaitIcon } from '@parity/ui/lib/Icons'; import styles from './upgradeParity.css'; diff --git a/js/src/api-local/accounts/account.js b/js/src/api-local/accounts/account.js new file mode 100644 index 000000000..b6f1468c5 --- /dev/null +++ b/js/src/api-local/accounts/account.js @@ -0,0 +1,118 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const { createKeyObject, decryptPrivateKey } = require('../ethkey'); + +class Account { + constructor (persist, data = {}) { + const { + keyObject = null, + meta = {}, + name = '' + } = data; + + this._persist = persist; + this._keyObject = keyObject; + this._name = name; + this._meta = meta; + } + + isValidPassword (password) { + if (!this._keyObject) { + return false; + } + + return decryptPrivateKey(this._keyObject, password) + .then((privateKey) => { + if (!privateKey) { + return false; + } + + return true; + }); + } + + export () { + const exported = Object.assign({}, this._keyObject); + + exported.meta = JSON.stringify(this._meta); + exported.name = this._name; + + return exported; + } + + get address () { + return `0x${this._keyObject.address.toLowerCase()}`; + } + + get name () { + return this._name; + } + + set name (name) { + this._name = name; + + this._persist(); + } + + get meta () { + return JSON.stringify(this._meta); + } + + set meta (meta) { + this._meta = JSON.parse(meta); + + this._persist(); + } + + get uuid () { + if (!this._keyObject) { + return null; + } + + return this._keyObject.id; + } + + decryptPrivateKey (password) { + return decryptPrivateKey(this._keyObject, password); + } + + changePassword (key, password) { + return createKeyObject(key, password).then((keyObject) => { + this._keyObject = keyObject; + + this._persist(); + }); + } + + toJSON () { + return { + keyObject: this._keyObject, + name: this._name, + meta: this._meta + }; + } +} + +Account.fromPrivateKey = function (persist, key, password) { + return createKeyObject(key, password).then((keyObject) => { + const account = new Account(persist, { keyObject }); + + return account; + }); +}; + +module.exports = Account; diff --git a/js/src/api-local/accounts/accounts.js b/js/src/api-local/accounts/accounts.js new file mode 100644 index 000000000..074f06c4b --- /dev/null +++ b/js/src/api-local/accounts/accounts.js @@ -0,0 +1,238 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const EventEmitter = require('eventemitter3'); +const { debounce } = require('lodash'); +const localStore = require('store'); + +const Account = require('./account'); +const { decryptPrivateKey } = require('../ethkey'); + +const NULL_ADDRESS = '0x0000000000000000000000000000000000000000'; +const LS_STORE_KEY = '_parity::localAccounts'; + +class Accounts extends EventEmitter { + constructor (data = localStore.get(LS_STORE_KEY) || {}) { + super(); + + this.persist = debounce(() => { + this._lastState = JSON.stringify(this); + + localStore.set(LS_STORE_KEY, this); + }, 100); + + this._addAccount = this._addAccount.bind(this); + this._lastState = JSON.stringify(data); + + window.addEventListener('storage', ({ key, newValue }) => { + if (key !== LS_STORE_KEY) { + return; + } + + if (newValue !== this._lastState) { + console.log('Data changed in a second tab, syncing state'); + + this.restore(JSON.parse(newValue)); + } + }); + + this.restore(data); + } + + restore (data) { + const { + last = NULL_ADDRESS, + dappsDefault = NULL_ADDRESS, + store = {} + } = data; + + this._last = last; + this._dappsDefaultAddress = dappsDefault; + this._store = {}; + + if (Array.isArray(store)) { + // Recover older version that stored accounts as an array + store.forEach((data) => { + const account = new Account(this.persist, data); + + this._store[account.address] = account; + }); + } else { + Object.keys(store).forEach((key) => { + this._store[key] = new Account(this.persist, store[key]); + }); + } + } + + _addAccount (account) { + const { address } = account; + + if (address in this._store && this._store[address].uuid) { + throw new Error(`Account ${address} already exists!`); + } + + this._store[address] = account; + this.lastAddress = address; + + this.persist(); + + return account.address; + } + + create (secret, password) { + const privateKey = Buffer.from(secret.slice(2), 'hex'); + + return Account + .fromPrivateKey(this.persist, privateKey, password) + .then(this._addAccount); + } + + restoreFromWallet (wallet, password) { + return decryptPrivateKey(wallet, password) + .then((privateKey) => { + if (!privateKey) { + throw new Error('Invalid password'); + } + + return Account.fromPrivateKey(this.persist, privateKey, password); + }) + .then(this._addAccount); + } + + set lastAddress (value) { + this._last = value.toLowerCase(); + } + + get lastAddress () { + return this._last; + } + + get dappsDefaultAddress () { + if (this._dappsDefaultAddress === NULL_ADDRESS) { + return this._last; + } + + if (this._dappsDefaultAddress in this._store) { + return this._dappsDefaultAddress; + } + + return NULL_ADDRESS; + } + + set dappsDefaultAddress (value) { + this._dappsDefaultAddress = value.toLowerCase(); + + this.emit('dappsDefaultAddressChange', this._dappsDefaultAddress); + + this.persist(); + } + + get (address) { + address = address.toLowerCase(); + + const account = this._store[address]; + + if (!account) { + throw new Error(`Account not found: ${address}`); + } + + this.lastAddress = address; + + return account; + } + + getLazyCreate (address) { + address = address.toLowerCase(); + + this.lastAddress = address; + + if (!(address in this._store)) { + this._store[address] = new Account(this.persist); + } + + return this._store[address]; + } + + remove (address, password) { + address = address.toLowerCase(); + + const account = this.get(address); + + if (!account) { + return false; + } + + if (!account.uuid) { + this.removeUnsafe(address); + + return true; + } + + return account + .isValidPassword(password) + .then((isValid) => { + if (!isValid) { + return false; + } + + if (address === this.lastAddress) { + this.lastAddress = NULL_ADDRESS; + } + + this.removeUnsafe(address); + + return true; + }); + } + + removeUnsafe (address) { + address = address.toLowerCase(); + + delete this._store[address]; + + this.persist(); + } + + allAddresses () { + return Object.keys(this._store); + } + + accountAddresses () { + return Object + .keys(this._store) + .filter((address) => this._store[address].uuid); + } + + map (mapper) { + const result = {}; + + Object.keys(this._store).forEach((key) => { + result[key] = mapper(this._store[key]); + }); + + return result; + } + + toJSON () { + return { + last: this._last, + dappsDefault: this._dappsDefaultAddress, + store: this._store + }; + } +} + +module.exports = Accounts; diff --git a/js/src/api-local/accounts/index.js b/js/src/api-local/accounts/index.js new file mode 100644 index 000000000..b3d09e532 --- /dev/null +++ b/js/src/api-local/accounts/index.js @@ -0,0 +1,21 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const Accounts = require('./accounts'); + +const accounts = new Accounts(); + +module.exports = accounts; diff --git a/js/src/api-local/ethkey/ethkey.js b/js/src/api-local/ethkey/ethkey.js new file mode 100644 index 000000000..9c23ee331 --- /dev/null +++ b/js/src/api-local/ethkey/ethkey.js @@ -0,0 +1,160 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +/* global WebAssembly */ + +const wasmBuffer = require('./ethkey.wasm.js'); + +const NOOP = () => {}; + +// WASM memory setup +const WASM_PAGE_SIZE = 65536; +const STATIC_BASE = 1024; +const STATICTOP = STATIC_BASE + WASM_PAGE_SIZE * 2; +const STACK_BASE = align(STATICTOP + 16); +const STACKTOP = STACK_BASE; +const TOTAL_STACK = 5 * 1024 * 1024; +const TOTAL_MEMORY = 16777216; +const STACK_MAX = STACK_BASE + TOTAL_STACK; +const DYNAMIC_BASE = STACK_MAX + 64; +const DYNAMICTOP_PTR = STACK_MAX; + +function mockWebAssembly () { + function throwWasmError () { + throw new Error('Missing WebAssembly support'); + } + + // Simple mock replacement + return { + Memory: class { + constructor () { + this.buffer = new ArrayBuffer(2048); + } + }, + Table: class { + }, + Module: class { + }, + Instance: class { + constructor () { + this.exports = { + '_input_ptr': () => 0, + '_secret_ptr': () => 0, + '_public_ptr': () => 0, + '_address_ptr': () => 0, + '_ecpointg': NOOP, + '_brain': throwWasmError, + '_verify_secret': throwWasmError + }; + } + } + }; +} + +const { Memory, Table, Module, Instance } = typeof WebAssembly !== 'undefined' ? WebAssembly : mockWebAssembly(); + +const wasmMemory = new Memory({ + initial: TOTAL_MEMORY / WASM_PAGE_SIZE, + maximum: TOTAL_MEMORY / WASM_PAGE_SIZE +}); + +const wasmTable = new Table({ + initial: 8, + maximum: 8, + element: 'anyfunc' +}); + +// TypedArray views into the memory +const wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); +const wasmMemoryU32 = new Uint32Array(wasmMemory.buffer); + +// Keep DYNAMIC_BASE in memory +wasmMemoryU32[DYNAMICTOP_PTR >> 2] = align(DYNAMIC_BASE); + +function align (mem) { + const ALIGN_SIZE = 16; + + return (Math.ceil(mem / ALIGN_SIZE) * ALIGN_SIZE) | 0; +} + +function slice (ptr, len) { + return wasmMemoryU8.subarray(ptr, ptr + len); +} + +// Required by emscripten +function abort (what) { + throw new Error(what || 'WASM abort'); +} + +// Required by emscripten +function abortOnCannotGrowMemory () { + abort(`Cannot enlarge memory arrays.`); +} + +// Required by emscripten +function enlargeMemory () { + abortOnCannotGrowMemory(); +} + +// Required by emscripten +function getTotalMemory () { + return TOTAL_MEMORY; +} + +// Required by emscripten - used to perform memcpy on large data +function memcpy (dest, src, len) { + wasmMemoryU8.set(wasmMemoryU8.subarray(src, src + len), dest); + + return dest; +} + +// Synchronously compile WASM from the buffer +const wasmModule = new Module(wasmBuffer); + +// Instantiated WASM module +const instance = new Instance(wasmModule, { + global: {}, + env: { + DYNAMICTOP_PTR, + STACKTOP, + STACK_MAX, + abort, + enlargeMemory, + getTotalMemory, + abortOnCannotGrowMemory, + ___lock: NOOP, + ___syscall6: () => 0, + ___setErrNo: (no) => no, + _abort: abort, + ___syscall140: () => 0, + _emscripten_memcpy_big: memcpy, + ___syscall54: () => 0, + ___unlock: NOOP, + _llvm_trap: abort, + ___syscall146: () => 0, + 'memory': wasmMemory, + 'table': wasmTable, + tableBase: 0, + memoryBase: STATIC_BASE + } +}); + +const extern = instance.exports; + +module.exports = { + extern, + slice +}; diff --git a/js/src/api-local/ethkey/ethkey.wasm.js b/js/src/api-local/ethkey/ethkey.wasm.js new file mode 100644 index 000000000..8f9db1314 --- /dev/null +++ b/js/src/api-local/ethkey/ethkey.wasm.js @@ -0,0 +1 @@ +module.exports = Buffer.from('AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gAn9/AX9gAX8AYAABf2AAAGACf38AYAR/f39/AGADf39/AGAGf39/f39/AX8CyQELA2VudghTVEFDS1RPUAN/AANlbnYFYWJvcnQAAwNlbnYLX19fc3lzY2FsbDYAAgNlbnYNX19fc3lzY2FsbDE0MAACA2VudhZfZW1zY3JpcHRlbl9tZW1jcHlfYmlnAAADZW52DF9fX3N5c2NhbGw1NAACA2VudgpfbGx2bV90cmFwAAUDZW52DV9fX3N5c2NhbGwxNDYAAgNlbnYGbWVtb3J5AgGAAoACA2VudgV0YWJsZQFwAQgIA2Vudgl0YWJsZUJhc2UDfwADOjkEBAQEBAQDBwMICAgIAwYGBgIIAwMDBgMDCAYGBgMCBwYIAgICBgkDBgEAAAEEBAQAAQAAAQABAAIGBgF/ASMACwdfBw5fdmVyaWZ5X3NlY3JldAAMC19wdWJsaWNfcHRyAAoLX3NlY3JldF9wdHIACQpfaW5wdXRfcHRyAAgJX2VjcG9pbnRnAAcGX2JyYWluAA0MX2FkZHJlc3NfcHRyAAsJDgEAIwELCD0wPjEyNz8rCpClAzlJAQJ/An8jAiEAIwJB0JgBaiQCQagZKAIAQQFGBEAgACQCQawZDwsgACIBEB9BqBlBATYCAEGsGSABQdCYARA8GiAAJAJBrBkLCwYAQbi2AQsGAEG4vgELBgBB2L4BCwYAQZi/AQsKAEG4vgFBIBAlC74HAQt/AkAjAiEIIwJBoJwBaiQCIABBgAhLBEAgAEGACBAnCyAIQaACaiEFQagZKAIAQQFHBEAgBRAfQagZQQE2AgBBrBkgBUHQmAEQPBoLIAghCSAIQcgAaiIEEBQgCEH4mwFqIgFCADcAACABQgA3AAggAUIANwAQIAFCADcAGCAEQbi2ASAAEBAgBSAEQdgBEDwaIAUgAUEgEBIgCEHwmgFqIgMgASkAADcAACADIAEpAAg3AAggAyABKQAQNwAQIAMgASkAGDcAGCAIQZCbAWoiBkEBaiEHIAhB2JsBaiICQQxqIQpBACEAA0AgBBAUIAFCADcAACABQgA3AAggAUIANwAQIAFCADcAGCAEIANBIBAQIAUgBEHYARA8GiAFIAFBIBASIAIgASkAADcAACACIAEpAAg3AAggAiABKQAQNwAQIAIgASkAGDcAGCADIAIpAAA3AAAgAyACKQAINwAIIAMgAikAEDcAECADIAIpABg3ABggAEEBaiELIABBgYABRwRAIAshAAwBCwsgCUEBaiEAA0ACQCAJQawZIANBIBAmIAksAABBAUYEQCAGIAApAAA3AAAgBiAAKQAINwAIIAYgACkAEDcAECAGIAApABg3ABggBiAAKQAgNwAgIAYgACkAKDcAKCAGIAApADA3ADAgBiAAKQA4NwA4IAYgACwAQDoAQCAEEBQgAUIANwAAIAFCADcACCABQgA3ABAgAUIANwAYIAQgB0HAABAQIAUgBEHYARA8GiAFIAFBIBASIAIgASkAADcAACACIAEpAAg3AAggAiABKQAQNwAQIAIgASkAGDcAGEGYvwEgCikAADcAAEGgvwEgCikACDcAAEGovwEgCigAEDYAAEGYvwEsAABFDQELIAQQFCABQgA3AAAgAUIANwAIIAFCADcAECABQgA3ABggBCADQSAQECAFIARB2AEQPBogBSABQSAQEiACIAEpAAA3AAAgAiABKQAINwAIIAIgASkAEDcAECACIAEpABg3ABggAyACKQAANwAAIAMgAikACDcACCADIAIpABA3ABAgAyACKQAYNwAYDAELC0HYvgEgBykAADcAAEHgvgEgBykACDcAAEHovgEgBykAEDcAAEHwvgEgBykAGDcAAEH4vgEgBykAIDcAAEGAvwEgBykAKDcAAEGIvwEgBykAMDcAAEGQvwEgBykAODcAAEG4vgEgAykAADcAAEHAvgEgAykACDcAAEHIvgEgAykAEDcAAEHQvgEgAykAGDcAACAIJAILCwQAEAUL1wsCGX8tfgJAIAApAwAhJCAAQShqIgIpAwAhJSAAQdAAaiIDKQMAITAgAEH4AGoiBCkDACE+IABBoAFqIgUpAwAhJiAAQQhqIgYpAwAhMSAAQTBqIgcpAwAhMiAAQdgAaiIIKQMAIScgAEGAAWoiCSkDACEgIABBqAFqIgopAwAhPyAAQRBqIgspAwAhMyAAQThqIgwpAwAhHSAAQeAAaiINKQMAISEgAEGIAWoiDikDACE0IABBsAFqIg8pAwAhHiAAQRhqIhApAwAhNSAAQcAAaiIRKQMAISggAEHoAGoiEikDACE2IABBkAFqIhMpAwAhGyAAQbgBaiIUKQMAISIgAEEgaiIVKQMAITcgAEHIAGoiFikDACE4IABB8ABqIhcpAwAhHCAAQZgBaiIYKQMAISMgAEHAAWoiGSkDACEaQQAhAQNAICQgGiAjIBwgOCA3hYWFhSIphSA/ICAgJyAyIDGFhYWFIipCAYYgKkI/iIQiOYUhQCAxICYgPiAwICUgJIWFhYUiK4UgHiA0ICEgHSAzhYWFhSIsQgGGICxCP4iEIjqFIUEgMyAqhSAiIBsgNiAoIDWFhYWFIi1CAYYgLUI/iIQiO4UhQiA1ICyFIClCAYYgKUI/iIQiPIUhLiA3IC2FICtCAYYgK0I/iIQiPYUhQyAbICyFIDyFIhtCFYYgG0IriIQiHyAhICqFIDuFIhtCK4YgG0IViIQiREJ/hYMgMiArhSA6hSIbQiyGIBtCFIiEIiSFITEgGiAthSA9hSIaQg6GIBpCMoiEIhogH0J/hYMgRIUhMyBAIBpCf4WDIB+FITUgJCBAQn+FgyAahSE3IDAgKYUgOYUiGkIDhiAaQj2IhCIvIDggLYUgPYUiGkIUhiAaQiyIhCIhQn+FgyAuQhyGIC5CJIiEIh+FIUUgICArhSA6hSIaQi2GIBpCE4iEIhsgL0J/hYMgIYUhMiAeICqFIDuFIhpCPYYgGkIDiIQiGiAbQn+FgyAvhSFGIB8gGkJ/hYMgG4UhLiAhIB9Cf4WDIBqFITggNiAshSA8hSIaQhmGIBpCJ4iEIiAgHSAqhSA7hSIaQgaGIBpCOoiEIhtCf4WDIEFCAYYgQUI/iIQiHYUhMCAjIC2FID2FIhpCCIYgGkI4iIQiHiAgQn+FgyAbhSEvICYgKYUgOYUiGkIShiAaQi6IhCIaIB5Cf4WDICCFISEgHSAaQn+FgyAehSE2IBsgHUJ/hYMgGoUhHyAnICuFIDqFIhpCCoYgGkI2iIQiGyAlICmFIDmFIhpCJIYgGkIciIQiI0J/hYMgQ0IbhiBDQiWIhCIdhSEnIDQgKoUgO4UiGkIPhiAaQjGIhCIeIBtCf4WDICOFISAgIiAshSA8hSIaQjiGIBpCCIiEIhogHkJ/hYMgG4UhNCAdIBpCf4WDIB6FIRsgIyAdQn+FgyAahSEjIBwgLYUgPYUiHEInhiAcQhmIhCIiICggLIUgPIUiHEI3hiAcQgmIhCIlQn+FgyBCQj6GIEJCAoiEIiaFIR0gPiAphSA5hSIcQimGIBxCF4iEIhogIkJ/hYMgJYUhHiA/ICuFIDqFIhxCAoYgHEI+iIQiHCAaQn+FgyAihSEoICYgHEJ/hYMgGoUhIiAlICZCf4WDIByFIRogRCAkQn+FgyBAhSABQQN0QYAIaikDAIUhHCABQQFqIgFBGEcEQCAcISQgRSElICchPiAdISYgLyEnIB4hPyBGIR0gKCEeIC4hKCAfIRwMAQsLIAAgHDcDACACIEU3AwAgAyAwNwMAIAQgJzcDACAFIB03AwAgBiAxNwMAIAcgMjcDACAIIC83AwAgCSAgNwMAIAogHjcDACALIDM3AwAgDCBGNwMAIA0gITcDACAOIDQ3AwAgDyAoNwMAIBAgNTcDACARIC43AwAgEiA2NwMAIBMgGzcDACAUICI3AwAgFSA3NwMAIBYgODcDACAXIB83AwAgGCAjNwMAIBkgGjcDAAsLCgAgACABIAIQEQu9AwEPfwJAIABByAFqIgooAgAiA0HIAUsEQCADQcgBEC8LIAAgA2ohC0HIASADayEEAkAgAEHMAWoiECgCACADayIFIAJLBEAgBCEMIAshDSADIQ9BACEIIAIhBgUgBCEJQQAhByACIQ4gBSEEAkACQAJAA0AgBCAJSw0BIAcgAksNAiABIAdqIREgBCACIAdrIgNNBH8gBAUgAwsiCQRAIAshA0EAIQUDQCADIAMsAAAgESAFaiwAAHM6AAAgCyAFQQFqIgVqIQMgBSAJSQ0ACwsgABAPIAQgB2ohAyAQKAIAIQUgCkEANgIAIA4gBGsiDiAFSQRAQcgBIQwgACENQQAhDyADIQggDiEGDAYFQcgBIQkgACELIAMhByAFIQQMAQsACwALIAQgCRAnDAELIAcgAhAvCwsLIAYgDEsEQCAGIAwQJwsgCCACSwRAIAggAhAvCyAGIAIgCGsiAE0EfyAGBSAACyIEBEAgDSEAQQAhAgUgCiAPIAZqNgIADwsgASAIaiEBA0AgACAALAAAIAEgAmosAABzOgAAIA0gAkEBaiICaiEAIAIgBEkNAAsgCiAKKAIAIAZqNgIACwuSAQEDfwJAIwIhBCMCQeABaiQCIAQiAyAAQdgBEDwaIAMoAsgBIgBByAFPBEBB3AogAEHIARAoCyADKALMASEFIAMgAGoiACAALAAAIAMsANABczoAACAFQX9qIgBByAFJBEAgAyAAaiIAIAAsAABBgH9zOgAAIAMQDyADIAEgAhATIAQkAgVB0AogAEHIARAoCwsLygEBB38CQAJAIAAoAswBIgNByAFLBEAgAyACSwRAIAEhCCACIQYFIANByAEQJwsFIAIhBEEAIQUCQAJAAkACQANAIAEgBWohCSACIAVrIQcgBCADSQ0DIAMgB0sNAiAJIAAgAxA8GiAAEA8gBCADayEEIAUgA2oiBSACTQ0ADAELAAsgBSACEC8MAgsgAyAHECcMAQsgBCAHTQRAIAkhCCAEIQYMAwsgBCAHECcLCwsgBkHIAUsEQCAGQcgBECcFIAggACAGEDwaCwsLIAACQCAAQQBBzAEQOhogAEGIATYCzAEgAEEBOgDQAQsLgQUCCH8DfgJAIwIhBSMCQdAAaiQCIAUhAiAAQcQAaiIDLAAAIgcgASwAREcEQCAHBEAgA0EAOgAAIAAgARAWIAMgAywAAEEBczoAAAUgAiABKQIANwIAIAIgASkCCDcCCCACIAEpAhA3AhAgAiABKQIYNwIYIAIgASkCIDcCICACIAEpAig3AiggAiABKQIwNwIwIAIgASkCODcCOCACIAEpAkA3AkAgAkEAOgBEIAAgAhAWCyAAKAIABEAgBSQCDwsgACgCBARAIAUkAg8LIANBADoAACAFJAIPCwJAIAEoAgAiAyAAKAIAIgJLBEACQAJAA0AgAkEQTw0CIABBBGogAkECdGpBADYCACACQQFqIgIgA0kNAAwBCwALIAAgAzYCAEIAIQtBACEEDAILQcgLIAJBEBAoBSADBEBCACELQQAhBAUgBSQCDwsLCwJAAkADQCAEQRBPDQEgAEEEaiAEQQJ0aiICKAIArSALfCABQQRqIARBAnRqKAIArXwhCiACIAo+AgAgCkIgiCEKIARBAWoiBiADSQRAIAohCyAGIQQMAQsLDAELQdQLIARBEBAoCyAKQgBSIgQgBiAAKAIAIgFJcQRAIAYhAQJAAkADQCABQRBPDQEgAEEEaiABQQJ0aiICKAIArSAKfCEKIAIgCj4CACAKQiCIIgxCAFIiCCABQQFqIgEgACgCACIJSXEEQCAMIQoMAQsLDAELQeALIAFBEBAoCyAMpyECIAgEQCAJIQEFIAUkAg8LBSAKpyECIARFBEAgBSQCDwsLIAFBEE8EQEHsCyABQRAQKAsgAEEEaiABQQJ0aiACNgIAIAAgACgCAEEBajYCACAFJAILC+YHAg1/An4CQCMCIQUjAkHQAGokAiAFIQIgAEHEAGoiBiwAACIDIAEsAERHBEAgAwRAIAZBADoAACAAIAEQFSAGQQE6AAAFIAIgASkCADcCACACIAEpAgg3AgggAiABKQIQNwIQIAIgASkCGDcCGCACIAEpAiA3AiAgAiABKQIoNwIoIAIgASkCMDcCMCACIAEpAjg3AjggAiABKQJANwJAIAJBADoARCAAIAIQFQsgACgCAARAIAUkAg8LIAAoAgQEQCAFJAIPCyAGQQA6AAAgBSQCDwsgACgCACIHQRBLBEAgB0EQECcLIAEoAgAiCEEQSwRAIAhBEBAnCyAAQQRqIQsCQAJAIAcgCEYEQCAAIAFHBEAgCyABQQRqIAdBAnQQOQRAIAchAwJAAkACQANAIANBf2ohCSADRQ0IIAlBEE8NASABQQRqIAlBAnRqKAIAIgMgAEEEaiAJQQJ0aigCACIORw0CIAkhAwwACwALQbwLIAlBEBAoDAELIAMgDkkNBQwECwsLIABBATYCACAGQQA6AAAgC0EANgIAIAUkAg8FIAggB08NAQsMAQsgAiAAKQIANwIAIAIgACkCCDcCCCACIAApAhA3AhAgAiAAKQIYNwIYIAIgACkCIDcCICACIAApAig3AiggAiAAKQIwNwIwIAIgACkCODcCOCACIAApAkA3AkAgACABKQIANwIAIAAgASkCCDcCCCAAIAEpAhA3AhAgACABKQIYNwIYIAAgASkCIDcCICAAIAEpAig3AiggACABKQIwNwIwIAAgASkCODcCOCAAIAEpAkA3AkAgACACEBYgBkEBOgAAIAUkAg8LAkAgCAR/QgAhD0EAIQMCQAJAA0AgA0EQTw0BIABBBGogA0ECdGoiBCgCAK0gAUEEaiADQQJ0aigCAK19IA98Ig9CIIchECAEIA8+AgAgA0EBaiIEIAhJBEAgECEPIAQhAwwBCwsMAQtB+AsgA0EQECgLAkAgEEIAUiAEIAAoAgAiAUlxBEADQCAEQRBJBEAgAEEEaiAEQQJ0aiIBKAIArSAQfCIPQiCHIRAgASAPPgIAIBBCAFIgBEEBaiIEIAAoAgAiAUlxDQEgASEMIAQhCgwDCwtBhAwgBEEQECgFIAEhDCAEIQoLCyAKIAxLBH8gACAKNgIAIAoFIAwLBSAHCyIBQQFLBEACQAJAA0AgAUF/aiIBQRBPDQIgAEEEaiABQQJ0aigCAA0BIAAgATYCACABQQFLDQAgASENDAQLAAsgBSQCDwtBsAsgAUEQECgFIAEhDQsLIA0gCygCAHIEQCAFJAIPCyAGQQA6AAAgBSQCCwv1GwIofwN+AkAjAiEgIwJB0ABqJAIgACgCACIKQQhGIAEoAgAiA0EIRnEEQCAAQQRqIg0oAgAiDkH//wNxIQQgAEEIaiIPKAIAIhBB//8DcSEIIABBDGoiESgCACISQf//A3EhBSAAQRBqIhMoAgAiFEH//wNxIQkgAEEUaiIVKAIAIhZB//8DcSEGIABBGGoiFygCACIYQf//A3EhAiAAQRxqIhkoAgAiGkH//wNxIQcgAEEgaiIbKAIAIiFB//8DcSELIAEoAgQiIkH//wNxIQMgASgCCCIjQf//A3EhCiABKAIMIiRB//8DcSEMIAEoAhAiJUH//wNxIRwgASgCFCImQf//A3EhHSABKAIYIidB//8DcSEeIAEoAhwiKEH//wNxIR8gASgCICIpQf//A3EhASANICJBEHYiDSAEbK0gAyAOQRB2Ig5srXwiKkIQhkKAgPz/D4MgAyAEbK18Iis+AgAgDyANIA5srSADIAhsrXwgCiAEbK18ICpCEIh8ICtCIIh8IA0gCGytIAMgEEEQdiIPbK18ICNBEHYiECAEbK18IAogDmytfCIqQhCGQoCA/P8Pg3wiKz4CACARIA0gD2ytIAMgBWytfCAKIAhsrXwgECAObK18IAwgBGytfCAqQhCIfCANIAVsrSADIBJBEHYiEWytfCAQIAhsrXwgCiAPbK18ICRBEHYiEiAEbK18IAwgDmytfCIqQhCGQoCA/P8Pg3wgK0IgiHwiKz4CACATIA0gEWytIAMgCWytfCAKIAVsrXwgECAPbK18IAwgCGytfCASIA5srXwgHCAEbK18ICpCEIh8IA0gCWytIAMgFEEQdiITbK18IBAgBWytfCAKIBFsrXwgEiAIbK18IAwgD2ytfCAlQRB2IhQgBGytfCAcIA5srXwiKkIQhkKAgPz/D4N8ICtCIIh8Iis+AgAgFSANIBNsrSADIAZsrXwgCiAJbK18IBAgEWytfCAMIAVsrXwgEiAPbK18IBwgCGytfCAUIA5srXwgHSAEbK18ICpCEIh8IA0gBmytIAMgFkEQdiIVbK18IBAgCWytfCAKIBNsrXwgEiAFbK18IAwgEWytfCAUIAhsrXwgHCAPbK18ICZBEHYiFiAEbK18IB0gDmytfCIqQhCGQoCA/P8Pg3wgK0IgiHwiKz4CACAXIA0gFWytIAMgAmytfCAKIAZsrXwgECATbK18IAwgCWytfCASIBFsrXwgHCAFbK18IBQgD2ytfCAdIAhsrXwgFiAObK18IB4gBGytfCAqQhCIfCANIAJsrSADIBhBEHYiF2ytfCAQIAZsrXwgCiAVbK18IBIgCWytfCAMIBNsrXwgFCAFbK18IBwgEWytfCAWIAhsrXwgHSAPbK18ICdBEHYiGCAEbK18IB4gDmytfCIqQhCGQoCA/P8Pg3wgK0IgiHwiKz4CACAZIA0gF2ytIAMgB2ytfCAKIAJsrXwgECAVbK18IAwgBmytfCASIBNsrXwgHCAJbK18IBQgEWytfCAdIAVsrXwgFiAPbK18IB4gCGytfCAYIA5srXwgHyAEbK18ICpCEIh8IA0gB2ytIAMgGkEQdiIZbK18IBAgAmytfCAKIBdsrXwgEiAGbK18IAwgFWytfCAUIAlsrXwgHCATbK18IBYgBWytfCAdIBFsrXwgGCAIbK18IB4gD2ytfCAoQRB2IhogBGytfCAfIA5srXwiKkIQhkKAgPz/D4N8ICtCIIh8Iis+AgAgGyANIBlsrSADIAtsrXwgCiAHbK18IBAgF2ytfCAMIAJsrXwgEiAVbK18IBwgBmytfCAUIBNsrXwgHSAJbK18IBYgEWytfCAeIAVsrXwgGCAPbK18IB8gCGytfCAaIA5srXwgASAEbK18ICpCEIh8IA0gC2ytIAMgIUEQdiIDbK18IBAgB2ytfCAKIBlsrXwgEiACbK18IAwgF2ytfCAUIAZsrXwgHCAVbK18IBYgCWytfCAdIBNsrXwgGCAFbK18IB4gEWytfCAaIAhsrXwgHyAPbK18IClBEHYiGyAEbK18IAEgDmytfCIqQhCGQoCA/P8Pg3wgK0IgiHwiKz4CACAAIAogC2ytIA0gA2ytfCAQIBlsrXwgDCAHbK18IBIgF2ytfCAcIAJsrXwgFCAVbK18IB0gBmytfCAWIBNsrXwgHiAJbK18IBggEWytfCAfIAVsrXwgGiAPbK18IAEgCGytfCAbIA5srXwgKkIQiHwgECALbK0gCiADbK18IBIgB2ytfCAMIBlsrXwgFCACbK18IBwgF2ytfCAWIAZsrXwgHSAVbK18IBggCWytfCAeIBNsrXwgGiAFbK18IB8gEWytfCAbIAhsrXwgASAPbK18IipCEIZCgID8/w+DfCArQiCIfCIrPgIkIAAgDCALbK0gECADbK18IBIgGWytfCAcIAdsrXwgFCAXbK18IB0gAmytfCAWIBVsrXwgHiAGbK18IBggE2ytfCAfIAlsrXwgGiARbK18IAEgBWytfCAbIA9srXwgKkIQiHwgEiALbK0gDCADbK18IBQgB2ytfCAcIBlsrXwgFiACbK18IB0gF2ytfCAYIAZsrXwgHiAVbK18IBogCWytfCAfIBNsrXwgGyAFbK18IAEgEWytfCIqQhCGQoCA/P8Pg3wgK0IgiHwiKz4CKCAAIBwgC2ytIBIgA2ytfCAUIBlsrXwgHSAHbK18IBYgF2ytfCAeIAJsrXwgGCAVbK18IB8gBmytfCAaIBNsrXwgASAJbK18IBsgEWytfCAqQhCIfCAUIAtsrSAcIANsrXwgFiAHbK18IB0gGWytfCAYIAJsrXwgHiAXbK18IBogBmytfCAfIBVsrXwgGyAJbK18IAEgE2ytfCIqQhCGQoCA/P8Pg3wgK0IgiHwiKz4CLCAAIB0gC2ytIBQgA2ytfCAWIBlsrXwgHiAHbK18IBggF2ytfCAfIAJsrXwgGiAVbK18IAEgBmytfCAbIBNsrXwgKkIQiHwgFiALbK0gHSADbK18IBggB2ytfCAeIBlsrXwgGiACbK18IB8gF2ytfCAbIAZsrXwgASAVbK18IipCEIZCgID8/w+DfCArQiCIfCIrPgIwIAAgHiALbK0gFiADbK18IBggGWytfCAfIAdsrXwgGiAXbK18IAEgAmytfCAbIBVsrXwgKkIQiHwgGCALbK0gHiADbK18IBogB2ytfCAfIBlsrXwgGyACbK18IAEgF2ytfCIqQhCGQoCA/P8Pg3wgK0IgiHwiKz4CNCAAIB8gC2ytIBggA2ytfCAaIBlsrXwgASAHbK18IBsgF2ytfCAqQhCIfCAaIAtsrSAfIANsrXwgGyAHbK18IAEgGWytfCIqQhCGQoCA/P8Pg3wgK0IgiHwiKz4COCAAIBsgGWytIBogA2ytfCABIAtsrXwgKkIQiHwgGyALbK0gASADbK18IipCEIZCgID8/w+DfCArQiCIfCIrPgI8IABBDzYCACAqQhCIIBsgA2ytfCArQiCIfCIqQgBRBEAgICQCDwsgACAqPgJAIABBEDYCACAgJAIPCyAgIQIgA0EBRgRAIAEoAgQhCCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACKAIAIgFBEEsEQCABQRAQJwsgAkEEaiABQQJ0aiEEIAEEQCAIrSErQgAhKiACQQRqIQADQCAAIAAoAgCtICt+IixC/////w+DICp8Iio+AgAgKkIgiCAsQiCIfCEqIABBBGoiACAERw0ACyAqQgBSBEAgAUEQSQRAIAQgKj4CACACIAFBAWo2AgAFQZwMIAFBEBAoCwsLICAkAg8LIAJBADoARCACIApBf2ogA2oiBzYCACACQQhqIgRCADcCACAEQgA3AgggBEIANwIQIARCADcCGCAEQgA3AiAgBEIANwIoIARCADcCMCAEQQA2AjggAiABKAIErSAAKAIErX4iKj4CBCAqQiCIISoCQCAHQQFLBEBBAiEEQQEhBgJAAkACQAJAA0AgKkIgiCEsICqnIQkgBkEBaiILIAprIQUgBiAKSwR/IAUFQQAiBQsgAyAGSwR/IAsFIAMiCwtJBEAgLCEqA0AgBiAFayIMQRBPDQMgBUEQTw0EIAFBBGogBUECdGooAgCtIABBBGogDEECdGooAgCtfiAJrXwiLEIgiCAqfCEqICynIQkgBUEBaiIFIAtJDQALBSAsISoLIAZBEE8NAyACQQRqIAZBAnRqIAk2AgAgBEEBaiEJIAQgB0kEQCAEIQUgCSEEIAUhBgwBBSAqISsMBwsACwALQagMIAxBEBAoDAILQbQMIAVBEBAoDAELQcAMIAZBEBAoCwUgKiErCwsgK0IAUQRAIAchCAUgB0EQSQRAIAJBBGogB0ECdGogKz4CACACIAogA2oiCDYCAAVBzAwgB0EQECgLCyAIQQFLBEAgCCEBAkACQAJAA0AgAUF/aiIEQRBPDQEgAkEEaiAEQQJ0aigCAA0CIARBAUsEQCAEIQEMAQUgBCEBDAMLAAsAC0GwCyAEQRAQKAwBCyACIAE2AgALCyAAIAIpAgA3AgAgACACKQIINwIIIAAgAikCEDcCECAAIAIpAhg3AhggACACKQIgNwIgIAAgAikCKDcCKCAAIAIpAjA3AjAgACACKQI4NwI4IAAgAikCQDcCQCAgJAILCyQAIAEEfyAAQYCAgIB4RiABQX9GcQR/QQAFIAAgAW0LBUEACwv5CQIOfwZ+AkAjAiEJIwJB0ARqJAIgCSIIQQBBhAQQOhpBASACQQFqQRh0QRh1QR9xdCIFQQIQGCEOIAlBiARqIgMgASkCADcCACADIAEpAgg3AgggAyABKQIQNwIQIAMgASkCGDcCGCADIAEpAiA3AiAgAyABKQIoNwIoIAMgASkCMDcCMCADIAEpAjg3AjggAyABKQJANwJAIAMoAgAiAUEBRyADQQRqIgcoAgAiBEEAR3JFBEAgACAIQYQEEDwaIAkkAg8LIAVBf2ohECAIQYAEaiEFIAJB/wFxIg9BP3GtIRNBICAPa0E/ca0hFCABIQIDQAJAAkACQCAEaCIBBEAgBSAFKAIAIAFqNgIAIAJBEEsEQEEGIQEMBAtBICABayEEIAIEQCABrSEVIARBP3GtIRZCACERIANBBGogAkECdGohAQNAIAFBfGoiASgCAK0hEiABIBIgFYggEYQ+AgAgEiAWhiERIAEgB0cNAAsgAygCACIBQQFNDQMgAUF/aiINQRBPBEBBDCEBDAULIANBBGogDUECdGooAgAEQCABIQIFIAMgDTYCACANIQEMBAsFQQAhAgsFIAUoAgAiCkGABEkhBiAEIBBxIgEgDkwEQCAGRQRAQSUhAQwFCyAIIApqIAE6AAAgBSAFKAIAIgZBAWo2AgAgByAEIAFrIgE2AgAgAUEARyACQQFHckUEQEEBIQEMBAsgBSAPIAZqNgIAIAJBEEsEQEEqIQEMBQsgAkUEQEEAIQIMAwtCACERIANBBGogAkECdGohAQNAIAFBfGoiASgCAK0hEiABIBIgE4ggEYQ+AgAgEiAUhiERIAEgB0cNAAsgAygCACIBQQFNDQMgAUF/aiILQRBPBEBBMCEBDAULIANBBGogC0ECdGooAgAEQCABIQIMAwsgAyALNgIAIAshAQwDCyAGRQRAQREhAQwECyAIIApqIA4gAWs6AAAgBSAFKAIAQQFqNgIAIAJBEEsEQEETIQEMBAsgA0EEaiACQQJ0aiEGIAEgDmutIREgByEBAkACQAJAA0AgASAGRg0BIAFBBGohBCABIAEoAgCtIBF8IhE+AgAgEUIgiCIRQgBRDQIgBCEBDAALAAsgAkEQTwRAQRkhAQwGCyAGIBE+AgAgAyACQQFqIgE2AgAMAQsgAkEQSwRAQRshAQwFCyACBEAgAiEBBUEAIQIMAwsLQQAhBCADQQRqIAFBAnRqIQEDQCABQXxqIgEoAgAhBiABIAZBAXYgBHI2AgAgBkEfdCEEIAEgB0cNAAsgAygCACIBQQFNDQIgAUF/aiIMQRBPBEBBISEBDAQLIANBBGogDEECdGooAgAEQCABIQIFIAMgDDYCACAMIQEMAwsLCyAHKAIAIQQMAgsgAUEBRyAHKAIAIgRyBEAgASECDAIFQQMhAQsLCwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQNrDi4ACwsBCwsLCwsCCwsLCwMLBAsLCwsLBQsGCwsLCwsHCwsLCAsLCwsJCwsLCwsKCwsgACAIQYQEEDwaIAkkAg8LIAJBEBAnDAkLQbALIA1BEBAoDAgLQawNIApBgAQQKAwHCyACQRAQJwwGC0GQDCACQRAQKAwFCyACQRAQJwwEC0GwCyAMQRAQKAwDC0GsDSAKQYAEECgMAgsgAkEQECcMAQtBsAsgC0EQECgLCwuhAgIFfwF+AkAgACgCACIBQRBLBEAgAUEQECcLIAFFBEAPCyAAQQRqIAFBAnRqIQNCACEGIABBBGohAQNAIAEgASgCAK1CAYYgBnwiBj4CACAGQiCIIQYgAUEEaiIBIANHDQALIAAoAgAhASAGQgBRBEAgASECBSABQRBJBEAgAEEEaiABQQJ0aiAGPgIAIAAgACgCAEEBaiICNgIABUGgDSABQRAQKAsLAkAgAkEIRgRAQQghAgJAAkADQCACQX9qIQEgAkUNBCABQRBPDQEgAEEEaiABQQJ0aigCACIEIAFBAnRBxAlqKAIAIgVGBEAgASECDAELCwwBC0G8CyABQRAQKAsgBCAFSQRADwsFIAJBCEkEQA8LCwsgAEHACRAWCwukBQEHfwJAIwIhBCMCQZABaiQCIAQhASAAKAIAIgJBCUkEQCABQdgMKQIANwIAIAFB4AwpAgA3AgggAUHoDCkCADcCECABQfAMKQIANwIYIAFB+AwpAgA3AiAgAUGADSkCADcCKCABQYgNKQIANwIwIAFBkA0pAgA3AjggAUGYDSkCADcCQAUgAEEINgIAIAEgAkF4ajYCACABQQRqIgIgAEEkaiIDKQIANwIAIAIgAykCCDcCCCACIAMpAhA3AhAgAiADKQIYNwIYIAFBJGoiAkIANwIAIAJCADcCCCACQgA3AhAgAkIANwIYIAJBADoAIAsgBEHIAGohAiABEBwgACABEBUgACgCACIBQQhLBEAgAEEINgIAIAIgAUF4ajYCACACQQRqIgEgAEEkaiIDKQIANwIAIAEgAykCCDcCCCABIAMpAhA3AhAgASADKQIYNwIYIAJBJGoiAUIANwIAIAFCADcCCCABQgA3AhAgAUIANwIYIAFBADoAICACEBwgACACEBUgACgCACEBCyABQQhGBEBBCCEDA0ACQCADQX9qIQIgA0UEQEEUIQMMAQsgAkEQTwRAQQshAwwBCyAAQQRqIAJBAnRqKAIAIgYgAkECdEHECWooAgAiB0YEQCACIQMMAgVBDCEDCwsLIANBC0YEQEG8CyACQRAQKAUgA0EMRgRAIAYgB0khBQUgA0EURgRAIAQkAg8LCwsFIAFBCEkhBQsgBUUEQCAAQcAJEBYgBCQCDwsgAUEBTQRAIAQkAg8LA0ACQCABQX9qIgFBEE8EQEERIQMMAQsgAEEEaiABQQJ0aigCAARAQRQhAwwBCyAAIAE2AgAgAUEBSw0BQRQhAwsLIANBEUYEQEGwCyABQRAQKAUgA0EURgRAIAQkAgsLCwuQAgICfwJ+AkAgACgCACIBQRBPBEBBxA0gAUEQECgLIABBBGogAUECdGpBADYCACAAKAIAQQFqIgFBEE8EQEG4DSABQRAQKAsgAEEEaiABQQJ0akEANgIAIAAgACgCAEECaiICNgIAIAJBEEsEQCACQRAQJwsgAEEEaiEBIAIEQEIAIQMFDwsgAEEEaiACQQJ0aiECA0AgASABKAIArSIEQtEHfiADfCIDPgIAIANCIIggBHwhAyABQQRqIgEgAkcNAAsgACgCACIBQQFNBEAPCwJAAkADQCABQX9qIgFBEE8NASAAQQRqIAFBAnRqKAIADQIgACABNgIAIAFBAUsNAAwCCwALQbALIAFBEBAoCwsL0BACD38EfgJAIwIhByMCQfACaiQCIAciAyABKQIANwIAIAMgASkCCDcCCCADIAEpAhA3AhAgAyABKQIYNwIYIAMgASkCIDcCICADIAEpAig3AiggAyABKQIwNwIwIAMgASkCODcCOCADIAEpAkA3AkAgB0HIAGoiBkHACSkDADcDACAGQcgJKQMANwMIIAZB0AkpAwA3AxAgBkHYCSkDADcDGCAGQeAJKQMANwMgIAZB6AkpAwA3AyggBkHwCSkDADcDMCAGQfgJKQMANwM4IAZBgAopAwA3A0AgB0GQAWoiBEGICikDADcDACAEQZAKKQMANwMIIARBmAopAwA3AxAgBEGgCikDADcDGCAEQagKKQMANwMgIARBsAopAwA3AyggBEG4CikDADcDMCAEQcAKKQMANwM4IARByAopAwA3A0AgB0HYAWoiBUHYDCkCADcCACAFQeAMKQIANwIIIAVB6AwpAgA3AhAgBUHwDCkCADcCGCAFQfgMKQIANwIgIAVBgA0pAgA3AiggBUGIDSkCADcCMCAFQZANKQIANwI4IAVBmA0pAgA3AkACQCADQQRqIgsoAgAiASADKAIAIgJyQQFLBEAgBkEEaiEMIAVBBGohDyAEQQRqIRACQAJAAkACQAJAAkACQAJAAkACQANAIAFoIggEQCACQRBLDQJBICAIayEBIAIEfyAIrSETIAFBP3GtIRRCACERIANBBGogAkECdGohAQNAIAFBfGoiASgCAK0hEiABIBIgE4ggEYQ+AgAgEiAUhiERIAEgC0cNAAsgAygCACIBQQFLBH8gAUF/aiIBQRBPDQUgA0EEaiABQQJ0aigCAAR/QQEFIAMgATYCAEEBCwVBAQsFQQELIQEDQCAQKAIAQQFxBEAgBEHACRAVCyAEKAIAIgJBEEsNBSACBEBBACEJIARBBGogAkECdGohAgNAIAJBfGoiAigCACEKIAIgCkEBdiAJcjYCACAKQR90IQkgAiAQRw0ACyAEKAIAIgJBAUsEQCACQX9qIgJBEE8NCCAEQQRqIAJBAnRqKAIARQRAIAQgAjYCAAsLCyABQQFqIQIgASAISQRAIAIhAQwBCwsLIAwoAgBoIggEQCAGKAIAIgFBEEsNBkEgIAhrIQIgAQR/IAitIRMgAkE/ca0hFEIAIREgBkEEaiABQQJ0aiEBA0AgAUF8aiIBKAIArSESIAEgEiATiCARhD4CACASIBSGIREgASAMRw0ACyAGKAIAIgFBAUsEfyABQX9qIgFBEE8NCSAGQQRqIAFBAnRqKAIABH9BAQUgBiABNgIAQQELBUEBCwVBAQshAQNAIA8oAgBBAXEEQCAFQcAJEBULIAUoAgAiAkEQSw0JIAIEQEEAIQkgBUEEaiACQQJ0aiECA0AgAkF8aiICKAIAIQogAiAKQQF2IAlyNgIAIApBH3QhCSACIA9HDQALIAUoAgAiAkEBSwRAIAJBf2oiAkEQTw0MIAVBBGogAkECdGooAgBFBEAgBSACNgIACwsLIAFBAWohAiABIAhJBEAgAiEBDAELCwsCQAJAAkAgAygCACIBIAYoAgAiAkYEQANAIAFBf2ohAiABRQ0CIAJBEE8NDiADQQRqIAJBAnRqKAIAIgEgBkEEaiACQQJ0aigCACIJRgRAIAIhAQwBCwsgASAJSQ0CBSABIAJJDQILCyADIAYQFiAEIAUQFgwBCyAGIAMQFiAFIAQQFgsgCygCACIBIAMoAgAiAnJBAU0EQCACIQ0gASEODA0LIAwoAgAgBigCAHJBAUsNACACIQ0gASEODAwLAAsgAkEQECcMCAtBsAsgAUEQECgMBwsgAkEQECcMBgtBsAsgAkEQECgMBQsgAUEQECcMBAtBsAsgAUEQECgMAwsgAkEQECcMAgtBsAsgAkEQECgMAQtBvAsgAkEQECgLBSACIQ0gASEOCwsgDUEBRiAOQQFGcQRAIAMgBCkDADcDACADIAQpAwg3AwggAyAEKQMQNwMQIAMgBCkDGDcDGCADIAQpAyA3AyAgAyAEKQMoNwMoIAMgBCkDMDcDMCADIAQpAzg3AzggAyAEKQNANwNABSADIAUpAwA3AwAgAyAFKQMINwMIIAMgBSkDEDcDECADIAUpAxg3AxggAyAFKQMgNwMgIAMgBSkDKDcDKCADIAUpAzA3AzAgAyAFKQM4NwM4IAMgBSkDQDcDQAsgB0GgAmohASADQcQAaiICLAAABEAgA0HACRAVIAIsAAAEQCACQQA6AAAgAxAbIAMoAgBBAUYgCygCAEVxBEAgAEHYDCkCADcCACAAQeAMKQIANwIIIABB6AwpAgA3AhAgAEHwDCkCADcCGCAAQfgMKQIANwIgIABBgA0pAgA3AiggAEGIDSkCADcCMCAAQZANKQIANwI4IABBmA0pAgA3AkAgByQCDwUgAUHACSkDADcDACABQcgJKQMANwMIIAFB0AkpAwA3AxAgAUHYCSkDADcDGCABQeAJKQMANwMgIAFB6AkpAwA3AyggAUHwCSkDADcDMCABQfgJKQMANwM4IAFBgAopAwA3A0AgASADEBYgACABKQIANwIAIAAgASkCCDcCCCAAIAEpAhA3AhAgACABKQIYNwIYIAAgASkCIDcCICAAIAEpAig3AiggACABKQIwNwIwIAAgASkCODcCOCAAIAEpAkA3AkAgByQCDwsACwsgAxAbIAAgAykCADcCACAAIAMpAgg3AgggACADKQIQNwIQIAAgAykCGDcCGCAAIAMpAiA3AiAgACADKQIoNwIoIAAgAykCMDcCMCAAIAMpAjg3AjggACADKQJANwJAIAckAgsLzx8BD38CQCMCIQwjAkGABWokAiAAQZABaiIELAAABEAgDCQCDwsgDCELIAxBuARqIgIgAEHIAGoiCikCADcCACACIAopAgg3AgggAiAKKQIQNwIQIAIgCikCGDcCGCACIAopAiA3AiAgAiAKKQIoNwIoIAIgCikCMDcCMCACIAopAjg3AjggAiAKKQJANwJAIAIgChAVIAxB8ANqIgEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgNBCEYEQEEIIQcCQAJAAkADQCAHQX9qIQMgB0UNBSADQRBPDQEgAUEEaiADQQJ0aigCACIHIANBAnRBxAlqKAIAIgVHDQIgAyEHDAALAAtBvAsgA0EQECgMAQsgByAFTw0CQQghDQsFIANBCE8NASADIQ0LDAELIAFBwAkQFiABKAIAIQ0LIAEoAgQhDiALIAFBCGoiAykCADcCACALIAMpAgg3AgggCyADKQIQNwIQIAsgAykCGDcCGCALIAMpAiA3AiAgCyADKQIoNwIoIAsgAykCMDcCMCALIAMpAjg3AjggDUEBRiAORXEEQCAEQQE6AAAgDCQCDwsgDEGoA2ohCCAMQeACaiEEIAxBmAJqIQUgDEGIAWohBiACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAAQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgDEHAAGoiCSABKQMANwMAIAkgASkDCDcDCCAJIAEpAxA3AxAgCSABKQMYNwMYIAkgASkDIDcDICAJIAEpAyg3AyggCSABKQMwNwMwIAkgASkDODcDOCAJIAEpA0A3A0AgAiAJKQMANwMAIAIgCSkDCDcDCCACIAkpAxA3AxAgAiAJKQMYNwMYIAIgCSkDIDcDICACIAkpAyg3AyggAiAJKQMwNwMwIAIgCSkDODcDOCACIAkpA0A3A0AgAiAJEBUgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0ACQAJAIAEoAgAiA0EIRgRAQQghBwJAAkACQANAIAdBf2ohAyAHRQ0FIANBEE8NASABQQRqIANBAnRqKAIAIgcgA0ECdEHECWooAgAiD0cNAiADIQcMAAsAC0G8CyADQRAQKAwBCyAHIA9PDQILBSADQQhPDQELDAELIAFBwAkQFgsgBCABKQMANwMAIAQgASkDCDcDCCAEIAEpAxA3AxAgBCABKQMYNwMYIAQgASkDIDcDICAEIAEpAyg3AyggBCABKQMwNwMwIAQgASkDODcDOCAEIAEpA0A3A0AgAiAEKQMANwMAIAIgBCkDCDcDCCACIAQpAxA3AxAgAiAEKQMYNwMYIAIgBCkDIDcDICACIAQpAyg3AyggAiAEKQMwNwMwIAIgBCkDODcDOCACIAQpA0A3A0AgAiAJEBUgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0ACQAJAIAEoAgAiA0EIRgRAQQghBwJAAkACQANAIAdBf2ohAyAHRQ0FIANBEE8NASABQQRqIANBAnRqKAIAIgcgA0ECdEHECWooAgAiCUcNAiADIQcMAAsAC0G8CyADQRAQKAwBCyAHIAlPDQILBSADQQhPDQELDAELIAFBwAkQFgsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiANNgIAIAIgDjYCBCACQQhqIgMgCykDADcDACADIAspAwg3AwggAyALKQMQNwMQIAMgCykDGDcDGCADIAspAyA3AyAgAyALKQMoNwMoIAMgCykDMDcDMCADIAspAzg3AzggCCACEB0gAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAIEBcgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgARAbIAYgASkDADcDACAGIAEpAwg3AwggBiABKQMQNwMQIAYgASkDGDcDGCAGIAEpAyA3AyAgBiABKQMoNwMoIAYgASkDMDcDMCAGIAEpAzg3AzggBiABKQNANwNAIAIgBikDADcDACACIAYpAwg3AwggAiAGKQMQNwMQIAIgBikDGDcDGCACIAYpAyA3AyAgAiAGKQMoNwMoIAIgBikDMDcDMCACIAYpAzg3AzggAiAGKQNANwNAIAIgBhAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyAEIAEpAwA3AwAgBCABKQMINwMIIAQgASkDEDcDECAEIAEpAxg3AxggBCABKQMgNwMgIAQgASkDKDcDKCAEIAEpAzA3AzAgBCABKQM4NwM4IAQgASkDQDcDQCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAAQFSABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQAJAAkAgASgCACIDQQhGBEBBCCEHAkACQAJAA0AgB0F/aiEDIAdFDQUgA0EQTw0BIAFBBGogA0ECdGooAgAiByADQQJ0QcQJaigCACILRw0CIAMhBwwACwALQbwLIANBEBAoDAELIAcgC08NAgsFIANBCE8NAQsMAQsgAUHACRAWCyAIIAEpAwA3AwAgCCABKQMINwMIIAggASkDEDcDECAIIAEpAxg3AxggCCABKQMgNwMgIAggASkDKDcDKCAIIAEpAzA3AzAgCCABKQM4NwM4IAggASkDQDcDQCACIAQpAwA3AwAgAiAEKQMINwMIIAIgBCkDEDcDECACIAQpAxg3AxggAiAEKQMgNwMgIAIgBCkDKDcDKCACIAQpAzA3AzAgAiAEKQM4NwM4IAIgBCkDQDcDQCACIAgQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAMQdABaiIDIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAMQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAIIAEpAwA3AwAgCCABKQMINwMIIAggASkDEDcDECAIIAEpAxg3AxggCCABKQMgNwMgIAggASkDKDcDKCAIIAEpAzA3AzAgCCABKQM4NwM4IAggASkDQDcDQCACIAYpAwA3AwAgAiAGKQMINwMIIAIgBikDEDcDECACIAYpAxg3AxggAiAGKQMgNwMgIAIgBikDKDcDKCACIAYpAzA3AzAgAiAGKQM4NwM4IAIgBikDQDcDQCACIAgQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBCABKQMANwMAIAQgASkDCDcDCCAEIAEpAxA3AxAgBCABKQMYNwMYIAQgASkDIDcDICAEIAEpAyg3AyggBCABKQMwNwMwIAQgASkDODcDOCAEIAEpA0A3A0AgAiAEKQMANwMAIAIgBCkDCDcDCCACIAQpAxA3AxAgAiAEKQMYNwMYIAIgBCkDIDcDICACIAQpAyg3AyggAiAEKQMwNwMwIAIgBCkDODcDOCACIAQpA0A3A0AgAiAKEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgCiAFKQIANwIAIAogBSkCCDcCCCAKIAUpAhA3AhAgCiAFKQIYNwIYIAogBSkCIDcCICAKIAUpAig3AiggCiAFKQIwNwIwIAogBSkCODcCOCAKIAUpAkA3AkAgACADKQIANwIAIAAgAykCCDcCCCAAIAMpAhA3AhAgACADKQIYNwIYIAAgAykCIDcCICAAIAMpAig3AiggACADKQIwNwIwIAAgAykCODcCOCAAIAMpAkA3AkAgDCQCCwvCFgETfwJAIwIhCSMCQfC1AmokAiAJQZC0AmohAyAJQcizAmohBSAJQbiyAmohByAJQey1AmohCyAJIgRBCDYCACAEQZiv4LcBNgIEIARB24LKzwU2AgggBEHZ0bjuAjYCDCAEQdv57xQ2AhAgBEGHlpz0fDYCFCAEQZXFga0FNgIYIARBrPfyTjYCHCAEQf7M+c0HNgIgIARBJGoiBkIANwIAIAZCADcCCCAGQgA3AhAgBkIANwIYIAZBADoAICAEQQg2AkggBEHMAGoiD0G4qcNYNgIAIARBj6Gf4nk2AlAgBEGZqJW0ejYCVCAEQcjo3mg2AlggBEGokcTwADYCXCAEQfz3k+0FNgJgIARB5YiPtQI2AmQgBEH3tOvBBDYCaCAEQewAaiIGQgA3AgAgBkIANwIIIAZCADcCECAGQgA3AhggBkEAOgAgIARBkAFqIhBBADoAACAJQdi0AmoiASAEQZQBEDwaIAlB6JkBaiICIARBlAEQPBogAkGUAWogAUGUARA8GiACQagCaiABQZQBEDwaIAJBvANqIAFBlAEQPBogAkHQBGogAUGUARA8GiACQeQFaiABQZQBEDwaIAJB+AZqIAFBlAEQPBogAkGMCGogAUGUARA8GiACQaAJaiABQZQBEDwaIAJBtApqIAFBlAEQPBogAkHIC2ogAUGUARA8GiACQdwMaiABQZQBEDwaIAJB8A1qIAFBlAEQPBogAkGED2ogAUGUARA8GiACQZgQaiABQZQBEDwaIAJBrBFqIAFBlAEQPBogAkHAEmogAUGUARA8GiACQdQTaiABQZQBEDwaIAJB6BRqIAFBlAEQPBogAkH8FWogAUGUARA8GiACQZAXaiABQZQBEDwaIAJBpBhqIAFBlAEQPBogAkG4GWogAUGUARA8GiACQcwaaiABQZQBEDwaIAJB4BtqIAFBlAEQPBogAkH0HGogAUGUARA8GiACQYgeaiABQZQBEDwaIAJBnB9qIAFBlAEQPBogAkGwIGogAUGUARA8GiACQcQhaiABQZQBEDwaIAJB2CJqIAFBlAEQPBogAkHsI2ogAUGUARA8GiACQYAlaiABQZQBEDwaIAJBlCZqIAFBlAEQPBogAkGoJ2ogAUGUARA8GiACQbwoaiABQZQBEDwaIAJB0ClqIAFBlAEQPBogAkHkKmogAUGUARA8GiACQfgraiABQZQBEDwaIAJBjC1qIAFBlAEQPBogAkGgLmogAUGUARA8GiACQbQvaiABQZQBEDwaIAJByDBqIAFBlAEQPBogAkHcMWogAUGUARA8GiACQfAyaiABQZQBEDwaIAJBhDRqIAFBlAEQPBogAkGYNWogAUGUARA8GiACQaw2aiABQZQBEDwaIAJBwDdqIAFBlAEQPBogAkHUOGogAUGUARA8GiACQeg5aiABQZQBEDwaIAJB/DpqIAFBlAEQPBogAkGQPGogAUGUARA8GiACQaQ9aiABQZQBEDwaIAJBuD5qIAFBlAEQPBogAkHMP2ogAUGUARA8GiACQeDAAGogAUGUARA8GiACQfTBAGogAUGUARA8GiACQYjDAGogAUGUARA8GiACQZzEAGogAUGUARA8GiACQbDFAGogAUGUARA8GiACQcTGAGogAUGUARA8GiACQdjHAGogAUGUARA8GiACQezIAGogAUGUARA8GiACQYDKAGogAUGUARA8GiACQZTLAGogAUGUARA8GiAQLAAABH8gByAEQZABEDwaIAsgBEGRAWoiBi4AADsAACALIAYsAAI6AAJBAQUgBSAEKQMANwMAIAUgBCkDCDcDCCAFIAQpAxA3AxAgBSAEKQMYNwMYIAUgBCkDIDcDICAFIAQpAyg3AyggBSAEKQMwNwMwIAUgBCkDODcDOCAFIAQpA0A3A0AgBEHIAGoiBigCAEEBRiAPKAIARXEEQCADQdgMKQIANwIAIANB4AwpAgA3AgggA0HoDCkCADcCECADQfAMKQIANwIYIANB+AwpAgA3AiAgA0GADSkCADcCKCADQYgNKQIANwIwIANBkA0pAgA3AjggA0GYDSkCADcCQAUgAUHACSkDADcDACABQcgJKQMANwMIIAFB0AkpAwA3AxAgAUHYCSkDADcDGCABQeAJKQMANwMgIAFB6AkpAwA3AyggAUHwCSkDADcDMCABQfgJKQMANwM4IAFBgAopAwA3A0AgASAGEBYgAyABKQMANwMAIAMgASkDCDcDCCADIAEpAxA3AxAgAyABKQMYNwMYIAMgASkDIDcDICADIAEpAyg3AyggAyABKQMwNwMwIAMgASkDODcDOCADIAEpA0A3A0ALIAcgBSkDADcDACAHIAUpAwg3AwggByAFKQMQNwMQIAcgBSkDGDcDGCAHIAUpAyA3AyAgByAFKQMoNwMoIAcgBSkDMDcDMCAHIAUpAzg3AzggByAFKQNANwNAIAdByABqIgYgAykDADcDACAGIAMpAwg3AwggBiADKQMQNwMQIAYgAykDGDcDGCAGIAMpAyA3AyAgBiADKQMoNwMoIAYgAykDMDcDMCAGIAMpAzg3AzggBiADKQNANwNAQQALIQwgCUGYAWohDSAJQZDmAWoiCkGozABqIQggCiEGA0AgBiAHQZABEDwaIAYgDDoAkAEgBkGRAWoiDiALLgAAOwAAIA4gCywAAjoAAiAGQZQBaiIGIAhHDQALIA0gAkGozAAQPBogDUGozABqIApBqMwAEDwaIA1BlAFqIRMgBEHIAGohESAHQcgAaiEIIARBkQFqIRIgDUG8zQBqIg4hAkEBIQZBACEKA0AgBBAeIAQQHiAEEB4gBBAeIBMgCkGUAWxqIARBlAEQPBogECwAAAR/IAcgBEGQARA8GiALIBIuAAA7AAAgCyASLAACOgACQQEFIAUgBCkDADcDACAFIAQpAwg3AwggBSAEKQMQNwMQIAUgBCkDGDcDGCAFIAQpAyA3AyAgBSAEKQMoNwMoIAUgBCkDMDcDMCAFIAQpAzg3AzggBSAEKQNANwNAIBEoAgBBAUYgDygCAEVxBEAgA0HYDCkCADcCACADQeAMKQIANwIIIANB6AwpAgA3AhAgA0HwDCkCADcCGCADQfgMKQIANwIgIANBgA0pAgA3AiggA0GIDSkCADcCMCADQZANKQIANwI4IANBmA0pAgA3AkAFIAFBwAkpAwA3AwAgAUHICSkDADcDCCABQdAJKQMANwMQIAFB2AkpAwA3AxggAUHgCSkDADcDICABQegJKQMANwMoIAFB8AkpAwA3AzAgAUH4CSkDADcDOCABQYAKKQMANwNAIAEgERAWIAMgASkDADcDACADIAEpAwg3AwggAyABKQMQNwMQIAMgASkDGDcDGCADIAEpAyA3AyAgAyABKQMoNwMoIAMgASkDMDcDMCADIAEpAzg3AzggAyABKQNANwNACyAHIAUpAwA3AwAgByAFKQMINwMIIAcgBSkDEDcDECAHIAUpAxg3AxggByAFKQMgNwMgIAcgBSkDKDcDKCAHIAUpAzA3AzAgByAFKQM4NwM4IAcgBSkDQDcDQCAIIAMpAwA3AwAgCCADKQMINwMIIAggAykDEDcDECAIIAMpAxg3AxggCCADKQMgNwMgIAggAykDKDcDKCAIIAMpAzA3AzAgCCADKQM4NwM4IAggAykDQDcDQEEACyEMIAIgB0GQARA8GiAOIApBlAFsaiAMOgCQASAOIApBlAFsakGRAWoiCiALLgAAOwAAIAogCywAAjoAAiAOIAZBlAFsaiECIAZBAWoiDEHCAEcEQCAGIQogDCEGDAELCyAAIA1B0JgBEDwaIAkkAgsLwgwBEH8CQCMCIQsjAkGQCmokAiALIgcgAkEBEBkgC0GQCWoiBkIANwAAIAZCADcACCAGQgA3ABAgBkIANwAYIAZCADcAICAGQgA3ACggBkIANwAwIAZCADcAOCAGQgA3AEAgBkIANwBIIAZCADcAUCAGQgA3AFggBkIANwBgIAZCADcAaCAGQgA3AHAgBkIANwB4IAcoAoAEIglBgARLBEAgCUGABBAnCyALQbgHaiEOIAtB4AVqIQQgC0GIBGohBSAJRSEDIAlBBEkEfyAJBUEECyECAkAgAwRAQQAhDQUgCSACayEIIAchAyACIQkgByACaiECQQAhBwJAAkACQANAAkACQAJAAkACQAJAIAlBAWsOBAMCAQAECyADLAACQQJ0Qf8BcSADLAADQQN0Qf8BcWpBGHRBGHUgAywAAUEBdEH/AXFqQRh0QRh1IAMsAABqQRh0QRh1IQMMBAsgAywAAUEBdEH/AXEgAywAAkECdEH/AXFqQRh0QRh1IAMsAABqQRh0QRh1IQMMAwsgAywAAUEBdEH/AXEgAywAAGpBGHRBGHUhAwwCCyADLAAAIQMMAQsMAgsgB0GAAU8NAiAGIAdqIAM6AAAgB0EBaiEHIAhFIQwgCCAIQQRJBH8gCAVBBAsiCmshCCACIgMgCmohDyAMBEBBACEICyAMBEAgAiEPCyAMRQRAIAohCQsgDCACRXIEQCAHIQ0MBgUgDyECDAELAAsAC0HQDRAuDAELQeQNIAdBgAEQKAsLCyAFQYgKKQMANwMAIAVBkAopAwA3AwggBUGYCikDADcDECAFQaAKKQMANwMYIAVBqAopAwA3AyAgBUGwCikDADcDKCAFQbgKKQMANwMwIAVBwAopAwA3AzggBUHICikDADcDQCAFQcgAaiICQYgKKQMANwMAIAJBkAopAwA3AwggAkGYCikDADcDECACQaAKKQMANwMYIAJBqAopAwA3AyAgAkGwCikDADcDKCACQbgKKQMANwMwIAJBwAopAwA3AzggAkHICikDADcDQCAFQZABaiICQdgMKQIANwIAIAJB4AwpAgA3AgggAkHoDCkCADcCECACQfAMKQIANwIYIAJB+AwpAgA3AiAgAkGADSkCADcCKCACQYgNKQIANwIwIAJBkA0pAgA3AjggAkGYDSkCADcCQCAEQYgKKQMANwMAIARBkAopAwA3AwggBEGYCikDADcDECAEQaAKKQMANwMYIARBqAopAwA3AyAgBEGwCikDADcDKCAEQbgKKQMANwMwIARBwAopAwA3AzggBEHICikDADcDQCAEQcgAaiICQYgKKQMANwMAIAJBkAopAwA3AwggAkGYCikDADcDECACQaAKKQMANwMYIAJBqAopAwA3AyAgAkGwCikDADcDKCACQbgKKQMANwMwIAJBwAopAwA3AzggAkHICikDADcDQCAEQZABaiICQdgMKQIANwIAIAJB4AwpAgA3AgggAkHoDCkCADcCECACQfAMKQIANwIYIAJB+AwpAgA3AiAgAkGADSkCADcCKCACQYgNKQIANwIwIAJBkA0pAgA3AjggAkGYDSkCADcCQCANRSICBEAgBSAEECEgBSAEECEgBSAEECEgBSAEECEgBSAEECEgBSAEECEgBSAEECEgBSAEECEgBSAEECEgBSAEECEgDiAFQdgBEDwaIAAgDhAiIAskAg8FQQohCgsgBiANaiERIAYhCSAGQQFqIQMgAgR/IAkFIAMLIQYgAkEBc0EBcSEMAkACQAJAAkADQEEAIAprQRh0QRh1IRJBACEIIAYhAiAJIQMgDCEHA0AgAywAACIDIApBGHRBGHVGBEAgCEHCAE8NBCAEIAEgCEGUAWxqECMFIAMgEkYEQCAIQcIATw0GIAQgAUGozABqIAhBlAFsahAjCwsgAiIDIBFGIRAgA0EBaiEDIBAEfyACBSADCyEPIBBBAXMgB2ohDSAQRQRAIAchCAsgAkUgEHJFBEAgAiEDIA8hAiANIQcMAQsLIAUgBBAhIApBf2pBGHRBGHUhAiAKQRh0QRh1QQFMDQEgAiEKDAALAAsgDiAFQdgBEDwaIAAgDhAiIAskAg8LQfANIAhBwgAQKAwBC0H8DSAIQcIAECgLCwu9OgEPfwJAIwIhDCMCQeAKaiQCIAAoApABQQFGBEAgACgClAFFBEAgACABQdgBEDwaIAwkAg8LCyABKAKQAUEBRgRAIAEoApQBRQRAIAwkAg8LCyAMQYAJaiICIAFBkAFqIg4pAgA3AgAgAiAOKQIINwIIIAIgDikCEDcCECACIA4pAhg3AhggAiAOKQIgNwIgIAIgDikCKDcCKCACIA4pAjA3AjAgAiAOKQI4NwI4IAIgDikCQDcCQCACIA4QFyAMQbgIaiIDIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDCIGIAMpAwA3AwAgBiADKQMINwMIIAYgAykDEDcDECAGIAMpAxg3AxggBiADKQMgNwMgIAYgAykDKDcDKCAGIAMpAzA3AzAgBiADKQM4NwM4IAYgAykDQDcDQCACIABBkAFqIgkpAgA3AgAgAiAJKQIINwIIIAIgCSkCEDcCECACIAkpAhg3AhggAiAJKQIgNwIgIAIgCSkCKDcCKCACIAkpAjA3AjAgAiAJKQI4NwI4IAIgCSkCQDcCQCACIAkQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDEHIAGoiBSADKQMANwMAIAUgAykDCDcDCCAFIAMpAxA3AxAgBSADKQMYNwMYIAUgAykDIDcDICAFIAMpAyg3AyggBSADKQMwNwMwIAUgAykDODcDOCAFIAMpA0A3A0AgAiAAKQIANwIAIAIgACkCCDcCCCACIAApAhA3AhAgAiAAKQIYNwIYIAIgACkCIDcCICACIAApAig3AiggAiAAKQIwNwIwIAIgACkCODcCOCACIAApAkA3AkAgAiAGEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAxBkAFqIgcgAykDADcDACAHIAMpAwg3AwggByADKQMQNwMQIAcgAykDGDcDGCAHIAMpAyA3AyAgByADKQMoNwMoIAcgAykDMDcDMCAHIAMpAzg3AzggByADKQNANwNAIAIgASkCADcCACACIAEpAgg3AgggAiABKQIQNwIQIAIgASkCGDcCGCACIAEpAiA3AiAgAiABKQIoNwIoIAIgASkCMDcCMCACIAEpAjg3AjggAiABKQJANwJAIAIgBRAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAMQdgBaiIIIAMpAwA3AwAgCCADKQMINwMIIAggAykDEDcDECAIIAMpAxg3AxggCCADKQMgNwMgIAggAykDKDcDKCAIIAMpAzA3AzAgCCADKQM4NwM4IAggAykDQDcDQCACIABByABqIg0pAgA3AgAgAiANKQIINwIIIAIgDSkCEDcCECACIA0pAhg3AhggAiANKQIgNwIgIAIgDSkCKDcCKCACIA0pAjA3AjAgAiANKQI4NwI4IAIgDSkCQDcCQCACIAYQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDEHwB2oiBCADKQMANwMAIAQgAykDCDcDCCAEIAMpAxA3AxAgBCADKQMYNwMYIAQgAykDIDcDICAEIAMpAyg3AyggBCADKQMwNwMwIAQgAykDODcDOCAEIAMpA0A3A0AgAiAEKQMANwMAIAIgBCkDCDcDCCACIAQpAxA3AxAgAiAEKQMYNwMYIAIgBCkDIDcDICACIAQpAyg3AyggAiAEKQMwNwMwIAIgBCkDODcDOCACIAQpA0A3A0AgAiAOEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAxBoAJqIgogAykDADcDACAKIAMpAwg3AwggCiADKQMQNwMQIAogAykDGDcDGCAKIAMpAyA3AyAgCiADKQMoNwMoIAogAykDMDcDMCAKIAMpAzg3AzggCiADKQNANwNAIAIgAUHIAGoiASkCADcCACACIAEpAgg3AgggAiABKQIQNwIQIAIgASkCGDcCGCACIAEpAiA3AiAgAiABKQIoNwIoIAIgASkCMDcCMCACIAEpAjg3AjggAiABKQJANwJAIAIgBRAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAEIAMpAwA3AwAgBCADKQMINwMIIAQgAykDEDcDECAEIAMpAxg3AxggBCADKQMgNwMgIAQgAykDKDcDKCAEIAMpAzA3AzAgBCADKQM4NwM4IAQgAykDQDcDQCACIAQpAwA3AwAgAiAEKQMINwMIIAIgBCkDEDcDECACIAQpAxg3AxggAiAEKQMgNwMgIAIgBCkDKDcDKCACIAQpAzA3AzAgAiAEKQM4NwM4IAIgBCkDQDcDQCACIAkQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDEHoAmoiASADKQMANwMAIAEgAykDCDcDCCABIAMpAxA3AxAgASADKQMYNwMYIAEgAykDIDcDICABIAMpAyg3AyggASADKQMwNwMwIAEgAykDODcDOCABIAMpA0A3A0AgAiAHKQMANwMAIAIgBykDCDcDCCACIAcpAxA3AxAgAiAHKQMYNwMYIAIgBykDIDcDICACIAcpAyg3AyggAiAHKQMwNwMwIAIgBykDODcDOCACIAcpA0A3A0AgAiAIEBYgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAywARARAIANBwAkQFQsgDEGwA2oiCyADKQMANwMAIAsgAykDCDcDCCALIAMpAxA3AxAgCyADKQMYNwMYIAsgAykDIDcDICALIAMpAyg3AyggCyADKQMwNwMwIAsgAykDODcDOCALIAMpA0A3A0AgAiAKKQMANwMAIAIgCikDCDcDCCACIAopAxA3AxAgAiAKKQMYNwMYIAIgCikDIDcDICACIAopAyg3AyggAiAKKQMwNwMwIAIgCikDODcDOCACIAopA0A3A0AgAiABEBYgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAywARARAIANBwAkQFQsgDEH4A2oiCCADKQMANwMAIAggAykDCDcDCCAIIAMpAxA3AxAgCCADKQMYNwMYIAggAykDIDcDICAIIAMpAyg3AyggCCADKQMwNwMwIAggAykDODcDOCAIIAMpA0A3A0AgCygCAEEBRgRAIAsoAgRFBEACQAJAIAgoAgBBAUcNACAIKAIEDQAgABAkDAELIAJBiAopAwA3AwAgAkGQCikDADcDCCACQZgKKQMANwMQIAJBoAopAwA3AxggAkGoCikDADcDICACQbAKKQMANwMoIAJBuAopAwA3AzAgAkHACikDADcDOCACQcgKKQMANwNAIAJByABqIgFBiAopAwA3AwAgAUGQCikDADcDCCABQZgKKQMANwMQIAFBoAopAwA3AxggAUGoCikDADcDICABQbAKKQMANwMoIAFBuAopAwA3AzAgAUHACikDADcDOCABQcgKKQMANwNAIAJBkAFqIgFB2AwpAgA3AgAgAUHgDCkCADcCCCABQegMKQIANwIQIAFB8AwpAgA3AhggAUH4DCkCADcCICABQYANKQIANwIoIAFBiA0pAgA3AjAgAUGQDSkCADcCOCABQZgNKQIANwJAIAAgAkHYARA8GgsgDCQCDwsLIAxBqAdqIQUgAiALKQMANwMAIAIgCykDCDcDCCACIAspAxA3AxAgAiALKQMYNwMYIAIgCykDIDcDICACIAspAyg3AyggAiALKQMwNwMwIAIgCykDODcDOCACIAspA0A3A0AgAiALEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAxBwARqIgEgAykDADcDACABIAMpAwg3AwggASADKQMQNwMQIAEgAykDGDcDGCABIAMpAyA3AyAgASADKQMoNwMoIAEgAykDMDcDMCABIAMpAzg3AzggASADKQNANwNAIAIgBykDADcDACACIAcpAwg3AwggAiAHKQMQNwMQIAIgBykDGDcDGCACIAcpAyA3AyAgAiAHKQMoNwMoIAIgBykDMDcDMCACIAcpAzg3AzggAiAHKQNANwNAIAIgARAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAMQYgFaiIHIAMpAwA3AwAgByADKQMINwMIIAcgAykDEDcDECAHIAMpAxg3AxggByADKQMgNwMgIAcgAykDKDcDKCAHIAMpAzA3AzAgByADKQM4NwM4IAcgAykDQDcDQCACIAEpAwA3AwAgAiABKQMINwMIIAIgASkDEDcDECACIAEpAxg3AxggAiABKQMgNwMgIAIgASkDKDcDKCACIAEpAzA3AzAgAiABKQM4NwM4IAIgASkDQDcDQCACIAsQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDEHQBWoiDyADKQMANwMAIA8gAykDCDcDCCAPIAMpAxA3AxAgDyADKQMYNwMYIA8gAykDIDcDICAPIAMpAyg3AyggDyADKQMwNwMwIA8gAykDODcDOCAPIAMpA0A3A0AgAiAIKQMANwMAIAIgCCkDCDcDCCACIAgpAxA3AxAgAiAIKQMYNwMYIAIgCCkDIDcDICACIAgpAyg3AyggAiAIKQMwNwMwIAIgCCkDODcDOCACIAgpA0A3A0AgAiAIEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAQgAykDADcDACAEIAMpAwg3AwggBCADKQMQNwMQIAQgAykDGDcDGCAEIAMpAyA3AyAgBCADKQMoNwMoIAQgAykDMDcDMCAEIAMpAzg3AzggBCADKQNANwNAIAIgBCkDADcDACACIAQpAwg3AwggAiAEKQMQNwMQIAIgBCkDGDcDGCACIAQpAyA3AyAgAiAEKQMoNwMoIAIgBCkDMDcDMCACIAQpAzg3AzggAiAEKQNANwNAIAIgDxAVIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAAkACQCADKAIAIgFBCEYEQEEIIQYCQAJAAkADQCAGQX9qIQEgBkUNBSABQRBPDQEgA0EEaiABQQJ0aigCACIGIAFBAnRBxAlqKAIAIhBHDQIgASEGDAALAAtBvAsgAUEQECgMAQsgBiAQTw0CCwUgAUEITw0BCwwBCyADQcAJEBYLIAUgAykDADcDACAFIAMpAwg3AwggBSADKQMQNwMQIAUgAykDGDcDGCAFIAMpAyA3AyAgBSADKQMoNwMoIAUgAykDMDcDMCAFIAMpAzg3AzggBSADKQNANwNAIAIgBSkDADcDACACIAUpAwg3AwggAiAFKQMQNwMQIAIgBSkDGDcDGCACIAUpAyA3AyAgAiAFKQMoNwMoIAIgBSkDMDcDMCACIAUpAzg3AzggAiAFKQNANwNAIAIgBxAWIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMsAEQEQCADQcAJEBULIAxB4AZqIgEgAykDADcDACABIAMpAwg3AwggASADKQMQNwMQIAEgAykDGDcDGCABIAMpAyA3AyAgASADKQMoNwMoIAEgAykDMDcDMCABIAMpAzg3AzggASADKQNANwNAIAIgASkDADcDACACIAEpAwg3AwggAiABKQMQNwMQIAIgASkDGDcDGCACIAEpAyA3AyAgAiABKQMoNwMoIAIgASkDMDcDMCACIAEpAzg3AzggAiABKQNANwNAIAIgBxAWIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMsAEQEQCADQcAJEBULIAxBmAZqIgYgAykDADcDACAGIAMpAwg3AwggBiADKQMQNwMQIAYgAykDGDcDGCAGIAMpAyA3AyAgBiADKQMoNwMoIAYgAykDMDcDMCAGIAMpAzg3AzggBiADKQNANwNAIAAgBikCADcCACAAIAYpAgg3AgggACAGKQIQNwIQIAAgBikCGDcCGCAAIAYpAiA3AiAgACAGKQIoNwIoIAAgBikCMDcCMCAAIAYpAjg3AjggACAGKQJANwJAIAIgBykDADcDACACIAcpAwg3AwggAiAHKQMQNwMQIAIgBykDGDcDGCACIAcpAyA3AyAgAiAHKQMoNwMoIAIgBykDMDcDMCACIAcpAzg3AzggAiAHKQNANwNAIAIgABAWIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMsAEQEQCADQcAJEBULIAUgAykDADcDACAFIAMpAwg3AwggBSADKQMQNwMQIAUgAykDGDcDGCAFIAMpAyA3AyAgBSADKQMoNwMoIAUgAykDMDcDMCAFIAMpAzg3AzggBSADKQNANwNAIAIgCCkDADcDACACIAgpAwg3AwggAiAIKQMQNwMQIAIgCCkDGDcDGCACIAgpAyA3AyAgAiAIKQMoNwMoIAIgCCkDMDcDMCACIAgpAzg3AzggAiAIKQNANwNAIAIgBRAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyABIAMpAwA3AwAgASADKQMINwMIIAEgAykDEDcDECABIAMpAxg3AxggASADKQMgNwMgIAEgAykDKDcDKCABIAMpAzA3AzAgASADKQM4NwM4IAEgAykDQDcDQCACIAopAwA3AwAgAiAKKQMINwMIIAIgCikDEDcDECACIAopAxg3AxggAiAKKQMgNwMgIAIgCikDKDcDKCACIAopAzA3AzAgAiAKKQM4NwM4IAIgCikDQDcDQCACIA8QFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgBCADKQMANwMAIAQgAykDCDcDCCAEIAMpAxA3AxAgBCADKQMYNwMYIAQgAykDIDcDICAEIAMpAyg3AyggBCADKQMwNwMwIAQgAykDODcDOCAEIAMpA0A3A0AgAiABKQMANwMAIAIgASkDCDcDCCACIAEpAxA3AxAgAiABKQMYNwMYIAIgASkDIDcDICACIAEpAyg3AyggAiABKQMwNwMwIAIgASkDODcDOCACIAEpA0A3A0AgAiAEEBYgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAywARARAIANBwAkQFQsgBiADKQMANwMAIAYgAykDCDcDCCAGIAMpAxA3AxAgBiADKQMYNwMYIAYgAykDIDcDICAGIAMpAyg3AyggBiADKQMwNwMwIAYgAykDODcDOCAGIAMpA0A3A0AgDSAGKQIANwIAIA0gBikCCDcCCCANIAYpAhA3AhAgDSAGKQIYNwIYIA0gBikCIDcCICANIAYpAig3AiggDSAGKQIwNwIwIA0gBikCODcCOCANIAYpAkA3AkAgAiAJKQIANwIAIAIgCSkCCDcCCCACIAkpAhA3AhAgAiAJKQIYNwIYIAIgCSkCIDcCICACIAkpAig3AiggAiAJKQIwNwIwIAIgCSkCODcCOCACIAkpAkA3AkAgAiAOEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAQgAykDADcDACAEIAMpAwg3AwggBCADKQMQNwMQIAQgAykDGDcDGCAEIAMpAyA3AyAgBCADKQMoNwMoIAQgAykDMDcDMCAEIAMpAzg3AzggBCADKQNANwNAIAIgBCkDADcDACACIAQpAwg3AwggAiAEKQMQNwMQIAIgBCkDGDcDGCACIAQpAyA3AyAgAiAEKQMoNwMoIAIgBCkDMDcDMCACIAQpAzg3AzggAiAEKQNANwNAIAIgCxAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAFIAMpAwA3AwAgBSADKQMINwMIIAUgAykDEDcDECAFIAMpAxg3AxggBSADKQMgNwMgIAUgAykDKDcDKCAFIAMpAzA3AzAgBSADKQM4NwM4IAUgAykDQDcDQCAJIAUpAgA3AgAgCSAFKQIINwIIIAkgBSkCEDcCECAJIAUpAhg3AhggCSAFKQIgNwIgIAkgBSkCKDcCKCAJIAUpAjA3AjAgCSAFKQI4NwI4IAkgBSkCQDcCQCAMJAILC94KAQt/AkAjAiEJIwJBgAVqJAIgCUG4BGohAiAJQfADaiEDIAlBqANqIQQgCUHgAmohBSAJQZgCaiEIIAlB0AFqIQcgCUHAAGoiCiABQZABEDwaIAEoApABIQsgASgClAEhDCAJIgYgAUGYAWoiASkCADcCACAGIAEpAgg3AgggBiABKQIQNwIQIAYgASkCGDcCGCAGIAEpAiA3AiAgBiABKQIoNwIoIAYgASkCMDcCMCAGIAEpAjg3AjggC0EBRiAMRXEEQCAAQYgOQZQBEDwaIAkkAgUgAiALNgIAIAIgDDYCBCACQQhqIgEgBikDADcDACABIAYpAwg3AwggASAGKQMQNwMQIAEgBikDGDcDGCABIAYpAyA3AyAgASAGKQMoNwMoIAEgBikDMDcDMCABIAYpAzg3AzggByACEB0gAiAHKQMANwMAIAIgBykDCDcDCCACIAcpAxA3AxAgAiAHKQMYNwMYIAIgBykDIDcDICACIAcpAyg3AyggAiAHKQMwNwMwIAIgBykDODcDOCACIAcpA0A3A0AgAiAHEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAggAykDADcDACAIIAMpAwg3AwggCCADKQMQNwMQIAggAykDGDcDGCAIIAMpAyA3AyAgCCADKQMoNwMoIAggAykDMDcDMCAIIAMpAzg3AzggCCADKQNANwNAIAIgCikDADcDACACIAopAwg3AwggAiAKKQMQNwMQIAIgCikDGDcDGCACIAopAyA3AyAgAiAKKQMoNwMoIAIgCikDMDcDMCACIAopAzg3AzggAiAKKQNANwNAIAIgCBAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAFIAMpAwA3AwAgBSADKQMINwMIIAUgAykDEDcDECAFIAMpAxg3AxggBSADKQMgNwMgIAUgAykDKDcDKCAFIAMpAzA3AzAgBSADKQM4NwM4IAUgAykDQDcDQCACIApByABqIgEpAwA3AwAgAiABKQMINwMIIAIgASkDEDcDECACIAEpAxg3AxggAiABKQMgNwMgIAIgASkDKDcDKCACIAEpAzA3AzAgAiABKQM4NwM4IAIgASkDQDcDQCACIAgQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgBCADKQMANwMAIAQgAykDCDcDCCAEIAMpAxA3AxAgBCADKQMYNwMYIAQgAykDIDcDICAEIAMpAyg3AyggBCADKQMwNwMwIAQgAykDODcDOCAEIAMpA0A3A0AgBCAHEBcgBBAbIAAgBSkCADcCACAAIAUpAgg3AgggACAFKQIQNwIQIAAgBSkCGDcCGCAAIAUpAiA3AiAgACAFKQIoNwIoIAAgBSkCMDcCMCAAIAUpAjg3AjggACAFKQJANwJAIABByABqIgEgBCkCADcCACABIAQpAgg3AgggASAEKQIQNwIQIAEgBCkCGDcCGCABIAQpAiA3AiAgASAEKQIoNwIoIAEgBCkCMDcCMCABIAQpAjg3AjggASAEKQJANwJAIABBADoAkAEgCSQCCwsLhC0BDX8CQCMCIQwjAkHQCWokAiAMQbgIaiEDIAxB4AZqIQIgACgCkAFBAUYEQCAAKAKUAUUEQCABLACQASEHIAMgAUGQARA8GiAHQQFxBEAgAkGICikDADcDACACQZAKKQMANwMIIAJBmAopAwA3AxAgAkGgCikDADcDGCACQagKKQMANwMgIAJBsAopAwA3AyggAkG4CikDADcDMCACQcAKKQMANwM4IAJByAopAwA3A0AgAkHIAGoiAUGICikDADcDACABQZAKKQMANwMIIAFBmAopAwA3AxAgAUGgCikDADcDGCABQagKKQMANwMgIAFBsAopAwA3AyggAUG4CikDADcDMCABQcAKKQMANwM4IAFByAopAwA3A0AgAkGQAWoiAUHYDCkCADcCACABQeAMKQIANwIIIAFB6AwpAgA3AhAgAUHwDCkCADcCGCABQfgMKQIANwIgIAFBgA0pAgA3AiggAUGIDSkCADcCMCABQZANKQIANwI4IAFBmA0pAgA3AkAFIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAJByABqIgEgA0HIAGoiBykDADcDACABIAcpAwg3AwggASAHKQMQNwMQIAEgBykDGDcDGCABIAcpAyA3AyAgASAHKQMoNwMoIAEgBykDMDcDMCABIAcpAzg3AzggASAHKQNANwNAIAJBkAFqIgFBiAopAwA3AwAgAUGQCikDADcDCCABQZgKKQMANwMQIAFBoAopAwA3AxggAUGoCikDADcDICABQbAKKQMANwMoIAFBuAopAwA3AzAgAUHACikDADcDOCABQcgKKQMANwNACyAAIAJB2AEQPBogDCQCDwsLIAEsAJABBEAgDCQCDwsgAyAAQZABaiIKKQIANwIAIAMgCikCCDcCCCADIAopAhA3AhAgAyAKKQIYNwIYIAMgCikCIDcCICADIAopAig3AiggAyAKKQIwNwIwIAMgCikCODcCOCADIAopAkA3AkAgAyAKEBcgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAhAbIAwiByACKQMANwMAIAcgAikDCDcDCCAHIAIpAxA3AxAgByACKQMYNwMYIAcgAikDIDcDICAHIAIpAyg3AyggByACKQMwNwMwIAcgAikDODcDOCAHIAIpA0A3A0AgAyABKQIANwIAIAMgASkCCDcCCCADIAEpAhA3AhAgAyABKQIYNwIYIAMgASkCIDcCICADIAEpAig3AiggAyABKQIwNwIwIAMgASkCODcCOCADIAEpAkA3AkAgAyAHEBcgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAhAbIAxByABqIgQgAikDADcDACAEIAIpAwg3AwggBCACKQMQNwMQIAQgAikDGDcDGCAEIAIpAyA3AyAgBCACKQMoNwMoIAQgAikDMDcDMCAEIAIpAzg3AzggBCACKQNANwNAIAMgAUHIAGoiASkCADcCACADIAEpAgg3AgggAyABKQIQNwIQIAMgASkCGDcCGCADIAEpAiA3AiAgAyABKQIoNwIoIAMgASkCMDcCMCADIAEpAjg3AjggAyABKQJANwJAIAMgBxAXIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIQGyAMQZABaiIBIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABIAoQFyABEBsgAyAAKQIANwIAIAMgACkCCDcCCCADIAApAhA3AhAgAyAAKQIYNwIYIAMgACkCIDcCICADIAApAig3AiggAyAAKQIwNwIwIAMgACkCODcCOCADIAApAkA3AkAgAyAEEBYgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAiwARARAIAJBwAkQFQsgDEHYAWoiCSACKQMANwMAIAkgAikDCDcDCCAJIAIpAxA3AxAgCSACKQMYNwMYIAkgAikDIDcDICAJIAIpAyg3AyggCSACKQMwNwMwIAkgAikDODcDOCAJIAIpA0A3A0AgAyAAQcgAaiIEKQIANwIAIAMgBCkCCDcCCCADIAQpAhA3AhAgAyAEKQIYNwIYIAMgBCkCIDcCICADIAQpAig3AiggAyAEKQIwNwIwIAMgBCkCODcCOCADIAQpAkA3AkAgAyABEBYgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAiwARARAIAJBwAkQFQsgDEGgAmoiBSACKQMANwMAIAUgAikDCDcDCCAFIAIpAxA3AxAgBSACKQMYNwMYIAUgAikDIDcDICAFIAIpAyg3AyggBSACKQMwNwMwIAUgAikDODcDOCAFIAIpA0A3A0AgCSgCAEEBRgRAIAkoAgRFBEACQAJAIAUoAgBBAUcNACAFKAIEDQAgABAkDAELIABBiAopAgA3AgAgAEGQCikCADcCCCAAQZgKKQIANwIQIABBoAopAgA3AhggAEGoCikCADcCICAAQbAKKQIANwIoIABBuAopAgA3AjAgAEHACikCADcCOCAAQcgKKQIANwJAIARBiAopAgA3AgAgBEGQCikCADcCCCAEQZgKKQIANwIQIARBoAopAgA3AhggBEGoCikCADcCICAEQbAKKQIANwIoIARBuAopAgA3AjAgBEHACikCADcCOCAEQcgKKQIANwJAIApB2AwpAgA3AgAgCkHgDCkCADcCCCAKQegMKQIANwIQIApB8AwpAgA3AhggCkH4DCkCADcCICAKQYANKQIANwIoIApBiA0pAgA3AjAgCkGQDSkCADcCOCAKQZgNKQIANwJACyAMJAIPCwsgDEHQBWohBiADIAkpAwA3AwAgAyAJKQMINwMIIAMgCSkDEDcDECADIAkpAxg3AxggAyAJKQMgNwMgIAMgCSkDKDcDKCADIAkpAzA3AzAgAyAJKQM4NwM4IAMgCSkDQDcDQCADIAkQFyACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACEBsgDEHoAmoiASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgAyAAKQIANwIAIAMgACkCCDcCCCADIAApAhA3AhAgAyAAKQIYNwIYIAMgACkCIDcCICADIAApAig3AiggAyAAKQIwNwIwIAMgACkCODcCOCADIAApAkA3AkAgAyABEBcgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAhAbIAxBsANqIgsgAikDADcDACALIAIpAwg3AwggCyACKQMQNwMQIAsgAikDGDcDGCALIAIpAyA3AyAgCyACKQMoNwMoIAsgAikDMDcDMCALIAIpAzg3AzggCyACKQNANwNAIAMgASkDADcDACADIAEpAwg3AwggAyABKQMQNwMQIAMgASkDGDcDGCADIAEpAyA3AyAgAyABKQMoNwMoIAMgASkDMDcDMCADIAEpAzg3AzggAyABKQNANwNAIAMgCRAXIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIQGyAMQfgDaiINIAIpAwA3AwAgDSACKQMINwMIIA0gAikDEDcDECANIAIpAxg3AxggDSACKQMgNwMgIA0gAikDKDcDKCANIAIpAzA3AzAgDSACKQM4NwM4IA0gAikDQDcDQCADIAUpAwA3AwAgAyAFKQMINwMIIAMgBSkDEDcDECADIAUpAxg3AxggAyAFKQMgNwMgIAMgBSkDKDcDKCADIAUpAzA3AzAgAyAFKQM4NwM4IAMgBSkDQDcDQCADIAUQFyACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACEBsgDEGYBmoiCCACKQMANwMAIAggAikDCDcDCCAIIAIpAxA3AxAgCCACKQMYNwMYIAggAikDIDcDICAIIAIpAyg3AyggCCACKQMwNwMwIAggAikDODcDOCAIIAIpA0A3A0AgAyAIKQMANwMAIAMgCCkDCDcDCCADIAgpAxA3AxAgAyAIKQMYNwMYIAMgCCkDIDcDICADIAgpAyg3AyggAyAIKQMwNwMwIAMgCCkDODcDOCADIAgpA0A3A0AgAyANEBUgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0ACQAJAIAIoAgAiAUEIRgRAQQghBwJAAkACQANAIAdBf2ohASAHRQ0FIAFBEE8NASACQQRqIAFBAnRqKAIAIgcgAUECdEHECWooAgAiDkcNAiABIQcMAAsAC0G8CyABQRAQKAwBCyAHIA5PDQILBSABQQhPDQELDAELIAJBwAkQFgsgBiACKQMANwMAIAYgAikDCDcDCCAGIAIpAxA3AxAgBiACKQMYNwMYIAYgAikDIDcDICAGIAIpAyg3AyggBiACKQMwNwMwIAYgAikDODcDOCAGIAIpA0A3A0AgAyAGKQMANwMAIAMgBikDCDcDCCADIAYpAxA3AxAgAyAGKQMYNwMYIAMgBikDIDcDICADIAYpAyg3AyggAyAGKQMwNwMwIAMgBikDODcDOCADIAYpA0A3A0AgAyALEBYgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAiALEBYgAkHEAGoiASwAAARAA0AgAkHACRAVIAEsAAANAAsLIAxBiAVqIgEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAAgASkCADcCACAAIAEpAgg3AgggACABKQIQNwIQIAAgASkCGDcCGCAAIAEpAiA3AiAgACABKQIoNwIoIAAgASkCMDcCMCAAIAEpAjg3AjggACABKQJANwJAIAMgCykDADcDACADIAspAwg3AwggAyALKQMQNwMQIAMgCykDGDcDGCADIAspAyA3AyAgAyALKQMoNwMoIAMgCykDMDcDMCADIAspAzg3AzggAyALKQNANwNAIAMgABAWIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIsAEQEQCACQcAJEBULIAYgAikDADcDACAGIAIpAwg3AwggBiACKQMQNwMQIAYgAikDGDcDGCAGIAIpAyA3AyAgBiACKQMoNwMoIAYgAikDMDcDMCAGIAIpAzg3AzggBiACKQNANwNAIAMgBSkDADcDACADIAUpAwg3AwggAyAFKQMQNwMQIAMgBSkDGDcDGCADIAUpAyA3AyAgAyAFKQMoNwMoIAMgBSkDMDcDMCADIAUpAzg3AzggAyAFKQNANwNAIAMgBhAXIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIQGyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCADIAQpAgA3AgAgAyAEKQIINwIIIAMgBCkCEDcCECADIAQpAhg3AhggAyAEKQIgNwIgIAMgBCkCKDcCKCADIAQpAjA3AjAgAyAEKQI4NwI4IAMgBCkCQDcCQCADIA0QFyACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACEBsgCCACKQMANwMAIAggAikDCDcDCCAIIAIpAxA3AxAgCCACKQMYNwMYIAggAikDIDcDICAIIAIpAyg3AyggCCACKQMwNwMwIAggAikDODcDOCAIIAIpA0A3A0AgAyABKQMANwMAIAMgASkDCDcDCCADIAEpAxA3AxAgAyABKQMYNwMYIAMgASkDIDcDICADIAEpAyg3AyggAyABKQMwNwMwIAMgASkDODcDOCADIAEpA0A3A0AgAyAIEBYgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAiwARARAIAJBwAkQFQsgDEHABGoiACACKQMANwMAIAAgAikDCDcDCCAAIAIpAxA3AxAgACACKQMYNwMYIAAgAikDIDcDICAAIAIpAyg3AyggACACKQMwNwMwIAAgAikDODcDOCAAIAIpA0A3A0AgBCAAKQIANwIAIAQgACkCCDcCCCAEIAApAhA3AhAgBCAAKQIYNwIYIAQgACkCIDcCICAEIAApAig3AiggBCAAKQIwNwIwIAQgACkCODcCOCAEIAApAkA3AkAgCiAJEBcgChAbIAwkAgsLklcBE38CQCMCIREjAkHwB2okAiAAKAKQAUEBRiIIBEAgACgClAFFBEAgESQCDwsLIBFBqAdqIQIgEUHgBmohASARQZgGaiEDIBFB0AVqIQUgEUGIBWohBiARQcAEaiEOIBFB+ANqIQcgEUGwA2ohCyARQegCaiENIBFBoAJqIQQgEUHYAWohCSARQZABaiEKIBFByABqIRAgESEPIABBkAFqIRICfwJAIAhFDQAgACgClAFBAUcNACACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAAQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgCSABKQMANwMAIAkgASkDCDcDCCAJIAEpAxA3AxAgCSABKQMYNwMYIAkgASkDIDcDICAJIAEpAyg3AyggCSABKQMwNwMwIAkgASkDODcDOCAJIAEpA0A3A0AgAiAAQcgAaiIMKQIANwIAIAIgDCkCCDcCCCACIAwpAhA3AhAgAiAMKQIYNwIYIAIgDCkCIDcCICACIAwpAig3AiggAiAMKQIwNwIwIAIgDCkCODcCOCACIAwpAkA3AkAgAiAMEBcgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgARAbIAQgASkDADcDACAEIAEpAwg3AwggBCABKQMQNwMQIAQgASkDGDcDGCAEIAEpAyA3AyAgBCABKQMoNwMoIAQgASkDMDcDMCAEIAEpAzg3AzggBCABKQNANwNAIAIgBCkDADcDACACIAQpAwg3AwggAiAEKQMQNwMQIAIgBCkDGDcDGCACIAQpAyA3AyAgAiAEKQMoNwMoIAIgBCkDMDcDMCACIAQpAzg3AzggAiAEKQNANwNAIAIgBBAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyANIAEpAwA3AwAgDSABKQMINwMIIA0gASkDEDcDECANIAEpAxg3AxggDSABKQMgNwMgIA0gASkDKDcDKCANIAEpAzA3AzAgDSABKQM4NwM4IA0gASkDQDcDQCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAQQFSABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQAJAAkAgASgCACIEQQhGBEBBCCEIAkACQAJAA0AgCEF/aiEEIAhFDQUgBEEQTw0BIAFBBGogBEECdGooAgAiCCAEQQJ0QcQJaigCACITRw0CIAQhCAwACwALQbwLIARBEBAoDAELIAggE08NAgsFIARBCE8NAQsMAQsgAUHACRAWCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACIAMQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAJEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgBiABKQMANwMAIAYgASkDCDcDCCAGIAEpAxA3AxAgBiABKQMYNwMYIAYgASkDIDcDICAGIAEpAyg3AyggBiABKQMwNwMwIAYgASkDODcDOCAGIAEpA0A3A0AgAiAGKQMANwMAIAIgBikDCDcDCCACIAYpAxA3AxAgAiAGKQMYNwMYIAIgBikDIDcDICACIAYpAyg3AyggAiAGKQMwNwMwIAIgBikDODcDOCACIAYpA0A3A0AgAiANEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgCyABKQMANwMAIAsgASkDCDcDCCALIAEpAxA3AxAgCyABKQMYNwMYIAsgASkDIDcDICALIAEpAyg3AyggCyABKQMwNwMwIAsgASkDODcDOCALIAEpA0A3A0AgCxAaIAIgCSkDADcDACACIAkpAwg3AwggAiAJKQMQNwMQIAIgCSkDGDcDGCACIAkpAyA3AyAgAiAJKQMoNwMoIAIgCSkDMDcDMCACIAkpAzg3AzggAiAJKQNANwNAIAIgCRAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIhNHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCATTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAMgASkDADcDACADIAEpAwg3AwggAyABKQMQNwMQIAMgASkDGDcDGCADIAEpAyA3AyAgAyABKQMoNwMoIAMgASkDMDcDMCADIAEpAzg3AzggAyABKQNANwNAIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIgCRAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIglHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCAJTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAcgASkDADcDACAHIAEpAwg3AwggByABKQMQNwMQIAcgASkDGDcDGCAHIAEpAyA3AyAgByABKQMoNwMoIAcgASkDMDcDMCAHIAEpAzg3AzggByABKQNANwNAIAIgBykDADcDACACIAcpAwg3AwggAiAHKQMQNwMQIAIgBykDGDcDGCACIAcpAyA3AyAgAiAHKQMoNwMoIAIgBykDMDcDMCACIAcpAzg3AzggAiAHKQNANwNAIAIgBxAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACIAsQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAFIAEpAwA3AwAgBSABKQMINwMIIAUgASkDEDcDECAFIAEpAxg3AxggBSABKQMgNwMgIAUgASkDKDcDKCAFIAEpAzA3AzAgBSABKQM4NwM4IAUgASkDQDcDQCACIAUpAwA3AwAgAiAFKQMINwMIIAIgBSkDEDcDECACIAUpAxg3AxggAiAFKQMgNwMgIAIgBSkDKDcDKCACIAUpAzA3AzAgAiAFKQM4NwM4IAIgBSkDQDcDQCACIAsQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAOIAEpAwA3AwAgDiABKQMINwMIIA4gASkDEDcDECAOIAEpAxg3AxggDiABKQMgNwMgIA4gASkDKDcDKCAOIAEpAzA3AzAgDiABKQM4NwM4IA4gASkDQDcDQCAGIA0pAwA3AwAgBiANKQMINwMIIAYgDSkDEDcDECAGIA0pAxg3AxggBiANKQMgNwMgIAYgDSkDKDcDKCAGIA0pAzA3AzAgBiANKQM4NwM4IAYgDSkDQDcDQCAGEBogBhAaIAYQGiAPIA4pAwA3AwAgDyAOKQMINwMIIA8gDikDEDcDECAPIA4pAxg3AxggDyAOKQMgNwMgIA8gDikDKDcDKCAPIA4pAzA3AzAgDyAOKQM4NwM4IA8gDikDQDcDQCACIAspAwA3AwAgAiALKQMINwMIIAIgCykDEDcDECACIAspAxg3AxggAiALKQMgNwMgIAIgCykDKDcDKCACIAspAzA3AzAgAiALKQM4NwM4IAIgCykDQDcDQCACIA4QFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAcpAwA3AwAgAiAHKQMINwMIIAIgBykDEDcDECACIAcpAxg3AxggAiAHKQMgNwMgIAIgBykDKDcDKCACIAcpAzA3AzAgAiAHKQM4NwM4IAIgBykDQDcDQCACIAMQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAGEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgECABKQMANwMAIBAgASkDCDcDCCAQIAEpAxA3AxAgECABKQMYNwMYIBAgASkDIDcDICAQIAEpAyg3AyggECABKQMwNwMwIBAgASkDODcDOCAQIAEpA0A3A0AgAiAMKQIANwIAIAIgDCkCCDcCCCACIAwpAhA3AhAgAiAMKQIYNwIYIAIgDCkCIDcCICACIAwpAig3AiggAiAMKQIwNwIwIAIgDCkCODcCOCACIAwpAkA3AkAgAiAMEBUgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0ACQAJAIAEoAgAiBEEIRgRAQQghCAJAAkACQANAIAhBf2ohBCAIRQ0FIARBEE8NASABQQRqIARBAnRqKAIAIgggBEECdEHECWooAgAiAkcNAiAEIQgMAAsAC0G8CyAEQRAQKAwBCyAIIAJPDQILBSAEQQhPDQELDAELIAFBwAkQFgsgCiABKQMANwMAIAogASkDCDcDCCAKIAEpAxA3AxAgCiABKQMYNwMYIAogASkDIDcDICAKIAEpAyg3AyggCiABKQMwNwMwIAogASkDODcDOCAKIAEpA0A3A0AgDAwBCyACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAAQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgCSABKQMANwMAIAkgASkDCDcDCCAJIAEpAxA3AxAgCSABKQMYNwMYIAkgASkDIDcDICAJIAEpAyg3AyggCSABKQMwNwMwIAkgASkDODcDOCAJIAEpA0A3A0AgAiAAQcgAaiIMKQIANwIAIAIgDCkCCDcCCCACIAwpAhA3AhAgAiAMKQIYNwIYIAIgDCkCIDcCICACIAwpAig3AiggAiAMKQIwNwIwIAIgDCkCODcCOCACIAwpAkA3AkAgAiAMEBcgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgARAbIAQgASkDADcDACAEIAEpAwg3AwggBCABKQMQNwMQIAQgASkDGDcDGCAEIAEpAyA3AyAgBCABKQMoNwMoIAQgASkDMDcDMCAEIAEpAzg3AzggBCABKQNANwNAIAIgBCkDADcDACACIAQpAwg3AwggAiAEKQMQNwMQIAIgBCkDGDcDGCACIAQpAyA3AyAgAiAEKQMoNwMoIAIgBCkDMDcDMCACIAQpAzg3AzggAiAEKQNANwNAIAIgBBAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyANIAEpAwA3AwAgDSABKQMINwMIIA0gASkDEDcDECANIAEpAxg3AxggDSABKQMgNwMgIA0gASkDKDcDKCANIAEpAzA3AzAgDSABKQM4NwM4IA0gASkDQDcDQCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAQQFSABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQAJAAkAgASgCACIEQQhGBEBBCCEIAkACQAJAA0AgCEF/aiEEIAhFDQUgBEEQTw0BIAFBBGogBEECdGooAgAiCCAEQQJ0QcQJaigCACITRw0CIAQhCAwACwALQbwLIARBEBAoDAELIAggE08NAgsFIARBCE8NAQsMAQsgAUHACRAWCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACIAMQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAJEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgBiABKQMANwMAIAYgASkDCDcDCCAGIAEpAxA3AxAgBiABKQMYNwMYIAYgASkDIDcDICAGIAEpAyg3AyggBiABKQMwNwMwIAYgASkDODcDOCAGIAEpA0A3A0AgAiAGKQMANwMAIAIgBikDCDcDCCACIAYpAxA3AxAgAiAGKQMYNwMYIAIgBikDIDcDICACIAYpAyg3AyggAiAGKQMwNwMwIAIgBikDODcDOCACIAYpA0A3A0AgAiANEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgCyABKQMANwMAIAsgASkDCDcDCCALIAEpAxA3AxAgCyABKQMYNwMYIAsgASkDIDcDICALIAEpAyg3AyggCyABKQMwNwMwIAsgASkDODcDOCALIAEpA0A3A0AgCxAaIAIgCSkDADcDACACIAkpAwg3AwggAiAJKQMQNwMQIAIgCSkDGDcDGCACIAkpAyA3AyAgAiAJKQMoNwMoIAIgCSkDMDcDMCACIAkpAzg3AzggAiAJKQNANwNAIAIgCRAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIhNHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCATTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAMgASkDADcDACADIAEpAwg3AwggAyABKQMQNwMQIAMgASkDGDcDGCADIAEpAyA3AyAgAyABKQMoNwMoIAMgASkDMDcDMCADIAEpAzg3AzggAyABKQNANwNAIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIgCRAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIglHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCAJTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAcgASkDADcDACAHIAEpAwg3AwggByABKQMQNwMQIAcgASkDGDcDGCAHIAEpAyA3AyAgByABKQMoNwMoIAcgASkDMDcDMCAHIAEpAzg3AzggByABKQNANwNAIAIgBykDADcDACACIAcpAwg3AwggAiAHKQMQNwMQIAIgBykDGDcDGCACIAcpAyA3AyAgAiAHKQMoNwMoIAIgBykDMDcDMCACIAcpAzg3AzggAiAHKQNANwNAIAIgBxAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyAOIAEpAwA3AwAgDiABKQMINwMIIA4gASkDEDcDECAOIAEpAxg3AxggDiABKQMgNwMgIA4gASkDKDcDKCAOIAEpAzA3AzAgDiABKQM4NwM4IA4gASkDQDcDQCAGIA0pAwA3AwAgBiANKQMINwMIIAYgDSkDEDcDECAGIA0pAxg3AxggBiANKQMgNwMgIAYgDSkDKDcDKCAGIA0pAzA3AzAgBiANKQM4NwM4IAYgDSkDQDcDQCAGEBogBhAaIAYQGiACIA4pAwA3AwAgAiAOKQMINwMIIAIgDikDEDcDECACIA4pAxg3AxggAiAOKQMgNwMgIAIgDikDKDcDKCACIA4pAzA3AzAgAiAOKQM4NwM4IAIgDikDQDcDQCACIAsQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACIAsQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAPIAEpAwA3AwAgDyABKQMINwMIIA8gASkDEDcDECAPIAEpAxg3AxggDyABKQMgNwMgIA8gASkDKDcDKCAPIAEpAzA3AzAgDyABKQM4NwM4IA8gASkDQDcDQCACIAspAwA3AwAgAiALKQMINwMIIAIgCykDEDcDECACIAspAxg3AxggAiALKQMgNwMgIAIgCykDKDcDKCACIAspAzA3AzAgAiALKQM4NwM4IAIgCykDQDcDQCACIA8QFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAcpAwA3AwAgAiAHKQMINwMIIAIgBykDEDcDECACIAcpAxg3AxggAiAHKQMgNwMgIAIgBykDKDcDKCACIAcpAzA3AzAgAiAHKQM4NwM4IAIgBykDQDcDQCACIAMQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAGEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgECABKQMANwMAIBAgASkDCDcDCCAQIAEpAxA3AxAgECABKQMYNwMYIBAgASkDIDcDICAQIAEpAyg3AyggECABKQMwNwMwIBAgASkDODcDOCAQIAEpA0A3A0AgAiAMKQIANwIAIAIgDCkCCDcCCCACIAwpAhA3AhAgAiAMKQIYNwIYIAIgDCkCIDcCICACIAwpAig3AiggAiAMKQIwNwIwIAIgDCkCODcCOCACIAwpAkA3AkAgAiASEBcgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgARAbIAogASkDADcDACAKIAEpAwg3AwggCiABKQMQNwMQIAogASkDGDcDGCAKIAEpAyA3AyAgCiABKQMoNwMoIAogASkDMDcDMCAKIAEpAzg3AzggCiABKQNANwNAIAIgCikDADcDACACIAopAwg3AwggAiAKKQMQNwMQIAIgCikDGDcDGCACIAopAyA3AyAgAiAKKQMoNwMoIAIgCikDMDcDMCACIAopAzg3AzggAiAKKQNANwNAIAIgChAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIgJHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCACTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAogASkDADcDACAKIAEpAwg3AwggCiABKQMQNwMQIAogASkDGDcDGCAKIAEpAyA3AyAgCiABKQMoNwMoIAogASkDMDcDMCAKIAEpAzg3AzggCiABKQNANwNAIAwLIQQgACAPKQIANwIAIAAgDykCCDcCCCAAIA8pAhA3AhAgACAPKQIYNwIYIAAgDykCIDcCICAAIA8pAig3AiggACAPKQIwNwIwIAAgDykCODcCOCAAIA8pAkA3AkAgBCAQKQIANwIAIAQgECkCCDcCCCAEIBApAhA3AhAgBCAQKQIYNwIYIAQgECkCIDcCICAEIBApAig3AiggBCAQKQIwNwIwIAQgECkCODcCOCAEIBApAkA3AkAgEiAKKQIANwIAIBIgCikCCDcCCCASIAopAhA3AhAgEiAKKQIYNwIYIBIgCikCIDcCICASIAopAig3AiggEiAKKQIwNwIwIBIgCikCODcCOCASIAopAkA3AkAgESQCCwukBAEQfwJ/IwIhAyMCQZABaiQCIAFBIEcEQCADJAJBAA8LIAAoAhwQOyEBIAAoAhgiAhA7IQQgACgCFCIFEDshByAAKAIQIggQOyEJIAAoAgwiChA7IQsgACgCCCIMEDshDSAAKAIEIg4QOyEPIAAoAgAiEBA7IREgA0HIAGoiAEEAOgBEIABBCDYCACAAIAE2AgQgACAENgIIIAAgBzYCDCAAIAk2AhAgACALNgIUIAAgDTYCGCAAIA82AhwgACARNgIgIABBJGoiAUIANwIAIAFCADcCCCABQgA3AhAgAUIANwIYIAAgEAR/QQgFIA4Ef0EHBSAMBH9BBgUgCgR/QQUFIAgEf0EEBSAFBH9BAwUgAgR/QQIFQQELCwsLCwsLIgE2AgAgAyICIAApAwA3AwAgAiAAKQMINwMIIAIgACkDEDcDECACIAApAxg3AxggAiAAKQMgNwMgIAIgACkDKDcDKCACIAApAzA3AzAgAiAAKQM4NwM4IAIgACkDQDcDQAJAAkACQCACKAIAIgRBCEYEQEEIIQECQAJAAkADQCABQX9qIQAgAUUNBiAAQRBPDQEgAkEEaiAAQQJ0aigCACIBIABBAnRB7ApqKAIAIgVHDQIgACEBDAALAAtBvAsgAEEQECgMAQsgASAFSQ0CDAMLBSAEQQhJDQEMAgsMAgsgBEEBRyACKAIEQQBHckUNAEEBIQYMAQtBACEGCyADJAIgBgsLvQYBD38CQCMCIQgjAkHgAWokAiADQSBJBEBBICADECcLIAghBSACKAIcEDshCSACKAIYEDshCiACKAIUEDshCyACKAIQEDshDCACKAIMEDshDSACKAIIEDshDiACKAIEEDshDyACKAIAEDshBiAIQcgAaiIEQQA6AEQgBCADQQJ2IgI2AgAgBCAJNgIEIAQgCjYCCCAEIAs2AgwgBCAMNgIQIAQgDTYCFCAEIA42AhggBCAPNgIcIAQgBjYCICAEQSRqIgNCADcCACADQgA3AgggA0IANwIQIANCADcCGAJAAkADQAJAIAJBf2oiA0EQTw0CIARBBGogA0ECdGooAgAEQCACIQcMAQsgA0EBSwRAIAMhAgwCBSADIQcLCwsMAQtBsAsgA0EQECgLIAQgBzYCACAFIAQpAwA3AwAgBSAEKQMINwMIIAUgBCkDEDcDECAFIAQpAxg3AxggBSAEKQMgNwMgIAUgBCkDKDcDKCAFIAQpAzA3AzAgBSAEKQM4NwM4IAUgBCkDQDcDQAJAAkAgBSgCACIGQQhGBEBBCCECAkACQAJAA0AgAkF/aiEDIAJFDQYgA0EQTw0BIAVBBGogA0ECdGooAgAiByADQQJ0QewKaigCACICRw0CIAMhAgwACwALQbwLIANBEBAoDAELIAcgAkkNAgsFIAZBCEkNAQsMAQsgBkEBRgRAIAUoAgRFDQELIAQgASAFECAgBCgCBBA7IRAgBCgCCBA7IREgBCgCDBA7IRIgBCgCEBA7IQkgBCgCFBA7IQogBCgCGBA7IQsgBCgCHBA7IQwgBCgCIBA7IQ0gBCgCTBA7IQ4gBCgCUBA7IQ8gBCgCVBA7IQYgBCgCWBA7IQUgBCgCXBA7IQcgBCgCYBA7IQMgBCgCZBA7IQIgBCgCaBA7IQEgAEEBOgAAIABBBDoAASAAIA02AAIgACAMNgAGIAAgCzYACiAAIAo2AA4gACAJNgASIAAgEjYAFiAAIBE2ABogACAQNgAeIAAgATYAIiAAIAI2ACYgACADNgAqIAAgBzYALiAAIAU2ADIgACAGNgA2IAAgDzYAOiAAIA42AD4gCCQCDwsgAEEAOgAAIAgkAgsLdgECfwJAIwIhAiMCQTBqJAIgAkEoaiIDIAA2AgAgAkEsaiIAIAE2AgAgAkEYaiIBIAM2AgAgAUEBNgIEIAEgADYCCCABQQE2AgwgAkGsDzYCACACQQI2AgQgAkEANgIIIAIgATYCECACQQI2AhQgAkG8DxAsCwt1AQJ/AkAjAiEDIwJBMGokAiADQShqIgQgATYCACADQSxqIgEgAjYCACADQRhqIgIgATYCACACQQE2AgQgAiAENgIIIAJBATYCDCADQZwPNgIAIANBAjYCBCADQQA2AgggAyACNgIQIANBAjYCFCADIAAQLAsLDwAgAQR/IAAgAXAFQQALCw8AIAEEfyAAIAFuBUEACwvNAgEHfwJ/IwIhBSMCQTBqJAIgBSEEIAAoAgAiAEGPzgBLBEBBJyEGA0AgAEGQzgAQKSECIABBkM4AECohAyACQeQAECpBAXQhByACQeQAEClBAXQhCCAEIAZBfGoiAmogB0GQF2ouAAA7AAAgBCAGQX5qaiAIQZAXai4AADsAACAAQf/B1y9LBEAgAiEGIAMhAAwBBSADIQALCwVBJyECCyAAQeMASgRAIABB5AAQKUEBdCEDIABB5AAQKiEAIAQgAkF+aiICaiADQZAXai4AADsAAAsgAEEKSAR/IAQgAkF/aiIDaiAAQf8BcUEwajoAACABQQFBrL8BQQAgBCADIgBqQScgAGsQLSEAIAUkAiAABSAEIAJBfmoiA2ogAEEBdEGQF2ouAAA7AAAgAUEBQay/AUEAIAQgAyIAakEnIABrEC0hACAFJAIgAAsLC3QBBH8CQCMCIQIjAkEwaiQCIAEoAgAhAyABKAIEIQQgASgCCCEFIAIiASAAKQIANwIAIAEgACkCCDcCCCABIAApAhA3AhAgAkEYaiIAIAEpAgA3AgAgACABKQIINwIIIAAgASkCEDcCECAAIAMgBCAFEA4LC/cRAQ1/An8jAiEMIwJBEGokAiAAKAIAIQgCQAJAIAEEQCAIQQFxBEBBKyEGDAIFQQAhDkEAIQYgBSEHCwVBLSEGDAELDAELQQEhDiAFQQFqIQcLIAhBBHEEfyACIANqIQsgAwRAIAIhAUEAIQkDQCABLAAAQcABcUGAAUYgCWohCSABQQFqIgEgC0cNAAsFQQAhCQsgByADaiAJayEHQQEFQQALIREgDEEEaiEBIAAoAghFBEAgDkEBRgRAIAAoAhghDSAAKAIcIQogAUEANgIAIAZBgAFJBEAgASAGOgAAQQEhBwUgBkGAEEkEf0FAIQhBASELQQIhByABBSAGQYCABEkEfyABQWA6AABBgH8hCEECIQtBAyEHIAFBAWoFIAFBcDoAACABQYB/OgABQYB/IQhBAyELQQQhByABQQJqCwsiCSAIOgAAIAEgC2ogBkE/cUGAf3I6AAALIA0gASAHIAooAgxBA3FBAmoRAABB/wFxBEAgDCQCQQEPCwsgAEEYaiEBIBEEQCABKAIAIAIgAyAAQRxqIgAoAgAoAgxBA3FBAmoRAABB/wFxBEAgDCQCQQEPCwUgAEEcaiEACyABKAIAIAQgBSAAKAIAKAIMQQNxQQJqEQAAIQAgDCQCIAAPCyAAKAIMIgogB00EQCAOQQFGBEAgACgCGCENIAAoAhwhCiABQQA2AgAgBkGAAUkEQCABIAY6AABBASEHBSAGQYAQSQR/QUAhCEEBIQtBAiEHIAEFIAZBgIAESQR/IAFBYDoAAEGAfyEIQQIhC0EDIQcgAUEBagUgAUFwOgAAIAFBgH86AAFBgH8hCEEDIQtBBCEHIAFBAmoLCyIJIAg6AAAgASALaiAGQT9xQYB/cjoAAAsgDSABIAcgCigCDEEDcUECahEAAEH/AXEEQCAMJAJBAQ8LCyAAQRhqIQEgEQRAIAEoAgAgAiADIABBHGoiACgCACgCDEEDcUECahEAAEH/AXEEQCAMJAJBAQ8LBSAAQRxqIQALIAEoAgAgBCAFIAAoAgAoAgxBA3FBAmoRAAAhACAMJAIgAA8LIAwhCSAIQQhxRQRAIAogB2shBwJAAkACQAJAIAAsADAiCEEDRgR/QQEFIAgLQQNxDgMAAgECCyAHIQhBACEHDAILIAdBAWpBAXYhCCAHQQF2IQcMAQtBACEICyAJQQA2AgAgACgCBCIKQYABSQR/IAkgCjoAAEEBBSAKQYAQSQR/IApBBnZBH3FBQHIhD0EBIRBBAiENIAkFIApBgIAESQR/IAkgCkEMdkEPcUFgcjoAACAKQQZ2QT9xQYB/ciEPQQIhEEEDIQ0gCUEBagUgCSAKQRJ2Qf8BcUFwcjoAACAJIApBDHZBP3FBgH9yOgABIApBBnZBP3FBgH9yIQ9BAyEQQQQhDSAJQQJqCwsiCyAPOgAAIAkgEGogCkE/cUGAf3I6AAAgDQshCyAAQRhqIQ0gAEEcaiEKQQAhAAJAAkADQCAAIAdJBEAgAEEBaiEAIA0oAgAgCSALIAooAgAoAgxBA3FBAmoRAABB/wFxDQIMAQsLDAELIAwkAkEBDwsCQAJAIA5BAUcNACANKAIAIRAgCigCACESIAFBADYCACAGQYABSQRAIAEgBjoAAEEBIQcFIAZBgBBJBH9BQCEOQQEhD0ECIQcgAQUgBkGAgARJBH8gAUFgOgAAQYB/IQ5BAiEPQQMhByABQQFqBSABQXA6AAAgAUGAfzoAAUGAfyEOQQMhD0EEIQcgAUECagsLIgAgDjoAACABIA9qIAZBP3FBgH9yOgAACyAQIAEgByASKAIMQQNxQQJqEQAAQf8BcUUNAAwBCyARBEAgDSgCACACIAMgCigCACgCDEEDcUECahEAAEH/AXENAQsgDSgCACAEIAUgCigCACgCDEEDcUECahEAAEH/AXFFBEBBACEAAkACQANAIAAgCE8NASAAQQFqIQAgDSgCACAJIAsgCigCACgCDEEDcUECahEAAEH/AXFFDQAMAgsACyAMJAJBAA8LIAwkAkEBDwsLIAwkAkEBDwsgAEEEaiIPQTA2AgAgAEEwaiIQQQE6AAAgDkEBRgRAIAAoAhghDiAAKAIcIRIgAUEANgIAIAZBgAFJBEAgASAGOgAAQQEhCAUgBkGAEEkEf0FAIQtBASENQQIhCCABBSAGQYCABEkEfyABQWA6AABBgH8hC0ECIQ1BAyEIIAFBAWoFIAFBcDoAACABQYB/OgABQYB/IQtBAyENQQQhCCABQQJqCwsiCSALOgAAIAEgDWogBkE/cUGAf3I6AAALIA4gASAIIBIoAgxBA3FBAmoRAABB/wFxBEAgDCQCQQEPCwsgEQRAIAAoAhggAiADIAAoAhwoAgxBA3FBAmoRAABB/wFxBEAgDCQCQQEPCwsgCiAHayECAkACQAJAAkAgECwAACIDQQNGBH9BAQUgAwtBA3EOAwACAQILIAIhA0EAIQIMAgsgAkEBakEBdiEDIAJBAXYhAgwBC0EAIQMLIAFBADYCACAPKAIAIgZBgAFJBH8gASAGOgAAQQEFIAZBgBBJBH8gBkEGdkEfcUFAciEIQQEhC0ECIQcgAQUgBkGAgARJBH8gASAGQQx2QQ9xQWByOgAAIAZBBnZBP3FBgH9yIQhBAiELQQMhByABQQFqBSABIAZBEnZB/wFxQXByOgAAIAEgBkEMdkE/cUGAf3I6AAEgBkEGdkE/cUGAf3IhCEEDIQtBBCEHIAFBAmoLCyIJIAg6AAAgASALaiAGQT9xQYB/cjoAACAHCyEJIABBGGohByAAQRxqIQZBACEAAkACQANAIAAgAkkEQCAAQQFqIQAgBygCACABIAkgBigCACgCDEEDcUECahEAAEH/AXENAgwBCwsMAQsgDCQCQQEPCyAHKAIAIAQgBSAGKAIAKAIMQQNxQQJqEQAAQf8BcQRAIAwkAkEBDwVBACEACwJAAkADQCAAIANPDQEgAEEBaiEAIAcoAgAgASAJIAYoAgAoAgxBA3FBAmoRAABB/wFxRQ0ADAILAAsgDCQCQQAPCyAMJAJBAQsLiwEBBn8CQCMCIQEjAkEwaiQCIAAoAgQhAyAAKAIIIQQgACgCDCEFIAAoAhAhBiABQRhqIgIgACgCADYCACACIAM2AgQgASIAIAI2AgAgAEEBNgIEIABBADYCCCAAQfyxATYCECAAQQA2AhQgAUEgaiIBIAQ2AgAgASAFNgIEIAEgBjYCCCAAIAEQLAsLdgECfwJAIwIhAiMCQTBqJAIgAkEoaiIDIAA2AgAgAkEsaiIAIAE2AgAgAkEYaiIBIAM2AgAgAUEBNgIEIAEgADYCCCABQQE2AgwgAkHIDzYCACACQQI2AgQgAkEANgIIIAIgATYCECACQQI2AhQgAkHYDxAsCwswAQJ/An8jAiEBIwJBEGokAiABIgIgACgCPBA4NgIAQQYgAhABEDMhACABJAIgAAsLawEDfwJ/IwIhBCMCQSBqJAIgBCEDIARBEGohBSAAQQM2AiQgACgCAEHAAHFFBEAgAyAAKAI8NgIAIANBk6gBNgIEIAMgBTYCCEE2IAMQBARAIABBfzoASwsLIAAgASACEDchACAEJAIgAAsLZQECfwJ/IwIhBCMCQSBqJAIgBCIDIAAoAjw2AgAgA0EANgIEIAMgATYCCCADIARBFGoiADYCDCADIAI2AhBBjAEgAxACEDNBAEgEfyAAQX82AgBBfwUgACgCAAshACAEJAIgAAsLGgAgAEGAYEsEfxA0QQAgAGs2AgBBfwUgAAsLCAAQNUHAAGoLBAAQNgsFAEHgEAv9AgELfwJ/IwIhBSMCQTBqJAIgBUEQaiEGIAVBIGoiAyAAQRxqIgkoAgAiBDYCACADIABBFGoiCigCACAEayIENgIEIAMgATYCCCADIAI2AgwgBSIBIABBPGoiDCgCADYCACABIAM2AgQgAUECNgIIAkACQCAEIAJqIgRBkgEgARAGEDMiAUYNAEECIQcDQCABQQBOBEAgBCABayEEIANBCGohCCABIAMoAgQiDUsiCwRAIAghAwsgC0EfdEEfdSAHaiEHIAMgAygCACABIAsEfyANBUEAC2siAWo2AgAgA0EEaiIIIAgoAgAgAWs2AgAgBiAMKAIANgIAIAYgAzYCBCAGIAc2AgggBEGSASAGEAYQMyIBRg0CDAELCyAAQQA2AhAgCUEANgIAIApBADYCACAAIAAoAgBBIHI2AgAgB0ECRgR/QQAFIAIgAygCBGsLIQIMAQsgACAAKAIsIgEgACgCMGo2AhAgCSABNgIAIAogATYCAAsgBSQCIAILCwQAIAALUAECfwJ/IAIEfwNAIAAsAAAiAyABLAAAIgRGBEAgAEEBaiEAIAFBAWohAUEAIAJBf2oiAkUNAxoMAQsLIANB/wFxIARB/wFxawVBAAsLIgALnQIBBH8CfyAAIAJqIQQgAUH/AXEhASACQcMATgRAA0AgAEEDcQRAIAAgAToAACAAQQFqIQAMAQsLIARBfHEiBUHAAGshBiABIAFBCHRyIAFBEHRyIAFBGHRyIQMDQCAAIAZMBEAgACADNgIAIAAgAzYCBCAAIAM2AgggACADNgIMIAAgAzYCECAAIAM2AhQgACADNgIYIAAgAzYCHCAAIAM2AiAgACADNgIkIAAgAzYCKCAAIAM2AiwgACADNgIwIAAgAzYCNCAAIAM2AjggACADNgI8IABBwABqIQAMAQsLA0AgACAFSARAIAAgAzYCACAAQQRqIQAMAQsLCwNAIAAgBEgEQCAAIAE6AAAgAEEBaiEADAELCyAEIAJrCwsrACAAQf8BcUEYdCAAQQh1Qf8BcUEQdHIgAEEQdUH/AXFBCHRyIABBGHZyC8kDAQN/An8gAkGAwABOBEAgACABIAIQAw8LIAAhBCAAIAJqIQMgAEEDcSABQQNxRgRAA0AgAEEDcQRAIAJFBEAgBA8LIAAgASwAADoAACAAQQFqIQAgAUEBaiEBIAJBAWshAgwBCwsgA0F8cSICQcAAayEFA0AgACAFTARAIAAgASgCADYCACAAIAEoAgQ2AgQgACABKAIINgIIIAAgASgCDDYCDCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCAAIAEoAhw2AhwgACABKAIgNgIgIAAgASgCJDYCJCAAIAEoAig2AiggACABKAIsNgIsIAAgASgCMDYCMCAAIAEoAjQ2AjQgACABKAI4NgI4IAAgASgCPDYCPCAAQcAAaiEAIAFBwABqIQEMAQsLA0AgACACSARAIAAgASgCADYCACAAQQRqIQAgAUEEaiEBDAELCwUgA0EEayECA0AgACACSARAIAAgASwAADoAACAAIAEsAAE6AAEgACABLAACOgACIAAgASwAAzoAAyAAQQRqIQAgAUEEaiEBDAELCwsDQCAAIANIBEAgACABLAAAOgAAIABBAWohACABQQFqIQEMAQsLIAQLCwsAAn9BABAAQQALCwsAAn9BARAAQQALCwsAAn9BAhAAQQALCwu9DA0AQYAIC+QBAQAAAAAAAACCgAAAAAAAAIqAAAAAAACAAIAAgAAAAICLgAAAAAAAAAEAAIAAAAAAgYAAgAAAAIAJgAAAAAAAgIoAAAAAAAAAiAAAAAAAAAAJgACAAAAAAAoAAIAAAAAAi4AAgAAAAACLAAAAAAAAgImAAAAAAACAA4AAAAAAAIACgAAAAAAAgIAAAAAAAACACoAAAAAAAAAKAACAAAAAgIGAAIAAAACAgIAAAAAAAIABAACAAAAAAAiAAIAAAACACAAAAC/8///+////////////////////////////////////AEGICgsFAQAAAAEAQdAKCzyxCQAAIgAAAPYCAABYCQAAWQAAADwBAAAIAAAAQUE20Ixe0r87oEiv5tyuuv7///////////////////8AQbALC6kBMwoAACIAAADwAgAA0wkAAGAAAAA9AAAA0wkAAGAAAACBAAAA0wkAAGAAAACLAAAA0wkAAGAAAACTAAAA0wkAAGAAAACbAAAA0wkAAGAAAADvAAAA0wkAAGAAAAD3AAAA0wkAAGAAAAC6AAAA0wkAAGAAAABeAQAA0wkAAGAAAAAxAQAA0wkAAGAAAAAyAQAA0wkAAGAAAAA4AQAA0wkAAGAAAAA9AQAAAQBBoA0LadMJAABgAAAAbgMAAFUKAABcAAAAEAAAADMKAAAiAAAA9gIAANMJAABgAAAAHgQAABQLAAAoAAAAsQoAAGMAAABCAAAAsQoAAGMAAAA9AAAAsQoAAGMAAABQAAAAsQoAAGMAAABSAAAAAQBB0A4LAQEAQZgPC00BAAAAXgsAACAAAAB+CwAAEgAAAFgMAAAGAAAAXgwAACIAAAA8CwAAIgAAAKACAACADAAAFgAAAJYMAAANAAAAPAsAACIAAACmAgAABQBB8A8LAQEAQYgQCw4BAAAAAgAAALRfAAAABABBoBALAQEAQa8QCwUK/////wBBnBILAiRZAEHUEgvPBuQHAAAvaG9tZS9tYWNpZWovLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdGlueS1rZWNjYWstMS4yLjEvc3JjL2xpYi5ycy9jaGVja291dC9zcmMvbGliY29yZS9zbGljZS9tb2QucnMvaG9tZS9tYWNpZWovLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdGlueS1zZWNwMjU2azEtMC4xLjAvc3JjL2JpZ19udW0ucnMvY2hlY2tvdXQvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzL2hvbWUvbWFjaWVqLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rpbnktc2VjcDI1NmsxLTAuMS4wL3NyYy9uYWYucnMvaG9tZS9tYWNpZWovLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdGlueS1zZWNwMjU2azEtMC4xLjAvc3JjL2VjX3BvaW50X2cucnNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlL2NoZWNrb3V0L3NyYy9saWJjb3JlL3NsaWNlL21vZC5yc2luZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggc2xpY2UgaW5kZXggc3RhcnRzIGF0ICBidXQgZW5kcyBhdCA=', 'base64'); diff --git a/js/src/api-local/ethkey/index.js b/js/src/api-local/ethkey/index.js new file mode 100644 index 000000000..590e76848 --- /dev/null +++ b/js/src/api-local/ethkey/index.js @@ -0,0 +1,55 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const workerPool = require('./workerPool'); + +function createKeyObject (key, password) { + return workerPool.action('createKeyObject', { key, password }) + .then((obj) => JSON.parse(obj)); +} + +function decryptPrivateKey (keyObject, password) { + return workerPool + .action('decryptPrivateKey', { keyObject, password }) + .then((privateKey) => { + if (privateKey) { + return Buffer.from(privateKey); + } + + return null; + }); +} + +function phraseToAddress (phrase) { + return phraseToWallet(phrase) + .then((wallet) => wallet.address); +} + +function phraseToWallet (phrase) { + return workerPool.action('phraseToWallet', phrase); +} + +function verifySecret (secret) { + return workerPool.action('verifySecret', secret); +} + +module.exports = { + createKeyObject, + decryptPrivateKey, + phraseToAddress, + phraseToWallet, + verifySecret +}; diff --git a/js/src/api-local/ethkey/index.spec.js b/js/src/api-local/ethkey/index.spec.js new file mode 100644 index 000000000..50a08f166 --- /dev/null +++ b/js/src/api-local/ethkey/index.spec.js @@ -0,0 +1,59 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const { randomPhrase } = require('@parity/wordlist'); + +const { phraseToAddress, phraseToWallet } = require('./index'); + +// TODO: Skipping until Node.js 8.0 comes out and we can test WebAssembly +describe.skip('api/local/ethkey', () => { + describe('phraseToAddress', function () { + this.timeout(30000); + + it('generates a valid address', () => { + const phrase = randomPhrase(12); + + return phraseToAddress(phrase).then((address) => { + expect(address.length).to.be.equal(42); + expect(address.slice(0, 4)).to.be.equal('0x00'); + }); + }); + + it('generates valid address for empty phrase', () => { + return phraseToAddress('').then((address) => { + expect(address).to.be.equal('0x00a329c0648769a73afac7f9381e08fb43dbea72'); + }); + }); + }); + + describe('phraseToWallet', function () { + this.timeout(30000); + + it('generates a valid wallet object', () => { + const phrase = randomPhrase(12); + + return phraseToWallet(phrase).then((wallet) => { + expect(wallet.address.length).to.be.equal(42); + expect(wallet.secret.length).to.be.equal(66); + expect(wallet.public.length).to.be.equal(130); + + expect(wallet.address.slice(0, 4)).to.be.equal('0x00'); + expect(wallet.secret.slice(0, 2)).to.be.equal('0x'); + expect(wallet.public.slice(0, 2)).to.be.equal('0x'); + }); + }); + }); +}); diff --git a/js/src/api-local/ethkey/worker.js b/js/src/api-local/ethkey/worker.js new file mode 100644 index 000000000..01f8de2ff --- /dev/null +++ b/js/src/api-local/ethkey/worker.js @@ -0,0 +1,139 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const { bytesToHex } = require('@parity/api/lib/util/format'); + +const { extern, slice } = require('./ethkey.js'); + +const isWorker = typeof self !== 'undefined'; + +// Stay compatible between environments +if (!isWorker) { + const scope = typeof global === 'undefined' ? window : global; + + scope.self = scope; +} + +// keythereum should never be used outside of the browser +let keythereum = require('keythereum'); + +if (isWorker) { + keythereum = self.keythereum; +} + +function route ({ action, payload }) { + if (action in actions) { + return actions[action](payload); + } + + return null; +} + +const input = slice(extern._input_ptr(), 1024); +const secret = slice(extern._secret_ptr(), 32); +const publicKey = slice(extern._public_ptr(), 64); +const address = slice(extern._address_ptr(), 20); + +extern._ecpointg(); + +const actions = { + phraseToWallet (phrase) { + const phraseUtf8 = Buffer.from(phrase, 'utf8'); + + if (phraseUtf8.length > input.length) { + throw new Error('Phrase is too long!'); + } + + input.set(phraseUtf8); + + extern._brain(phraseUtf8.length); + + const wallet = { + secret: bytesToHex(secret), + public: bytesToHex(publicKey), + address: bytesToHex(address) + }; + + return wallet; + }, + + verifySecret (key) { + const keyBuf = Buffer.from(key.slice(2), 'hex'); + + secret.set(keyBuf); + + return extern._verify_secret(); + }, + + createKeyObject ({ key, password }) { + key = Buffer.from(key); + password = Buffer.from(password); + + const iv = keythereum.crypto.randomBytes(16); + const salt = keythereum.crypto.randomBytes(32); + const keyObject = keythereum.dump(password, key, salt, iv); + + return JSON.stringify(keyObject); + }, + + decryptPrivateKey ({ keyObject, password }) { + password = Buffer.from(password); + + try { + const key = keythereum.recover(password, keyObject); + + // Convert to array to safely send from the worker + return Array.from(key); + } catch (e) { + return null; + } + } +}; + +self.onmessage = function ({ data }) { + try { + const result = route(data); + + postMessage([null, result]); + } catch (err) { + console.error(err); + postMessage([err.toString(), null]); + } +}; + +// Emulate a web worker in Node.js +class KeyWorker { + postMessage (data) { + // Force async + setTimeout(() => { + try { + const result = route(data); + + this.onmessage({ data: [null, result] }); + } catch (err) { + this.onmessage({ data: [err, null] }); + } + }, 0); + } + + onmessage (event) { + // no-op to be overriden + } +} + +if (exports != null) { + exports.KeyWorker = KeyWorker; +} diff --git a/js/src/api-local/ethkey/workerPool.js b/js/src/api-local/ethkey/workerPool.js new file mode 100644 index 000000000..5a60b75d3 --- /dev/null +++ b/js/src/api-local/ethkey/workerPool.js @@ -0,0 +1,110 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +// Allow a web worker in the browser, with a fallback for Node.js +const hasWebWorkers = typeof Worker !== 'undefined'; +const KeyWorker = hasWebWorkers + ? require('worker-loader!./worker') // eslint-disable-line import/no-webpack-loader-syntax + : require('./worker').KeyWorker; + +class WorkerContainer { + constructor () { + this.busy = false; + this._worker = new KeyWorker(); + } + + action (action, payload) { + if (this.busy) { + throw new Error('Cannot issue an action on a busy worker!'); + } + + this.busy = true; + + return new Promise((resolve, reject) => { + this._worker.postMessage({ action, payload }); + this._worker.onmessage = ({ data }) => { + const [err, result] = data; + + this.busy = false; + + if (err) { + // `err` ought to be a String + reject(new Error(err)); + } else { + resolve(result); + } + }; + }); + } +} + +class WorkerPool { + constructor () { + this.pool = [ + new WorkerContainer(), + new WorkerContainer() + ]; + + this.queue = []; + } + + _getContainer () { + return this.pool.find((container) => !container.busy); + } + + action (action, payload) { + let container = this.pool.find((container) => !container.busy); + + let promise; + + // const start = Date.now(); + + if (container) { + promise = container.action(action, payload); + } else { + promise = new Promise((resolve, reject) => { + this.queue.push([action, payload, resolve]); + }); + } + + return promise + .catch((err) => { + this.processQueue(); + + throw err; + }) + .then((result) => { + this.processQueue(); + + // console.log('Work done in ', Date.now() - start); + + return result; + }); + } + + processQueue () { + let container = this._getContainer(); + + while (container && this.queue.length > 0) { + const [action, payload, resolve] = this.queue.shift(); + + resolve(container.action(action, payload)); + container = this._getContainer(); + } + } +} + +module.exports = new WorkerPool(); diff --git a/js/src/api-local/localAccountsMiddleware.js b/js/src/api-local/localAccountsMiddleware.js new file mode 100644 index 000000000..0f39c421e --- /dev/null +++ b/js/src/api-local/localAccountsMiddleware.js @@ -0,0 +1,309 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const EthereumTx = require('ethereumjs-tx'); + +const { Middleware } = require('@parity/api/lib/transport'); +const { inNumber16 } = require('@parity/api/lib/format/input'); +const { randomPhrase } = require('@parity/wordlist'); + +const accounts = require('./accounts'); +const transactions = require('./transactions'); +const { phraseToWallet, phraseToAddress, verifySecret } = require('./ethkey'); + +class LocalAccountsMiddleware extends Middleware { + constructor (transport) { + super(transport); + + const NOOP = () => {}; + const register = this.register.bind(this); + const registerSubscribe = this.registerSubscribe.bind(this); + + register('eth_accounts', () => { + return accounts.accountAddresses(); + }); + + register('eth_coinbase', () => { + return accounts.lastAddress; + }); + + register('parity_accountsInfo', () => { + return accounts.map(({ name }) => { + return { name }; + }); + }); + + register('parity_allAccountsInfo', () => { + return accounts.map(({ name, meta, uuid }) => { + return { name, meta, uuid }; + }); + }); + + register('parity_changePassword', ([address, oldPassword, newPassword]) => { + const account = accounts.get(address); + + return account + .decryptPrivateKey(oldPassword) + .then((privateKey) => { + if (!privateKey) { + return false; + } + + account.changePassword(privateKey, newPassword); + + return true; + }); + }); + + register('parity_checkRequest', ([id]) => { + return transactions.hash(id) || Promise.resolve(null); + }); + + register('parity_dappsList', () => { + return []; + }); + + register('parity_defaultAccount', () => { + return accounts.dappsDefaultAddress; + }); + + registerSubscribe('parity_defaultAccount', (_, callback) => { + callback(null, accounts.dappsDefaultAddress); + + accounts.on('dappsDefaultAddressChange', (address) => { + callback(null, accounts.dappsDefaultAddress); + }); + }); + + register('parity_exportAccount', ([address, password]) => { + const account = accounts.get(address); + + if (!password) { + password = ''; + } + + return account.isValidPassword(password) + .then((isValid) => { + if (!isValid) { + throw new Error('Invalid password'); + } + + return account.export(); + }); + }); + + register('parity_generateSecretPhrase', () => { + return randomPhrase(12); + }); + + register('parity_getNewDappsAddresses', () => { + return accounts.accountAddresses(); + }); + + register('parity_getNewDappsDefaultAddress', () => { + return accounts.dappsDefaultAddress; + }); + + register('parity_hardwareAccountsInfo', () => { + return {}; + }); + + registerSubscribe('parity_hardwareAccountsInfo', NOOP); + + register('parity_newAccountFromPhrase', ([phrase, password]) => { + return phraseToWallet(phrase) + .then((wallet) => { + return accounts.create(wallet.secret, password); + }); + }); + + register('parity_newAccountFromSecret', ([secret, password]) => { + return verifySecret(secret) + .then((isValid) => { + if (!isValid) { + throw new Error('Invalid secret key'); + } + + return accounts.create(secret, password); + }); + }); + + register('parity_newAccountFromWallet', ([json, password]) => { + if (!password) { + password = ''; + } + + return accounts.restoreFromWallet(JSON.parse(json), password); + }); + + register('parity_setAccountMeta', ([address, meta]) => { + accounts.getLazyCreate(address).meta = meta; + + return true; + }); + + register('parity_setAccountName', ([address, name]) => { + accounts.getLazyCreate(address).name = name; + + return true; + }); + + register('parity_setNewDappsDefaultAddress', ([address]) => { + accounts.dappsDefaultAddress = address; + + return true; + }); + + register('parity_postTransaction', ([tx]) => { + if (!tx.from) { + tx.from = accounts.lastAddress; + } + + tx.nonce = null; + tx.condition = null; + + return transactions.add(tx); + }); + + register('parity_phraseToAddress', ([phrase]) => { + return phraseToAddress(phrase); + }); + + register('parity_useLocalAccounts', () => { + return true; + }); + + register('parity_listGethAccounts', () => { + return []; + }); + + register('parity_listOpenedVaults', () => { + return []; + }); + + register('parity_listRecentDapps', () => { + return {}; + }); + + register('parity_listVaults', () => { + return []; + }); + + register('parity_lockedHardwareAccountsInfo', () => { + return []; + }); + + register('parity_hashContent', () => { + throw new Error('Functionality unavailable on a public wallet.'); + }); + + register('parity_killAccount', ([address, password]) => { + return accounts.remove(address, password); + }); + + register('parity_removeAddress', ([address]) => { + return accounts.remove(address, null); + }); + + register('parity_testPassword', ([address, password]) => { + const account = accounts.get(address); + + return account.isValidPassword(password); + }); + + register('parity_upgradeReady', () => { + return false; + }); + + register('signer_confirmRequest', ([id, modify, password]) => { + const { + gasPrice, + gas: gasLimit, + from, + to, + value, + data + } = Object.assign(transactions.get(id), modify); + + transactions.lock(id); + + const account = accounts.get(from); + + return Promise + .all([ + this.rpcRequest('parity_nextNonce', [from]), + account.decryptPrivateKey(password) + ]) + .catch((err) => { + transactions.unlock(id); + + // transaction got unlocked, can propagate rejection further + throw err; + }) + .then(([nonce, privateKey]) => { + if (!privateKey) { + transactions.unlock(id); + + throw new Error('Invalid password'); + } + + const tx = new EthereumTx({ + nonce, + to, + data, + gasLimit: inNumber16(gasLimit), + gasPrice: inNumber16(gasPrice), + value: inNumber16(value) + }); + + tx.sign(privateKey); + + const serializedTx = `0x${tx.serialize().toString('hex')}`; + + return this.rpcRequest('eth_sendRawTransaction', [serializedTx]); + }) + .then((hash) => { + transactions.confirm(id, hash); + + return {}; + }); + }); + + register('signer_generateAuthorizationToken', () => { + return ''; + }); + + register('signer_rejectRequest', ([id]) => { + return transactions.reject(id); + }); + + register('signer_requestsToConfirm', () => { + return transactions.requestsToConfirm(); + }); + + registerSubscribe('signer_subscribePending', (_, callback) => { + callback(null, transactions.requestsToConfirm()); + + transactions.on('update', () => { + callback(null, transactions.requestsToConfirm()); + }); + + return false; + }); + } +} + +module.exports = LocalAccountsMiddleware; diff --git a/js/src/api-local/localAccountsMiddleware.spec.js b/js/src/api-local/localAccountsMiddleware.spec.js new file mode 100644 index 000000000..bebbd44b3 --- /dev/null +++ b/js/src/api-local/localAccountsMiddleware.spec.js @@ -0,0 +1,160 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +/* eslint-disable no-unused-expressions */ + +const JsonRpcBase = require('@parity/api/lib/transport/jsonRpcBase'); + +const LocalAccountsMiddleware = require('./localAccountsMiddleware'); + +const RPC_RESPONSE = Symbol('RPC response'); +const ADDRESS = '0x00a329c0648769a73afac7f9381e08fb43dbea72'; +const SECRET = '0x4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7'; +const PASSWORD = 'password'; + +const FOO_PHRASE = 'foobar'; +const FOO_PASSWORD = 'foopass'; +const FOO_ADDRESS = '0x007ef7ac1058e5955e366ab9d6b6c4ebcc937e7e'; + +class MockedTransport extends JsonRpcBase { + _execute (method, params) { + return RPC_RESPONSE; + } +} + +// Skip till all CI runs on Node 8+ +describe.skip('api/local/LocalAccountsMiddleware', function () { + this.timeout(30000); + + let transport; + + beforeEach(() => { + transport = new MockedTransport(); + transport.addMiddleware(LocalAccountsMiddleware); + + // Same as `parity_newAccountFromPhrase` with empty phrase + return transport + .execute('parity_newAccountFromSecret', [SECRET, PASSWORD]) + .catch((_err) => { + // Ignore the error - all instances of LocalAccountsMiddleware + // share account storage + }); + }); + + it('registers all necessary methods', () => { + return Promise + .all([ + 'eth_accounts', + 'eth_coinbase', + 'parity_accountsInfo', + 'parity_allAccountsInfo', + 'parity_changePassword', + 'parity_checkRequest', + 'parity_defaultAccount', + 'parity_generateSecretPhrase', + 'parity_getNewDappsAddresses', + 'parity_hardwareAccountsInfo', + 'parity_newAccountFromPhrase', + 'parity_newAccountFromSecret', + 'parity_setAccountMeta', + 'parity_setAccountName', + 'parity_postTransaction', + 'parity_phraseToAddress', + 'parity_useLocalAccounts', + 'parity_listGethAccounts', + 'parity_listOpenedVaults', + 'parity_listRecentDapps', + 'parity_listVaults', + 'parity_killAccount', + 'parity_testPassword', + 'signer_confirmRequest', + 'signer_rejectRequest', + 'signer_requestsToConfirm' + ].map((method) => { + return transport + .execute(method) + .then((result) => { + expect(result).not.to.be.equal(RPC_RESPONSE); + }) + // Some errors are expected here since we are calling methods + // without parameters. + .catch((_) => {}); + })); + }); + + it('allows non-registered methods through', () => { + return transport + .execute('eth_getBalance', ['0x407d73d8a49eeb85d32cf465507dd71d507100c1']) + .then((result) => { + expect(result).to.be.equal(RPC_RESPONSE); + }); + }); + + it('can handle `eth_accounts`', () => { + return transport + .execute('eth_accounts') + .then((accounts) => { + expect(accounts.length).to.be.equal(1); + expect(accounts[0]).to.be.equal(ADDRESS); + }); + }); + + it('can handle `parity_defaultAccount`', () => { + return transport + .execute('parity_defaultAccount') + .then((address) => { + expect(address).to.be.equal(ADDRESS); + }); + }); + + it('can handle `parity_phraseToAddress`', () => { + return transport + .execute('parity_phraseToAddress', ['']) + .then((address) => { + expect(address).to.be.equal(ADDRESS); + + return transport.execute('parity_phraseToAddress', [FOO_PHRASE]); + }) + .then((address) => { + expect(address).to.be.equal(FOO_ADDRESS); + }); + }); + + it('can create and kill an account', () => { + return transport + .execute('parity_newAccountFromPhrase', [FOO_PHRASE, FOO_PASSWORD]) + .then((address) => { + expect(address).to.be.equal(FOO_ADDRESS); + + return transport.execute('eth_accounts'); + }) + .then((accounts) => { + expect(accounts.length).to.be.equal(2); + expect(accounts.includes(FOO_ADDRESS)).to.be.true; + + return transport.execute('parity_killAccount', [FOO_ADDRESS, FOO_PASSWORD]); + }) + .then((result) => { + expect(result).to.be.true; + + return transport.execute('eth_accounts'); + }) + .then((accounts) => { + expect(accounts.length).to.be.equal(1); + expect(accounts.includes(FOO_ADDRESS)).to.be.false; + }); + }); +}); diff --git a/js/src/api-local/transactions.js b/js/src/api-local/transactions.js new file mode 100644 index 000000000..3eb1970a1 --- /dev/null +++ b/js/src/api-local/transactions.js @@ -0,0 +1,161 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const EventEmitter = require('eventemitter3'); + +const { toHex } = require('@parity/api/lib/util/format'); +const { TransportError } = require('@parity/api/lib/transport'); + +const AWAITING = Symbol('awaiting'); +const LOCKED = Symbol('locked'); +const CONFIRMED = Symbol('confirmed'); +const REJECTED = Symbol('rejected'); + +class Transactions extends EventEmitter { + constructor () { + super(); + + this.reset(); + } + + // should only really be needed in the constructor and tests + reset () { + this._id = 1; + this._states = {}; + } + + nextId () { + return toHex(this._id++); + } + + add (tx) { + const id = this.nextId(); + + this._states[id] = { + status: AWAITING, + transaction: tx + }; + + this.emit('update'); + + return id; + } + + get (id) { + const state = this._states[id]; + + if (!state || state.status !== AWAITING) { + return null; + } + + return state.transaction; + } + + lock (id) { + const state = this._states[id]; + + if (!state || state.status !== AWAITING) { + throw new Error('Trying to lock an invalid transaction'); + } + + state.status = LOCKED; + + this.emit('update'); + } + + unlock (id) { + const state = this._states[id]; + + if (!state || state.status !== LOCKED) { + throw new Error('Trying to unlock an invalid transaction'); + } + + state.status = AWAITING; + + this.emit('update'); + } + + hash (id) { + const state = this._states[id]; + + if (!state) { + return null; + } + + switch (state.status) { + case REJECTED: + throw TransportError.requestRejected(); + case CONFIRMED: + return state.hash; + default: + return null; + } + } + + confirm (id, hash) { + const state = this._states[id]; + const status = state ? state.status : null; + + switch (status) { + case AWAITING: break; + case LOCKED: break; + default: throw new Error('Trying to confirm an invalid transaction'); + } + + state.hash = hash; + state.status = CONFIRMED; + + this.emit('update'); + } + + reject (id) { + const state = this._states[id]; + + if (!state) { + return false; + } + + state.status = REJECTED; + + this.emit('update'); + + return true; + } + + requestsToConfirm () { + const result = []; + + Object.keys(this._states).forEach((id) => { + const state = this._states[id]; + + if (state.status === AWAITING) { + result.push({ + id, + origin: { + signer: '0x0' + }, + payload: { + sendTransaction: state.transaction + } + }); + } + }); + + return result; + } +} + +module.exports = new Transactions(); diff --git a/js/src/api-local/transactions.spec.js b/js/src/api-local/transactions.spec.js new file mode 100644 index 000000000..47c450d68 --- /dev/null +++ b/js/src/api-local/transactions.spec.js @@ -0,0 +1,88 @@ +// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +/* eslint-disable no-unused-expressions */ + +const { TransportError } = require('@parity/api/lib/transport/error'); + +const transactions = require('./transactions'); + +const DUMMY_TX = 'dummy'; + +describe('api/local/transactions', () => { + beforeEach(() => { + transactions.reset(); + }); + + it('can store transactions', () => { + const id1 = transactions.add(DUMMY_TX); + const id2 = transactions.add(DUMMY_TX); + const requests = transactions.requestsToConfirm(); + + expect(id1).to.be.equal('0x1'); + expect(id2).to.be.equal('0x2'); + expect(requests.length).to.be.equal(2); + expect(requests[0].id).to.be.equal(id1); + expect(requests[1].id).to.be.equal(id2); + expect(requests[0].payload.sendTransaction).to.be.equal(DUMMY_TX); + expect(requests[1].payload.sendTransaction).to.be.equal(DUMMY_TX); + }); + + it('can confirm transactions', () => { + const id1 = transactions.add(DUMMY_TX); + const id2 = transactions.add(DUMMY_TX); + + const hash1 = '0x1111111111111111111111111111111111111111'; + const hash2 = '0x2222222222222222222222222222222222222222'; + + transactions.confirm(id1, hash1); + transactions.confirm(id2, hash2); + + const requests = transactions.requestsToConfirm(); + + expect(requests.length).to.be.equal(0); + expect(transactions.hash(id1)).to.be.equal(hash1); + expect(transactions.hash(id2)).to.be.equal(hash2); + }); + + it('can reject transactions', () => { + const id = transactions.add(DUMMY_TX); + + transactions.reject(id); + + const requests = transactions.requestsToConfirm(); + + expect(requests.length).to.be.equal(0); + expect(() => transactions.hash(id)).to.throw(TransportError); + }); + + it('can lock and confirm transactions', () => { + const id = transactions.add(DUMMY_TX); + const hash = '0x1111111111111111111111111111111111111111'; + + transactions.lock(id); + + const requests = transactions.requestsToConfirm(); + + expect(requests.length).to.be.equal(0); + expect(transactions.get(id)).to.be.null; + expect(transactions.hash(id)).to.be.null; + + transactions.confirm(id, hash); + + expect(transactions.hash(id)).to.be.equal(hash); + }); +}); diff --git a/js/src/dev.parity.html b/js/src/dev.parity.html index 504dfbb70..bb68ed45a 100644 --- a/js/src/dev.parity.html +++ b/js/src/dev.parity.html @@ -6,7 +6,6 @@ dev::Parity.js - - - -
-
Loading
-
- - <% if (!htmlWebpackPlugin.options.secure) { %> - - <% } %> - - diff --git a/js-old/src/dapps/localtx.js b/js-old/src/dapps/localtx.js deleted file mode 100644 index 4625ded20..000000000 --- a/js-old/src/dapps/localtx.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import ReactDOM from 'react-dom'; -import React from 'react'; -import { AppContainer } from 'react-hot-loader'; - -import injectTapEventPlugin from 'react-tap-event-plugin'; -injectTapEventPlugin(); - -import Application from './localtx/Application'; - -import '../../assets/fonts/Roboto/font.css'; -import '../../assets/fonts/RobotoMono/font.css'; -import './style.css'; - -ReactDOM.render( - - - , - document.querySelector('#container') -); - -if (module.hot) { - module.hot.accept('./localtx/Application/index.js', () => { - require('./localtx/Application/index.js'); - - ReactDOM.render( - - - , - document.querySelector('#container') - ); - }); -} diff --git a/js-old/src/dapps/localtx/Application/application.css b/js-old/src/dapps/localtx/Application/application.css deleted file mode 100644 index 15762c5d4..000000000 --- a/js-old/src/dapps/localtx/Application/application.css +++ /dev/null @@ -1,43 +0,0 @@ -.container { - padding: 1rem 2rem; - text-align: center; - - h1 { - margin-top: 3rem; - margin-bottom: 1rem; - } - - table { - text-align: left; - margin: auto; - max-width: 90vw; - - th { - text-align: center; - } - - td { - text-align: center; - } - } - - button { - background-color: rgba(0, 136, 170, 1); - border: none; - border-radius: 5px; - color: white; - font-size: 1rem; - padding: 0.5em 1em; - width: 100%; - - &:hover { - background-color: rgba(0, 136, 170, 0.8); - cursor: pointer; - } - } - - input { - font-size: 1rem; - padding: 0.5em 1em; - } -} diff --git a/js-old/src/dapps/localtx/Application/application.js b/js-old/src/dapps/localtx/Application/application.js deleted file mode 100644 index 27dc41b3e..000000000 --- a/js-old/src/dapps/localtx/Application/application.js +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import React, { Component } from 'react'; - -import { api } from '../parity'; - -import styles from './application.css'; - -import { Transaction, LocalTransaction } from '../Transaction'; - -export default class Application extends Component { - state = { - loading: true, - transactions: [], - localTransactions: {}, - blockNumber: 0 - } - - componentDidMount () { - const poll = () => { - this._timeout = window.setTimeout(() => { - this.fetchTransactionData().then(poll).catch(poll); - }, 1000); - }; - - poll(); - } - - componentWillUnmount () { - clearTimeout(this._timeout); - } - - fetchTransactionData () { - return Promise.all([ - api.parity.pendingTransactions(), - api.parity.pendingTransactionsStats(), - api.parity.localTransactions(), - api.eth.blockNumber() - ]).then(([pending, stats, local, blockNumber]) => { - // Combine results together - const transactions = pending.map(tx => { - return { - transaction: tx, - stats: stats[tx.hash], - isLocal: !!local[tx.hash] - }; - }); - - // Add transaction data to locals - transactions - .filter(tx => tx.isLocal) - .map(data => { - const tx = data.transaction; - - local[tx.hash].transaction = tx; - local[tx.hash].stats = data.stats; - }); - // Convert local transactions to array - const localTransactions = Object.keys(local).map(hash => { - const data = local[hash]; - - data.txHash = hash; - return data; - }); - - // Sort local transactions by nonce (move future to the end) - localTransactions.sort((a, b) => { - a = a.transaction || {}; - b = b.transaction || {}; - - if (a.from && b.from && a.from !== b.from) { - return a.from < b.from; - } - - if (!a.nonce || !b.nonce) { - return !a.nonce ? 1 : -1; - } - - return new BigNumber(a.nonce).comparedTo(new BigNumber(b.nonce)); - }); - - this.setState({ - loading: false, - transactions, - localTransactions, - blockNumber - }); - }); - } - - render () { - const { loading } = this.state; - - if (loading) { - return ( -
Loading...
- ); - } - - return ( -
-

Your local transactions

- { this.renderLocals() } -

Transactions in the queue

- { this.renderQueueSummary() } - { this.renderQueue() } -
- ); - } - - renderQueueSummary () { - const { transactions } = this.state; - - if (!transactions.length) { - return null; - } - - const count = transactions.length; - const locals = transactions.filter(tx => tx.isLocal).length; - const fee = transactions - .map(tx => tx.transaction) - .map(tx => tx.gasPrice.mul(tx.gas)) - .reduce((sum, fee) => sum.add(fee), new BigNumber(0)); - - return ( -

- Count: { locals ? `${count} (${locals})` : count } -   - Total Fee: { api.util.fromWei(fee).toFixed(3) } ETH -

- ); - } - - renderQueue () { - const { blockNumber, transactions } = this.state; - - if (!transactions.length) { - return ( -

The queue seems empty.

- ); - } - - return ( - - - { Transaction.renderHeader() } - - - { - transactions.map((tx, idx) => ( - - )) - } - -
- ); - } - - renderLocals () { - const { localTransactions } = this.state; - - if (!localTransactions.length) { - return ( -

You haven't sent any transactions yet.

- ); - } - - return ( - - - { LocalTransaction.renderHeader() } - - - { - localTransactions.map(tx => ( - - )) - } - -
- ); - } -} diff --git a/js-old/src/dapps/localtx/Application/application.spec.js b/js-old/src/dapps/localtx/Application/application.spec.js deleted file mode 100644 index 64d1d8872..000000000 --- a/js-old/src/dapps/localtx/Application/application.spec.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React from 'react'; -import { shallow } from 'enzyme'; - -import '../../../environment/tests'; - -import Application from './application'; - -describe('dapps/localtx/Application', () => { - describe('rendering', () => { - it('renders without crashing', () => { - const rendered = shallow(); - - expect(rendered).to.be.defined; - }); - }); -}); diff --git a/js-old/src/dapps/localtx/Application/index.js b/js-old/src/dapps/localtx/Application/index.js deleted file mode 100644 index 3d8d1ca3b..000000000 --- a/js-old/src/dapps/localtx/Application/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './application'; diff --git a/js-old/src/dapps/localtx/IdentityIcon/identityIcon.css b/js-old/src/dapps/localtx/IdentityIcon/identityIcon.css deleted file mode 100644 index 01aba746d..000000000 --- a/js-old/src/dapps/localtx/IdentityIcon/identityIcon.css +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.icon { - width: 24px; - height: 24px; - border-radius: 50%; - margin-right: 0.5em; -} diff --git a/js-old/src/dapps/localtx/IdentityIcon/identityIcon.js b/js-old/src/dapps/localtx/IdentityIcon/identityIcon.js deleted file mode 100644 index c442c4585..000000000 --- a/js-old/src/dapps/localtx/IdentityIcon/identityIcon.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; - -import { api } from '../parity'; -import styles from './identityIcon.css'; - -export default class IdentityIcon extends Component { - static propTypes = { - address: PropTypes.string.isRequired - } - - render () { - const { address } = this.props; - - return ( - - ); - } -} diff --git a/js-old/src/dapps/localtx/IdentityIcon/index.js b/js-old/src/dapps/localtx/IdentityIcon/index.js deleted file mode 100644 index 091913564..000000000 --- a/js-old/src/dapps/localtx/IdentityIcon/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './identityIcon'; diff --git a/js-old/src/dapps/localtx/Transaction/index.js b/js-old/src/dapps/localtx/Transaction/index.js deleted file mode 100644 index fd940c68d..000000000 --- a/js-old/src/dapps/localtx/Transaction/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export { Transaction, LocalTransaction } from './transaction'; diff --git a/js-old/src/dapps/localtx/Transaction/transaction.css b/js-old/src/dapps/localtx/Transaction/transaction.css deleted file mode 100644 index b06942ed7..000000000 --- a/js-old/src/dapps/localtx/Transaction/transaction.css +++ /dev/null @@ -1,39 +0,0 @@ -.from { - white-space: nowrap; - - img { - vertical-align: middle; - } -} - -.txhash { - display: inline-block; - overflow: hidden; - padding-right: 3ch; - text-overflow: ellipsis; - width: 10ch; -} - -.transaction { - td { - padding: 7px 15px; - } - - td:first-child { - padding: 7px 0; - } - - &.local { - background: #8bc34a; - } -} - -.nowrap { - white-space: nowrap; -} - -.edit { - label, input { - display: block; - } -} diff --git a/js-old/src/dapps/localtx/Transaction/transaction.js b/js-old/src/dapps/localtx/Transaction/transaction.js deleted file mode 100644 index 554c2b757..000000000 --- a/js-old/src/dapps/localtx/Transaction/transaction.js +++ /dev/null @@ -1,395 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import React, { Component, PropTypes } from 'react'; -import classnames from 'classnames'; - -import { api } from '../parity'; - -import styles from './transaction.css'; - -import IdentityIcon from '../IdentityIcon'; - -class BaseTransaction extends Component { - shortHash (hash) { - return `${hash.substr(0, 5)}..${hash.substr(hash.length - 3)}`; - } - - renderHash (hash) { - return ( - - { hash } - - ); - } - - renderFrom (transaction) { - if (!transaction) { - return '-'; - } - - return ( -
- -
- ); - } - - renderGasPrice (transaction) { - if (!transaction) { - return '-'; - } - - return ( - - { api.util.fromWei(transaction.gasPrice, 'shannon').toFormat(2) } shannon - - ); - } - - renderGas (transaction) { - if (!transaction) { - return '-'; - } - - return ( - - { transaction.gas.div(10 ** 6).toFormat(3) } MGas - - ); - } - - renderPropagation (stats) { - const noOfPeers = Object.keys(stats.propagatedTo).length; - const noOfPropagations = Object.values(stats.propagatedTo).reduce((sum, val) => sum + val, 0); - - return ( - - { noOfPropagations } ({ noOfPeers } peers) - - ); - } -} - -export class Transaction extends BaseTransaction { - static propTypes = { - idx: PropTypes.number.isRequired, - transaction: PropTypes.object.isRequired, - blockNumber: PropTypes.object.isRequired, - isLocal: PropTypes.bool, - stats: PropTypes.object - }; - - static defaultProps = { - isLocal: false, - stats: { - firstSeen: 0, - propagatedTo: {} - } - }; - - static renderHeader () { - return ( - - - - Transaction - - - From - - - Gas Price - - - Gas - - - First propagation - - - # Propagated - - - - ); - } - - render () { - const { isLocal, stats, transaction, idx } = this.props; - const blockNo = new BigNumber(stats.firstSeen); - - const clazz = classnames(styles.transaction, { - [styles.local]: isLocal - }); - - return ( - - - { idx }. - - - { this.renderHash(transaction.hash) } - - - { this.renderFrom(transaction) } - - - { this.renderGasPrice(transaction) } - - - { this.renderGas(transaction) } - - - { this.renderTime(stats.firstSeen) } - - - { this.renderPropagation(stats) } - - - ); - } - - renderTime (firstSeen) { - const { blockNumber } = this.props; - - if (!firstSeen) { - return 'never'; - } - - const timeInMinutes = blockNumber.sub(firstSeen).mul(14).div(60).toFormat(1); - - return `${timeInMinutes} minutes ago`; - } -} - -export class LocalTransaction extends BaseTransaction { - static propTypes = { - hash: PropTypes.string.isRequired, - status: PropTypes.string.isRequired, - transaction: PropTypes.object, - isLocal: PropTypes.bool, - stats: PropTypes.object, - details: PropTypes.object - }; - - static defaultProps = { - stats: { - propagatedTo: {} - } - }; - - static renderHeader () { - return ( - - - - Transaction - - - From - - - Gas Price - - - Gas - - - Status - - - ); - } - - state = { - isSending: false, - isResubmitting: false, - gasPrice: null, - gas: null - }; - - toggleResubmit = () => { - const { transaction } = this.props; - const { isResubmitting } = this.state; - - const nextState = { - isResubmitting: !isResubmitting - }; - - if (!isResubmitting) { - nextState.gasPrice = api.util.fromWei(transaction.gasPrice, 'shannon').toNumber(); - nextState.gas = transaction.gas.div(1000000).toNumber(); - } - - this.setState(nextState); - }; - - setGasPrice = el => { - this.setState({ - gasPrice: el.target.value - }); - }; - - setGas = el => { - this.setState({ - gas: el.target.value - }); - }; - - sendTransaction = () => { - const { transaction, status } = this.props; - const { gasPrice, gas } = this.state; - - const newTransaction = { - from: transaction.from, - value: transaction.value, - data: transaction.input, - gasPrice: api.util.toWei(gasPrice, 'shannon'), - gas: new BigNumber(gas).mul(1000000) - }; - - this.setState({ - isResubmitting: false, - isSending: true - }); - - const closeSending = () => { - this.setState({ - isSending: false, - gasPrice: null, - gas: null - }); - }; - - if (transaction.to) { - newTransaction.to = transaction.to; - } - - if (!['mined', 'replaced'].includes(status)) { - newTransaction.nonce = transaction.nonce; - } - - api.eth.sendTransaction(newTransaction) - .then(closeSending) - .catch(closeSending); - }; - - render () { - if (this.state.isResubmitting) { - return this.renderResubmit(); - } - - const { stats, transaction, hash, status } = this.props; - const { isSending } = this.state; - - const resubmit = isSending ? ( - 'sending...' - ) : ( - - ); - - return ( - - - { !transaction ? null : resubmit } - - - { this.renderHash(hash) } - - - { this.renderFrom(transaction) } - - - { this.renderGasPrice(transaction) } - - - { this.renderGas(transaction) } - - - { this.renderStatus() } -
- { status === 'pending' ? this.renderPropagation(stats) : null } - - - ); - } - - renderStatus () { - const { details } = this.props; - - let state = { - 'pending': () => 'In queue: Pending', - 'future': () => 'In queue: Future', - 'mined': () => 'Mined', - 'dropped': () => 'Dropped because of queue limit', - 'invalid': () => 'Transaction is invalid', - 'rejected': () => `Rejected: ${details.error}`, - 'replaced': () => `Replaced by ${this.shortHash(details.hash)}` - }[this.props.status]; - - return state ? state() : 'unknown'; - } - - // TODO [ToDr] Gas Price / Gas selection is not needed - // when signer supports gasPrice/gas tunning. - renderResubmit () { - const { transaction } = this.props; - const { gasPrice, gas } = this.state; - - return ( - - - - - - { this.renderHash(transaction.hash) } - - - { this.renderFrom(transaction) } - - - - shannon - - - - MGas - - - - - - ); - } -} diff --git a/js-old/src/dapps/localtx/Transaction/transaction.spec.js b/js-old/src/dapps/localtx/Transaction/transaction.spec.js deleted file mode 100644 index af2edf2d4..000000000 --- a/js-old/src/dapps/localtx/Transaction/transaction.spec.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React from 'react'; -import { shallow } from 'enzyme'; - -import '../../../environment/tests'; -import EthApi from '../../../api'; - -// Mock API for tests -import * as Api from '../parity'; -Api.api = { - util: EthApi.prototype.util -}; - -import BigNumber from 'bignumber.js'; -import { Transaction, LocalTransaction } from './transaction'; - -describe('dapps/localtx/Transaction', () => { - describe('rendering', () => { - it('renders without crashing', () => { - const transaction = { - hash: '0x1234567890', - nonce: new BigNumber(15), - gasPrice: new BigNumber(10), - gas: new BigNumber(10) - }; - const rendered = shallow( - - ); - - expect(rendered).to.be.defined; - }); - }); -}); - -describe('dapps/localtx/LocalTransaction', () => { - describe('rendering', () => { - it('renders without crashing', () => { - const rendered = shallow( - - ); - - expect(rendered).to.be.defined; - }); - }); -}); diff --git a/js-old/src/dapps/localtx/parity.js b/js-old/src/dapps/localtx/parity.js deleted file mode 100644 index 7118ce087..000000000 --- a/js-old/src/dapps/localtx/parity.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const api = window.parent.secureApi; - -export { - api -}; diff --git a/js-old/src/dapps/registry.js b/js-old/src/dapps/registry.js deleted file mode 100644 index 3be005184..000000000 --- a/js-old/src/dapps/registry.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React from 'react'; -import ReactDOM from 'react-dom'; -import { Provider } from 'react-redux'; - -import injectTapEventPlugin from 'react-tap-event-plugin'; -injectTapEventPlugin(); - -import store from './registry/store'; -import Container from './registry/Container'; - -import '../../assets/fonts/Roboto/font.css'; -import '../../assets/fonts/RobotoMono/font.css'; -import './style.css'; - -ReactDOM.render( - - - , - document.querySelector('#container') -); - -if (module.hot) { - module.hot.accept('./registry/Container', () => { - require('./registry/Container'); - - ReactDOM.render( - - - , - document.querySelector('#container') - ); - }); -} diff --git a/js-old/src/dapps/registry/Accounts/accounts.css b/js-old/src/dapps/registry/Accounts/accounts.css deleted file mode 100644 index d886138f0..000000000 --- a/js-old/src/dapps/registry/Accounts/accounts.css +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.icon { - /* TODO remove !important once material design lite is used */ - height: 30px !important; - margin: 0 !important; - padding: 0 !important; - width: 30px !important; -} diff --git a/js-old/src/dapps/registry/Accounts/accounts.js b/js-old/src/dapps/registry/Accounts/accounts.js deleted file mode 100644 index b17ad63b1..000000000 --- a/js-old/src/dapps/registry/Accounts/accounts.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; -import AccountIcon from 'material-ui/svg-icons/action/account-circle'; - -import { init } from './actions'; -import IdentityIcon from '../IdentityIcon'; - -import styles from './accounts.css'; - -class Accounts extends Component { - static propTypes = { - selected: PropTypes.oneOfType([ - PropTypes.oneOf([ null ]), - PropTypes.string - ]), - onInit: PropTypes.func.isRequired - }; - - componentWillMount () { - this.props.onInit(); - } - - render () { - const { selected } = this.props; - - if (!selected) { - return ( - - ); - } - - return ( - - ); - } -} - -const mapStateToProps = (state) => state.accounts; -const mapDispatchToProps = (dispatch) => bindActionCreators({ - onInit: init -}, dispatch); - -export default connect(mapStateToProps, mapDispatchToProps)(Accounts); diff --git a/js-old/src/dapps/registry/Accounts/actions.js b/js-old/src/dapps/registry/Accounts/actions.js deleted file mode 100644 index 7f38de579..000000000 --- a/js-old/src/dapps/registry/Accounts/actions.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { api } from '../parity'; - -export const select = (address) => ({ type: 'accounts select', address }); - -export const init = () => (dispatch) => { - api.subscribe('parity_defaultAccount', (error, accountAddress) => { - if (error) { - return console.error(error); - } - - if (accountAddress) { - dispatch(select(accountAddress)); - } - }); - - return api.parity - .defaultAccount() - .then((accountAddress) => { - dispatch(select(accountAddress)); - }) - .catch((error) => { - console.error(error); - }); -}; diff --git a/js-old/src/dapps/registry/Accounts/index.js b/js-old/src/dapps/registry/Accounts/index.js deleted file mode 100644 index 027387e70..000000000 --- a/js-old/src/dapps/registry/Accounts/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './accounts'; diff --git a/js-old/src/dapps/registry/Application/application.css b/js-old/src/dapps/registry/Application/application.css deleted file mode 100644 index b9fac12ae..000000000 --- a/js-old/src/dapps/registry/Application/application.css +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.header { - align-items: center; - display: flex; - justify-content: space-between; - margin: 0; - padding: 0.3em 1em; - color: #fff; - background-color: #333; -} - -.header h1 { - margin-top: 0; - margin-bottom: 0; - line-height: 50px; - font-size: 200%; - text-transform: uppercase; -} - -.address { - margin-bottom: 0; - padding: 1rem; - font-size: 80%; - background-color: #f0f0f0; -} - -.actions { - margin: 1em; - - * { - font-size: 1.3rem !important; - } - - > * { - padding-bottom: 0 !important; - } -} - -.warning { - background: #f80; - bottom: 0; - color: #fff; - cursor: pointer; - left: 0; - opacity: 1; - padding: 1.5em; - position: fixed; - right: 50%; - z-index: 100; -} diff --git a/js-old/src/dapps/registry/Application/application.js b/js-old/src/dapps/registry/Application/application.js deleted file mode 100644 index 7857b1ad1..000000000 --- a/js-old/src/dapps/registry/Application/application.js +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . -import React, { Component, PropTypes } from 'react'; - -import getMuiTheme from 'material-ui/styles/getMuiTheme'; -import lightBaseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'; -const muiTheme = getMuiTheme(lightBaseTheme); - -import CircularProgress from 'material-ui/CircularProgress'; -import { Card, CardText } from 'material-ui/Card'; - -import { nullableProptype } from '~/util/proptypes'; -import { api } from '../parity'; - -import styles from './application.css'; -import Accounts from '../Accounts'; -import Events from '../Events'; -import Lookup from '../Lookup'; -import Names from '../Names'; -import Records from '../Records'; -import Reverse from '../Reverse'; - -export default class Application extends Component { - static childContextTypes = { - muiTheme: PropTypes.object.isRequired, - api: PropTypes.object.isRequired - }; - - getChildContext () { - return { muiTheme, api }; - } - - static propTypes = { - accounts: PropTypes.object.isRequired, - contract: nullableProptype(PropTypes.object.isRequired), - fee: nullableProptype(PropTypes.object.isRequired) - }; - - state = { - showWarning: true - }; - - render () { - const { contract, fee } = this.props; - let warning = null; - - return ( -
- { warning } -
-

RΞgistry

- -
- { contract && fee ? ( -
- - { this.renderActions() } - - { this.renderWarning() } -
- ) : ( - - ) } -
- ); - } - - renderActions () { - const hasAccount = !!this.props.accounts.selected; - - if (!hasAccount) { - return ( - - - Please select a valid account in order - to execute actions. - - - ); - } - - return ( -
- - - -
- ); - } - - renderWarning () { - const { showWarning } = this.state; - const { fee } = this.props; - - if (!showWarning) { - return null; - } - - return ( -
- - WARNING: The name registry is experimental. Please ensure that you understand the risks, - benefits & consequences of registering a name before doing so. - - { - fee && api.util.fromWei(fee).gt(0) - ? ( - -  A non-refundable fee of { api.util.fromWei(fee).toFormat(3) } ETH -  is required for all registrations. - - ) - : null - } -
- ); - } - - handleHideWarning = () => { - this.setState({ showWarning: false }); - } -} diff --git a/js-old/src/dapps/registry/Application/index.js b/js-old/src/dapps/registry/Application/index.js deleted file mode 100644 index 3d8d1ca3b..000000000 --- a/js-old/src/dapps/registry/Application/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './application'; diff --git a/js-old/src/dapps/registry/Container.js b/js-old/src/dapps/registry/Container.js deleted file mode 100644 index 6a945a99c..000000000 --- a/js-old/src/dapps/registry/Container.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; - -import { nullableProptype } from '~/util/proptypes'; - -import Application from './Application'; -import * as actions from './actions'; - -class Container extends Component { - static propTypes = { - actions: PropTypes.object.isRequired, - accounts: PropTypes.object.isRequired, - contacts: PropTypes.object.isRequired, - contract: nullableProptype(PropTypes.object.isRequired), - owner: nullableProptype(PropTypes.string.isRequired), - fee: nullableProptype(PropTypes.object.isRequired), - lookup: PropTypes.object.isRequired, - events: PropTypes.object.isRequired - }; - - componentDidMount () { - Promise.all([ - this.props.actions.fetchIsTestnet(), - this.props.actions.addresses.fetch(), - this.props.actions.fetchContract() - ]).then(() => { - this.props.actions.events.subscribe('Reserved'); - }); - } - - render () { - return (); - } -} - -export default connect( - // redux -> react connection - (state) => state, - // react -> redux connection - (dispatch) => { - const bound = bindActionCreators(actions, dispatch); - - bound.addresses = bindActionCreators(actions.addresses, dispatch); - bound.accounts = bindActionCreators(actions.accounts, dispatch); - bound.lookup = bindActionCreators(actions.lookup, dispatch); - bound.events = bindActionCreators(actions.events, dispatch); - bound.names = bindActionCreators(actions.names, dispatch); - bound.records = bindActionCreators(actions.records, dispatch); - return { actions: bound }; - } -)(Container); diff --git a/js-old/src/dapps/registry/Events/actions.js b/js-old/src/dapps/registry/Events/actions.js deleted file mode 100644 index e1f316718..000000000 --- a/js-old/src/dapps/registry/Events/actions.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { api } from '../parity.js'; - -export const start = (name, from, to) => ({ type: 'events subscribe start', name, from, to }); -export const fail = (name) => ({ type: 'events subscribe fail', name }); -export const success = (name, subscription) => ({ type: 'events subscribe success', name, subscription }); - -export const event = (name, event) => ({ type: 'events event', name, event }); - -export const subscribe = (name, from = 0, to = 'pending') => - (dispatch, getState) => { - const { contract } = getState(); - - if (!contract) { - return; - } - - const opt = { fromBlock: from, toBlock: to, limit: 50 }; - - dispatch(start(name, from, to)); - - contract - .subscribe(name, opt, (error, events) => { - if (error) { - console.error(`error receiving events for ${name}`, error); - return; - } - - events.forEach((e) => { - Promise.all([ - api.parity.getBlockHeaderByNumber(e.blockNumber), - api.eth.getTransactionByHash(e.transactionHash) - ]) - .then(([block, tx]) => { - const data = { - type: name, - key: '' + e.transactionHash + e.logIndex, - state: e.type, - block: e.blockNumber, - index: e.logIndex, - transaction: e.transactionHash, - from: tx.from, - to: tx.to, - parameters: e.params, - timestamp: block.timestamp - }; - - dispatch(event(name, data)); - }) - .catch((err) => { - console.error(`could not fetch block ${e.blockNumber}.`); - console.error(err); - }); - }); - }) - .then((subscriptionId) => { - dispatch(success(name, subscriptionId)); - }) - .catch((error) => { - console.error('event subscription failed', error); - dispatch(fail(name)); - }); - }; - -export const unsubscribe = (name) => - (dispatch, getState) => { - const state = getState(); - - if (!state.contract) { - return; - } - - const subscriptions = state.events.subscriptions; - - if (!(name in subscriptions) || subscriptions[name] === null) { - return; - } - - state.contract - .unsubscribe(subscriptions[name]) - .then(() => { - dispatch({ type: 'events unsubscribe', name }); - }) - .catch((error) => { - console.error('event unsubscribe failed', error); - }); - }; diff --git a/js-old/src/dapps/registry/Events/events.css b/js-old/src/dapps/registry/Events/events.css deleted file mode 100644 index a7439c388..000000000 --- a/js-old/src/dapps/registry/Events/events.css +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.events { - margin: 1em; -} - -.options { - margin: 0 .5em; -} - -.reserved, .dropped, .dataChanged { -} - -.reserved abbr, .dropped abbr { - cursor: help; -} - -.pending { - opacity: .6; -} - -.owner code { - display: inline-block; - vertical-align: top; - line-height: 32px; - word-wrap: break-word; -} - -.eventsList { - width: 100%; - boder: none; -} - -.eventsList td { - padding: 0.25em 0.5em; -} - -.inline { - display: inline-block; - width: auto; - margin-right: 1em; -} diff --git a/js-old/src/dapps/registry/Events/events.js b/js-old/src/dapps/registry/Events/events.js deleted file mode 100644 index 05b138bc5..000000000 --- a/js-old/src/dapps/registry/Events/events.js +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { Card, CardHeader, CardActions, CardText } from 'material-ui/Card'; -import Toggle from 'material-ui/Toggle'; -import moment from 'moment'; - -import { bytesToHex } from '../parity'; -import Hash from '../ui/hash'; -import Address from '../ui/address'; - -import { subscribe, unsubscribe } from './actions'; -import styles from './events.css'; - -const inlineButton = { - display: 'inline-block', - width: 'auto', - marginRight: '1em' -}; - -const renderStatus = (timestamp, isPending) => { - timestamp = moment(timestamp); - if (isPending) { - return (pending); - } - return ( - - ); -}; - -const renderEvent = (classNames, verb) => (e) => { - const classes = e.state === 'pending' - ? classNames + ' ' + styles.pending : classNames; - - return ( - - -
- - - { verb } - - - - - - - - { renderStatus(e.timestamp, e.state === 'pending') } - - - ); -}; - -const renderDataChanged = (e) => { - let classNames = styles.dataChanged; - - if (e.state === 'pending') { - classNames += ' ' + styles.pending; - } - - return ( - - -
- - - updated - - - key  - - { new Buffer(e.parameters.plainKey.value).toString('utf8') } - -  of  - - - - - - { renderStatus(e.timestamp, e.state === 'pending') } - - - ); -}; - -const renderReverse = (e) => { - const verb = ({ - ReverseProposed: 'proposed', - ReverseConfirmed: 'confirmed', - ReverseRemoved: 'removed' - })[e.type]; - - if (!verb) { - return null; - } - - const classes = [ styles.reverse ]; - - if (e.state === 'pending') { - classes.push(styles.pending); - } - - // TODO: `name` is an indexed param, cannot display as plain text - return ( - - -
- - { verb } - - { 'name ' } - { bytesToHex(e.parameters.name.value) } - { ' for ' } -
- - - { renderStatus(e.timestamp, e.state === 'pending') } - - - ); -}; - -const eventTypes = { - Reserved: renderEvent(styles.reserved, 'reserved'), - Dropped: renderEvent(styles.dropped, 'dropped'), - DataChanged: renderDataChanged, - ReverseProposed: renderReverse, - ReverseConfirmed: renderReverse, - ReverseRemoved: renderReverse -}; - -class Events extends Component { - static propTypes = { - events: PropTypes.array.isRequired, - pending: PropTypes.object.isRequired, - subscriptions: PropTypes.object.isRequired, - - subscribe: PropTypes.func.isRequired, - unsubscribe: PropTypes.func.isRequired - } - - render () { - const { subscriptions, pending } = this.props; - - const eventsObject = this.props.events - .filter((e) => eventTypes[e.type]) - .reduce((eventsObject, event) => { - const txHash = event.transaction; - - if ( - (eventsObject[txHash] && eventsObject[txHash].state === 'pending') || - !eventsObject[txHash] - ) { - eventsObject[txHash] = event; - } - - return eventsObject; - }, {}); - - const events = Object - .values(eventsObject) - .sort((evA, evB) => { - if (evA.state === 'pending') { - return -1; - } - - if (evB.state === 'pending') { - return 1; - } - - return evB.timestamp - evA.timestamp; - }) - .map((e) => eventTypes[e.type](e)); - - const reverseToggled = - subscriptions.ReverseProposed !== null && - subscriptions.ReverseConfirmed !== null && - subscriptions.ReverseRemoved !== null; - const reverseDisabled = - pending.ReverseProposed || - pending.ReverseConfirmed || - pending.ReverseRemoved; - - return ( - - - - - - - - - - - - { events } - -
-
-
- ); - } - - onReservedToggle = (e, isToggled) => { - const { pending, subscriptions, subscribe, unsubscribe } = this.props; - - if (!pending.Reserved) { - if (isToggled && subscriptions.Reserved === null) { - subscribe('Reserved'); - } else if (!isToggled && subscriptions.Reserved !== null) { - unsubscribe('Reserved'); - } - } - }; - - onDroppedToggle = (e, isToggled) => { - const { pending, subscriptions, subscribe, unsubscribe } = this.props; - - if (!pending.Dropped) { - if (isToggled && subscriptions.Dropped === null) { - subscribe('Dropped'); - } else if (!isToggled && subscriptions.Dropped !== null) { - unsubscribe('Dropped'); - } - } - }; - - onDataChangedToggle = (e, isToggled) => { - const { pending, subscriptions, subscribe, unsubscribe } = this.props; - - if (!pending.DataChanged) { - if (isToggled && subscriptions.DataChanged === null) { - subscribe('DataChanged'); - } else if (!isToggled && subscriptions.DataChanged !== null) { - unsubscribe('DataChanged'); - } - } - }; - - onReverseToggle = (e, isToggled) => { - const { pending, subscriptions, subscribe, unsubscribe } = this.props; - - for (let e of ['ReverseProposed', 'ReverseConfirmed', 'ReverseRemoved']) { - if (pending[e]) { - continue; - } - - if (isToggled && subscriptions[e] === null) { - subscribe(e); - } else if (!isToggled && subscriptions[e] !== null) { - unsubscribe(e); - } - } - }; -} - -const mapStateToProps = (state) => state.events; -const mapDispatchToProps = (dispatch) => bindActionCreators({ subscribe, unsubscribe }, dispatch); - -export default connect(mapStateToProps, mapDispatchToProps)(Events); diff --git a/js-old/src/dapps/registry/Events/index.js b/js-old/src/dapps/registry/Events/index.js deleted file mode 100644 index a2c765eb5..000000000 --- a/js-old/src/dapps/registry/Events/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './events.js'; diff --git a/js-old/src/dapps/registry/Events/reducers.js b/js-old/src/dapps/registry/Events/reducers.js deleted file mode 100644 index 4d23e9123..000000000 --- a/js-old/src/dapps/registry/Events/reducers.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const initialState = { - subscriptions: { - Reserved: null, - Dropped: null, - DataChanged: null, - ReverseProposed: null, - ReverseConfirmed: null, - ReverseRemoved: null - }, - pending: { - Reserved: false, - Dropped: false, - DataChanged: false, - ReverseProposed: false, - ReverseConfirmed: false, - ReverseRemoved: false - }, - events: [] -}; - -const sortEvents = (a, b) => { - if (a.state === 'pending' && b.state !== 'pending') { - return -1; - } else if (a.state !== 'pending' && b.state === 'pending') { - return 1; - } - - const d = b.block.minus(a.block).toFixed(0); - - if (d === 0) { - return b.index.minus(a.index).toFixed(0); - } - - return d; -}; - -export default (state = initialState, action) => { - if (!(action.name in state.subscriptions)) { // invalid event name - return state; - } - - if (action.type === 'events subscribe start') { - return { ...state, pending: { ...state.pending, [action.name]: true } }; - } - if (action.type === 'events subscribe fail') { - return { ...state, pending: { ...state.pending, [action.name]: false } }; - } - if (action.type === 'events subscribe success') { - return { - ...state, - pending: { ...state.pending, [action.name]: false }, - subscriptions: { ...state.subscriptions, [action.name]: action.subscription } - }; - } - - if (action.type === 'events unsubscribe') { - return { - ...state, - pending: { ...state.pending, [action.name]: false }, - subscriptions: { ...state.subscriptions, [action.name]: null }, - events: state.events.filter((event) => event.type !== action.name) - }; - } - - if (action.type === 'events event') { - return { ...state, events: state.events - .filter((event) => event.key !== action.event.key) - .concat(action.event) - .sort(sortEvents) - }; - } - - return state; -}; diff --git a/js-old/src/dapps/registry/IdentityIcon/identityIcon.css b/js-old/src/dapps/registry/IdentityIcon/identityIcon.css deleted file mode 100644 index 01aba746d..000000000 --- a/js-old/src/dapps/registry/IdentityIcon/identityIcon.css +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.icon { - width: 24px; - height: 24px; - border-radius: 50%; - margin-right: 0.5em; -} diff --git a/js-old/src/dapps/registry/IdentityIcon/identityIcon.js b/js-old/src/dapps/registry/IdentityIcon/identityIcon.js deleted file mode 100644 index aac1043ae..000000000 --- a/js-old/src/dapps/registry/IdentityIcon/identityIcon.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; - -import { api } from '../parity'; -import styles from './identityIcon.css'; - -export default class IdentityIcon extends Component { - static propTypes = { - address: PropTypes.string.isRequired, - className: PropTypes.string, - style: PropTypes.object - } - - render () { - const { address, className, style } = this.props; - - return ( - - ); - } -} diff --git a/js-old/src/dapps/registry/IdentityIcon/index.js b/js-old/src/dapps/registry/IdentityIcon/index.js deleted file mode 100644 index 091913564..000000000 --- a/js-old/src/dapps/registry/IdentityIcon/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './identityIcon'; diff --git a/js-old/src/dapps/registry/Lookup/actions.js b/js-old/src/dapps/registry/Lookup/actions.js deleted file mode 100644 index 514039272..000000000 --- a/js-old/src/dapps/registry/Lookup/actions.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { api, sha3 } from '../parity.js'; -import { getOwner } from '../util/registry'; - -export const clear = () => ({ type: 'lookup clear' }); - -export const lookupStart = (name, key) => ({ type: 'lookup start', name, key }); -export const reverseLookupStart = (address) => ({ type: 'reverseLookup start', address }); -export const ownerLookupStart = (name) => ({ type: 'ownerLookup start', name }); - -export const success = (action, result) => ({ type: `${action} success`, result: result }); - -export const fail = (action) => ({ type: `${action} error` }); - -export const lookup = (name, key) => (dispatch, getState) => { - const { contract } = getState(); - - if (!contract) { - return; - } - - const method = key === 'A' - ? contract.instance.getAddress - : contract.instance.getData; - - name = name.toLowerCase(); - dispatch(lookupStart(name, key)); - - method.call({}, [ sha3.text(name), key ]) - .then((result) => { - if (key !== 'A') { - result = api.util.bytesToHex(result); - } - - dispatch(success('lookup', result)); - }) - .catch((err) => { - console.error(`could not lookup ${key} for ${name}`); - if (err) { - console.error(err.stack); - } - dispatch(fail('lookup')); - }); -}; - -export const reverseLookup = (lookupAddress) => (dispatch, getState) => { - const { contract } = getState(); - - if (!contract) { - return; - } - - dispatch(reverseLookupStart(lookupAddress)); - - contract.instance - .reverse - .call({}, [ lookupAddress ]) - .then((address) => { - dispatch(success('reverseLookup', address)); - }) - .catch((err) => { - console.error(`could not lookup reverse for ${lookupAddress}`); - if (err) { - console.error(err.stack); - } - dispatch(fail('reverseLookup')); - }); -}; - -export const ownerLookup = (name) => (dispatch, getState) => { - const { contract } = getState(); - - if (!contract) { - return; - } - - name = name.toLowerCase(); - dispatch(ownerLookupStart(name)); - - return getOwner(contract, name) - .then((owner) => { - dispatch(success('ownerLookup', owner)); - }) - .catch((err) => { - console.error(`could not lookup owner for ${name}`); - - if (err) { - console.error(err.stack); - } - - dispatch(fail('ownerLookup')); - }); -}; diff --git a/js-old/src/dapps/registry/Lookup/index.js b/js-old/src/dapps/registry/Lookup/index.js deleted file mode 100644 index 9e3166ec5..000000000 --- a/js-old/src/dapps/registry/Lookup/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './lookup.js'; diff --git a/js-old/src/dapps/registry/Lookup/lookup.css b/js-old/src/dapps/registry/Lookup/lookup.css deleted file mode 100644 index 135db0905..000000000 --- a/js-old/src/dapps/registry/Lookup/lookup.css +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.lookup { - margin: 1em; -} - -.box { - display: flex; - margin: 0 1em; - align-items: baseline; -} diff --git a/js-old/src/dapps/registry/Lookup/lookup.js b/js-old/src/dapps/registry/Lookup/lookup.js deleted file mode 100644 index 3371d17e4..000000000 --- a/js-old/src/dapps/registry/Lookup/lookup.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { Card, CardHeader, CardText } from 'material-ui/Card'; -import TextField from 'material-ui/TextField'; -import DropDownMenu from 'material-ui/DropDownMenu'; -import MenuItem from 'material-ui/MenuItem'; -import RaisedButton from 'material-ui/RaisedButton'; -import SearchIcon from 'material-ui/svg-icons/action/search'; -import keycode from 'keycode'; - -import { nullableProptype } from '~/util/proptypes'; - -import Address from '../ui/address.js'; -import renderImage from '../ui/image.js'; - -import { clear, lookup, ownerLookup, reverseLookup } from './actions'; -import styles from './lookup.css'; - -class Lookup extends Component { - static propTypes = { - result: nullableProptype(PropTypes.string.isRequired), - - clear: PropTypes.func.isRequired, - lookup: PropTypes.func.isRequired, - ownerLookup: PropTypes.func.isRequired, - reverseLookup: PropTypes.func.isRequired - } - - state = { - input: '', type: 'A' - }; - - render () { - const { input, type } = this.state; - const { result } = this.props; - - return ( - - -
- - - - - - - - - } - onTouchTap={ this.onLookupClick } - /> -
- - { this.renderOutput(type, result) } - -
- ); - } - - renderOutput (type, result) { - if (result === null) { - return null; - } - - if (type === 'A') { - return ( - -
- - ); - } - - if (type === 'owner') { - if (!result) { - return ( - Not reserved yet - ); - } - - return ( - -
- - ); - } - - if (type === 'IMG') { - return renderImage(result); - } - - if (type === 'CONTENT') { - return ( -
- { result } -

Keep in mind that this is most likely the hash of the content you are looking for.

-
- ); - } - - return ( - { result || 'No data' } - ); - } - - onInputChange = (e) => { - this.setState({ input: e.target.value }); - } - - onKeyDown = (event) => { - const codeName = keycode(event); - - if (codeName !== 'enter') { - return; - } - - this.onLookupClick(); - } - - onTypeChange = (e, i, type) => { - this.setState({ type }); - this.props.clear(); - } - - onLookupClick = () => { - const { input, type } = this.state; - - if (type === 'reverse') { - return this.props.reverseLookup(input); - } - - if (type === 'owner') { - return this.props.ownerLookup(input); - } - - return this.props.lookup(input, type); - } -} - -const mapStateToProps = (state) => state.lookup; -const mapDispatchToProps = (dispatch) => - bindActionCreators({ - clear, lookup, ownerLookup, reverseLookup - }, dispatch); - -export default connect(mapStateToProps, mapDispatchToProps)(Lookup); diff --git a/js-old/src/dapps/registry/Lookup/reducers.js b/js-old/src/dapps/registry/Lookup/reducers.js deleted file mode 100644 index 0a8c2e486..000000000 --- a/js-old/src/dapps/registry/Lookup/reducers.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isStage } from '../util/actions'; - -const initialState = { - pending: false, - result: null -}; - -export default (state = initialState, action) => { - const { type } = action; - - if (!/^(lookup|reverseLookup|ownerLookup)/.test(type)) { - return state; - } - - if (isStage('clear', action)) { - return { pending: state.pending, result: null }; - } - - if (isStage('start', action)) { - return { pending: true, result: null }; - } - - if (isStage('error', action)) { - return { pending: false, result: null }; - } - - if (isStage('success', action)) { - return { pending: false, result: action.result }; - } - - return state; -}; diff --git a/js-old/src/dapps/registry/Names/actions.js b/js-old/src/dapps/registry/Names/actions.js deleted file mode 100644 index 9e5ff4fc6..000000000 --- a/js-old/src/dapps/registry/Names/actions.js +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { sha3, api } from '../parity.js'; -import { getOwner, isOwned } from '../util/registry'; -import postTx from '../util/post-tx'; - -export const clearError = () => ({ - type: 'clearError' -}); - -const alreadyQueued = (queue, action, name) => - !!queue.find((entry) => entry.action === action && entry.name === name); - -export const reserveStart = (name) => ({ type: 'names reserve start', name }); - -export const reserveSuccess = (name) => ({ type: 'names reserve success', name }); - -export const reserveFail = (name, error) => ({ type: 'names reserve fail', name, error }); - -export const reserve = (name) => (dispatch, getState) => { - const state = getState(); - const accountAddress = state.accounts.selected; - const contract = state.contract; - const fee = state.fee; - - if (!contract || !accountAddress) { - return; - } - - name = name.toLowerCase(); - - if (alreadyQueued(state.names.queue, 'reserve', name)) { - return; - } - - dispatch(reserveStart(name)); - - return isOwned(contract, name) - .then((owned) => { - if (owned) { - throw new Error(`"${name}" has already been reserved`); - } - - const { reserve } = contract.instance; - - const options = { - from: accountAddress, - value: fee - }; - const values = [ - sha3.text(name) - ]; - - return postTx(api, reserve, options, values); - }) - .then((txHash) => { - dispatch(reserveSuccess(name)); - }) - .catch((err) => { - if (err.type !== 'REQUEST_REJECTED') { - console.error(`error rerserving ${name}`, err); - return dispatch(reserveFail(name, err)); - } - - dispatch(reserveFail(name)); - }); -}; - -export const dropStart = (name) => ({ type: 'names drop start', name }); - -export const dropSuccess = (name) => ({ type: 'names drop success', name }); - -export const dropFail = (name, error) => ({ type: 'names drop fail', name, error }); - -export const drop = (name) => (dispatch, getState) => { - const state = getState(); - const accountAddress = state.accounts.selected; - const contract = state.contract; - - if (!contract || !accountAddress) { - return; - } - - name = name.toLowerCase(); - - if (alreadyQueued(state.names.queue, 'drop', name)) { - return; - } - - dispatch(dropStart(name)); - - return getOwner(contract, name) - .then((owner) => { - if (owner.toLowerCase() !== accountAddress.toLowerCase()) { - throw new Error(`you are not the owner of "${name}"`); - } - - const { drop } = contract.instance; - - const options = { - from: accountAddress - }; - - const values = [ - sha3.text(name) - ]; - - return postTx(api, drop, options, values); - }) - .then((txhash) => { - dispatch(dropSuccess(name)); - }) - .catch((err) => { - if (err.type !== 'REQUEST_REJECTED') { - console.error(`error dropping ${name}`, err); - return dispatch(dropFail(name, err)); - } - - dispatch(dropFail(name)); - }); -}; diff --git a/js-old/src/dapps/registry/Names/index.js b/js-old/src/dapps/registry/Names/index.js deleted file mode 100644 index dd9471827..000000000 --- a/js-old/src/dapps/registry/Names/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './names.js'; diff --git a/js-old/src/dapps/registry/Names/names.css b/js-old/src/dapps/registry/Names/names.css deleted file mode 100644 index cbbb33e60..000000000 --- a/js-old/src/dapps/registry/Names/names.css +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.names { - margin: 1em; -} - -.box { - display: flex; - align-items: baseline; -} - -.spacing { - margin-left: 1em; -} - -.noSpacing { - margin-top: 0; -} - -.link { - color: #00BCD4; - text-decoration: none; - - &:hover { - text-decoration: underline; - } -} - -.error { - color: red; -} diff --git a/js-old/src/dapps/registry/Names/names.js b/js-old/src/dapps/registry/Names/names.js deleted file mode 100644 index b6e629d39..000000000 --- a/js-old/src/dapps/registry/Names/names.js +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { Card, CardHeader, CardText } from 'material-ui/Card'; -import TextField from 'material-ui/TextField'; -import DropDownMenu from 'material-ui/DropDownMenu'; -import MenuItem from 'material-ui/MenuItem'; -import RaisedButton from 'material-ui/RaisedButton'; -import CheckIcon from 'material-ui/svg-icons/navigation/check'; - -import { nullableProptype } from '~/util/proptypes'; -import { fromWei } from '../parity.js'; - -import { clearError, reserve, drop } from './actions'; -import styles from './names.css'; - -const useSignerText = (

Use the Signer to authenticate the following changes.

); - -const renderNames = (names) => { - const values = Object.values(names); - - return values - .map((name, index) => ( - - { name } - { - index < values.length - 1 - ? (, ) - : null - } - - )); -}; - -const renderQueue = (queue) => { - if (queue.length === 0) { - return null; - } - - const grouped = queue.reduce((grouped, change) => { - const last = grouped[grouped.length - 1]; - - if (last && last.action === change.action) { - last.names.push(change.name); - } else { - grouped.push({ action: change.action, names: [change.name] }); - } - return grouped; - }, []); - - return ( -
    - { grouped.map(({ action, names }) => ( -
  • - { renderNames(names) } - { ' will be ' } - { action === 'reserve' ? 'reserved' : 'dropped' } -
  • - )) } -
- ); -}; - -class Names extends Component { - static propTypes = { - error: nullableProptype(PropTypes.object.isRequired), - fee: PropTypes.object.isRequired, - pending: PropTypes.bool.isRequired, - queue: PropTypes.array.isRequired, - - clearError: PropTypes.func.isRequired, - reserve: PropTypes.func.isRequired, - drop: PropTypes.func.isRequired - }; - - state = { - action: 'reserve', - name: '' - }; - - render () { - const { action, name } = this.state; - const { fee, pending, queue } = this.props; - - return ( - - - - { (action === 'reserve' - ? (

- The fee to reserve a name is { fromWei(fee).toFixed(3) }ETH. -

) - : (

To drop a name, you have to be the owner.

) - ) - } - { this.renderError() } -
- - - - - - } - onTouchTap={ this.onSubmitClick } - /> -
- { queue.length > 0 - ? (
{ useSignerText }{ renderQueue(queue) }
) - : null - } -
-
- ); - } - - renderError () { - const { error } = this.props; - - if (!error) { - return null; - } - - return ( -
- { error.message } -
- ); - } - - onNameChange = (e) => { - this.clearError(); - this.setState({ name: e.target.value }); - }; - - onActionChange = (e, i, action) => { - this.clearError(); - this.setState({ action }); - }; - - onSubmitClick = () => { - const { action, name } = this.state; - - if (action === 'reserve') { - return this.props.reserve(name); - } - - if (action === 'drop') { - return this.props.drop(name); - } - }; - - clearError = () => { - if (this.props.error) { - this.props.clearError(); - } - }; -} - -const mapStateToProps = (state) => ({ ...state.names, fee: state.fee }); -const mapDispatchToProps = (dispatch) => bindActionCreators({ clearError, reserve, drop }, dispatch); - -export default connect(mapStateToProps, mapDispatchToProps)(Names); diff --git a/js-old/src/dapps/registry/Names/reducers.js b/js-old/src/dapps/registry/Names/reducers.js deleted file mode 100644 index 63a18e79d..000000000 --- a/js-old/src/dapps/registry/Names/reducers.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isAction, isStage, addToQueue, removeFromQueue } from '../util/actions'; - -const initialState = { - error: null, - pending: false, - queue: [] -}; - -export default (state = initialState, action) => { - switch (action.type) { - case 'clearError': - return { - ...state, - error: null - }; - } - - if (isAction('names', 'reserve', action)) { - if (isStage('start', action)) { - return { - ...state, - error: null, - pending: true, - queue: addToQueue(state.queue, 'reserve', action.name) - }; - } - - if (isStage('success', action) || isStage('fail', action)) { - return { - ...state, - error: action.error || null, - pending: false, - queue: removeFromQueue(state.queue, 'reserve', action.name) - }; - } - } - - if (isAction('names', 'drop', action)) { - if (isStage('start', action)) { - return { - ...state, - error: null, - pending: true, - queue: addToQueue(state.queue, 'drop', action.name) - }; - } - - if (isStage('success', action) || isStage('fail', action)) { - return { - ...state, - error: action.error || null, - pending: false, - queue: removeFromQueue(state.queue, 'drop', action.name) - }; - } - } - - return state; -}; diff --git a/js-old/src/dapps/registry/Records/actions.js b/js-old/src/dapps/registry/Records/actions.js deleted file mode 100644 index 4b7ef51d1..000000000 --- a/js-old/src/dapps/registry/Records/actions.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { sha3, api } from '../parity.js'; -import postTx from '../util/post-tx'; -import { getOwner } from '../util/registry'; - -export const clearError = () => ({ - type: 'clearError' -}); - -export const start = (name, key, value) => ({ type: 'records update start', name, key, value }); - -export const success = () => ({ type: 'records update success' }); - -export const fail = (error) => ({ type: 'records update fail', error }); - -export const update = (name, key, value) => (dispatch, getState) => { - const state = getState(); - const accountAddress = state.accounts.selected; - const contract = state.contract; - - if (!contract || !accountAddress) { - return; - } - - name = name.toLowerCase(); - dispatch(start(name, key, value)); - - return getOwner(contract, name) - .then((owner) => { - if (owner.toLowerCase() !== accountAddress.toLowerCase()) { - throw new Error(`you are not the owner of "${name}"`); - } - - const method = key === 'A' - ? contract.instance.setAddress - : contract.instance.setData || contract.instance.set; - - const options = { - from: accountAddress - }; - - const values = [ - sha3.text(name), - key, - value - ]; - - return postTx(api, method, options, values); - }) - .then((txHash) => { - dispatch(success()); - }).catch((err) => { - if (err.type !== 'REQUEST_REJECTED') { - console.error(`error updating ${name}`, err); - return dispatch(fail(err)); - } - - dispatch(fail()); - }); -}; diff --git a/js-old/src/dapps/registry/Records/index.js b/js-old/src/dapps/registry/Records/index.js deleted file mode 100644 index e2528968e..000000000 --- a/js-old/src/dapps/registry/Records/index.js +++ /dev/null @@ -1 +0,0 @@ -export default from './records.js'; diff --git a/js-old/src/dapps/registry/Records/records.css b/js-old/src/dapps/registry/Records/records.css deleted file mode 100644 index a94f222c7..000000000 --- a/js-old/src/dapps/registry/Records/records.css +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.records { - margin: 1em; -} - -.noSpacing { - margin-top: 0; -} - -.box { - display: flex; - align-items: baseline; -} - -.spacing { - margin-left: 1em; -} - -.button { - flex-grow: 0; - flex-shrink: 0; -} - -.error { - color: red; -} diff --git a/js-old/src/dapps/registry/Records/records.js b/js-old/src/dapps/registry/Records/records.js deleted file mode 100644 index e1deda6cd..000000000 --- a/js-old/src/dapps/registry/Records/records.js +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { Card, CardHeader, CardText } from 'material-ui/Card'; -import TextField from 'material-ui/TextField'; -import DropDownMenu from 'material-ui/DropDownMenu'; -import MenuItem from 'material-ui/MenuItem'; -import RaisedButton from 'material-ui/RaisedButton'; -import SaveIcon from 'material-ui/svg-icons/content/save'; - -import { nullableProptype } from '~/util/proptypes'; -import { clearError, update } from './actions'; -import styles from './records.css'; - -class Records extends Component { - static propTypes = { - error: nullableProptype(PropTypes.object.isRequired), - pending: PropTypes.bool.isRequired, - name: PropTypes.string.isRequired, - type: PropTypes.string.isRequired, - value: PropTypes.string.isRequired, - - clearError: PropTypes.func.isRequired, - update: PropTypes.func.isRequired - } - - state = { name: '', type: 'A', value: '' }; - - render () { - const { pending } = this.props; - const name = this.state.name || this.props.name; - const type = this.state.type || this.props.type; - const value = this.state.value || this.props.value; - - return ( - - - -

- You can only modify entries of names that you previously registered. -

- { this.renderError() } -
- - - - - - - -
- } - onTouchTap={ this.onSaveClick } - /> -
-
-
-
- ); - } - - renderError () { - const { error } = this.props; - - if (!error) { - return null; - } - - return ( -
- { error.message } -
- ); - } - - onNameChange = (e) => { - this.clearError(); - this.setState({ name: e.target.value }); - }; - - onTypeChange = (e, i, type) => { - this.setState({ type }); - }; - - onValueChange = (e) => { - this.setState({ value: e.target.value }); - }; - - onSaveClick = () => { - const { name, type, value } = this.state; - - this.props.update(name, type, value); - }; - - clearError = () => { - if (this.props.error) { - this.props.clearError(); - } - }; -} - -const mapStateToProps = (state) => state.records; -const mapDispatchToProps = (dispatch) => bindActionCreators({ clearError, update }, dispatch); - -export default connect(mapStateToProps, mapDispatchToProps)(Records); diff --git a/js-old/src/dapps/registry/Records/reducers.js b/js-old/src/dapps/registry/Records/reducers.js deleted file mode 100644 index 08042d63c..000000000 --- a/js-old/src/dapps/registry/Records/reducers.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isAction, isStage } from '../util/actions'; - -const initialState = { - error: null, - pending: false, - name: '', type: '', value: '' -}; - -export default (state = initialState, action) => { - switch (action.type) { - case 'clearError': - return { - ...state, - error: null - }; - } - - if (!isAction('records', 'update', action)) { - return state; - } - - if (isStage('start', action)) { - return { - ...state, pending: true, - error: null, - name: action.name, type: action.key, value: action.value - }; - } - - if (isStage('success', action) || isStage('fail', action)) { - return { - ...state, pending: false, - error: action.error || null, - name: initialState.name, type: initialState.type, value: initialState.value - }; - } - - return state; -}; diff --git a/js-old/src/dapps/registry/Reverse/actions.js b/js-old/src/dapps/registry/Reverse/actions.js deleted file mode 100644 index f78ff3434..000000000 --- a/js-old/src/dapps/registry/Reverse/actions.js +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { api } from '../parity.js'; -import postTx from '../util/post-tx'; -import { getOwner } from '../util/registry'; - -export const clearError = () => ({ - type: 'clearError' -}); - -export const start = (action, name, address) => ({ type: `reverse ${action} start`, name, address }); - -export const success = (action) => ({ type: `reverse ${action} success` }); - -export const fail = (action, error) => ({ type: `reverse ${action} fail`, error }); - -export const propose = (name, address) => (dispatch, getState) => { - const state = getState(); - const accountAddress = state.accounts.selected; - const contract = state.contract; - - if (!contract || !accountAddress) { - return; - } - - name = name.toLowerCase(); - dispatch(start('propose', name, address)); - - return getOwner(contract, name) - .then((owner) => { - if (owner.toLowerCase() !== accountAddress.toLowerCase()) { - throw new Error(`you are not the owner of "${name}"`); - } - - const { proposeReverse } = contract.instance; - - const options = { - from: accountAddress - }; - - const values = [ - name, - address - ]; - - return postTx(api, proposeReverse, options, values); - }) - .then((txHash) => { - dispatch(success('propose')); - }) - .catch((err) => { - if (err.type !== 'REQUEST_REJECTED') { - console.error(`error proposing ${name}`, err); - return dispatch(fail('propose', err)); - } - - dispatch(fail('propose')); - }); -}; - -export const confirm = (name) => (dispatch, getState) => { - const state = getState(); - const accountAddress = state.accounts.selected; - const contract = state.contract; - - if (!contract || !accountAddress) { - return; - } - - name = name.toLowerCase(); - dispatch(start('confirm', name)); - - return getOwner(contract, name) - .then((owner) => { - if (owner.toLowerCase() !== accountAddress.toLowerCase()) { - throw new Error(`you are not the owner of "${name}"`); - } - - const { confirmReverse } = contract.instance; - - const options = { - from: accountAddress - }; - - const values = [ - name - ]; - - return postTx(api, confirmReverse, options, values); - }) - .then((txHash) => { - dispatch(success('confirm')); - }) - .catch((err) => { - if (err.type !== 'REQUEST_REJECTED') { - console.error(`error confirming ${name}`, err); - return dispatch(fail('confirm', err)); - } - - dispatch(fail('confirm')); - }); -}; - diff --git a/js-old/src/dapps/registry/Reverse/index.js b/js-old/src/dapps/registry/Reverse/index.js deleted file mode 100644 index ecaf9c3db..000000000 --- a/js-old/src/dapps/registry/Reverse/index.js +++ /dev/null @@ -1 +0,0 @@ -export default from './reverse'; diff --git a/js-old/src/dapps/registry/Reverse/reducers.js b/js-old/src/dapps/registry/Reverse/reducers.js deleted file mode 100644 index 51b44ab6f..000000000 --- a/js-old/src/dapps/registry/Reverse/reducers.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isAction, isStage } from '../util/actions'; - -const initialState = { - error: null, - pending: false, - queue: [] -}; - -export default (state = initialState, action) => { - switch (action.type) { - case 'clearError': - return { - ...state, - error: null - }; - } - - if (isAction('reverse', 'propose', action)) { - if (isStage('start', action)) { - return { - ...state, pending: true, - error: null, - queue: state.queue.concat({ - action: 'propose', - name: action.name, - address: action.address - }) - }; - } - - if (isStage('success', action) || isStage('fail', action)) { - return { - ...state, pending: false, - error: action.error || null, - queue: state.queue.filter((e) => - e.action === 'propose' && - e.name === action.name && - e.address === action.address - ) - }; - } - } - - if (isAction('reverse', 'confirm', action)) { - if (isStage('start', action)) { - return { - ...state, pending: true, - error: null, - queue: state.queue.concat({ - action: 'confirm', - name: action.name - }) - }; - } - - if (isStage('success', action) || isStage('fail', action)) { - return { - ...state, pending: false, - error: action.error || null, - queue: state.queue.filter((e) => - e.action === 'confirm' && - e.name === action.name - ) - }; - } - } - - return state; -}; diff --git a/js-old/src/dapps/registry/Reverse/reverse.css b/js-old/src/dapps/registry/Reverse/reverse.css deleted file mode 100644 index fc2089d5e..000000000 --- a/js-old/src/dapps/registry/Reverse/reverse.css +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.reverse { - margin: 1em; -} - -.noSpacing { - margin-top: 0; -} - -.box { - display: flex; - align-items: baseline; -} - -.spacing { - margin-right: 1em; -} - -.button { - flex-grow: 0; - flex-shrink: 0; -} - -.error { - color: red; -} diff --git a/js-old/src/dapps/registry/Reverse/reverse.js b/js-old/src/dapps/registry/Reverse/reverse.js deleted file mode 100644 index a17f9a22c..000000000 --- a/js-old/src/dapps/registry/Reverse/reverse.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { - Card, CardHeader, CardText, TextField, DropDownMenu, MenuItem, RaisedButton -} from 'material-ui'; - -import { nullableProptype } from '~/util/proptypes'; -import { AddIcon, CheckIcon } from '~/ui/Icons'; -import { clearError, confirm, propose } from './actions'; -import styles from './reverse.css'; - -class Reverse extends Component { - static propTypes = { - error: nullableProptype(PropTypes.object.isRequired), - pending: PropTypes.bool.isRequired, - queue: PropTypes.array.isRequired, - - clearError: PropTypes.func.isRequired, - confirm: PropTypes.func.isRequired, - propose: PropTypes.func.isRequired - } - - state = { - action: 'propose', - name: '', - address: '' - }; - - render () { - const { pending } = this.props; - const { action, address, name } = this.state; - - const explanation = action === 'propose' - ? ( -

- To propose a reverse entry for foo, you have to be the owner of it. -

- ) : ( -

- To confirm a proposal, send the transaction from the account that the name has been proposed for. -

- ); - - let addressInput = null; - - if (action === 'propose') { - addressInput = ( - - ); - } - - return ( - - - -

- - To make others to find the name of an address using the registry, you can propose & confirm reverse entries. - -

- { explanation } - { this.renderError() } -
- - - - - { addressInput } - -
- : } - onTouchTap={ this.onSubmitClick } - /> -
-
-
-
- ); - } - - renderError () { - const { error } = this.props; - - if (!error) { - return null; - } - - return ( -
- { error.message } -
- ); - } - - onNameChange = (e) => { - this.setState({ name: e.target.value }); - }; - - onAddressChange = (e) => { - this.setState({ address: e.target.value }); - }; - - onActionChange = (e, i, action) => { - this.setState({ action }); - }; - - onSubmitClick = () => { - const { action, name, address } = this.state; - - if (action === 'propose') { - this.props.propose(name, address); - } else if (action === 'confirm') { - this.props.confirm(name); - } - }; - - clearError = () => { - if (this.props.error) { - this.props.clearError(); - } - }; -} - -const mapStateToProps = (state) => state.reverse; -const mapDispatchToProps = (dispatch) => bindActionCreators({ clearError, confirm, propose }, dispatch); - -export default connect(mapStateToProps, mapDispatchToProps)(Reverse); diff --git a/js-old/src/dapps/registry/actions.js b/js-old/src/dapps/registry/actions.js deleted file mode 100644 index 8c7774397..000000000 --- a/js-old/src/dapps/registry/actions.js +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Contracts from '~/contracts'; - -import { api } from './parity.js'; -import * as addresses from './addresses/actions.js'; -import * as accounts from './Accounts/actions.js'; -import * as lookup from './Lookup/actions.js'; -import * as events from './Events/actions.js'; -import * as names from './Names/actions.js'; -import * as records from './Records/actions.js'; -import * as reverse from './Reverse/actions.js'; - -export { addresses, accounts, lookup, events, names, records, reverse }; - -export const setNetVersion = (netVersion) => ({ type: 'set netVersion', netVersion }); - -export const fetchIsTestnet = () => (dispatch) => - api.net.version() - .then((netVersion) => { - dispatch(setNetVersion(netVersion)); - }) - .catch((err) => { - console.error('could not check if testnet'); - if (err) { - console.error(err.stack); - } - }); - -export const setContract = (contract) => ({ type: 'set contract', contract }); - -export const fetchContract = () => (dispatch) => { - return Contracts.create(api).registry - .fetchContract() - .then((contract) => { - dispatch(setContract(contract)); - dispatch(fetchFee()); - dispatch(fetchOwner()); - }) - .catch((error) => { - console.error('could not fetch contract', error); - }); -}; - -export const setFee = (fee) => ({ type: 'set fee', fee }); - -const fetchFee = () => (dispatch, getState) => { - const { contract } = getState(); - - if (!contract) { - return; - } - - contract.instance.fee.call() - .then((fee) => dispatch(setFee(fee))) - .catch((err) => { - console.error('could not fetch fee'); - if (err) { - console.error(err.stack); - } - }); -}; - -export const setOwner = (owner) => ({ type: 'set owner', owner }); - -export const fetchOwner = () => (dispatch, getState) => { - const { contract } = getState(); - - if (!contract) { - return; - } - - contract.instance.owner.call() - .then((owner) => dispatch(setOwner(owner))) - .catch((err) => { - console.error('could not fetch owner'); - if (err) { - console.error(err.stack); - } - }); -}; diff --git a/js-old/src/dapps/registry/addresses/accounts-reducer.js b/js-old/src/dapps/registry/addresses/accounts-reducer.js deleted file mode 100644 index 2ff11ae27..000000000 --- a/js-old/src/dapps/registry/addresses/accounts-reducer.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const initialState = { - all: {}, - selected: null -}; - -export default (state = initialState, action) => { - if (action.type === 'addresses set') { - const accounts = action.addresses - .filter((address) => address.isAccount) - .reduce((accounts, account) => { - accounts[account.address] = account; - return accounts; - }, {}); - - return { ...state, all: accounts }; - } - - if (action.type === 'accounts select') { - return { ...state, selected: action.address }; - } - - return state; -}; diff --git a/js-old/src/dapps/registry/addresses/actions.js b/js-old/src/dapps/registry/addresses/actions.js deleted file mode 100644 index 0c0817f97..000000000 --- a/js-old/src/dapps/registry/addresses/actions.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { api } from '../parity'; - -export const set = (addresses) => ({ type: 'addresses set', addresses }); - -export const fetch = () => (dispatch) => { - return api.parity - .accountsInfo() - .then((accountsInfo) => { - const addresses = Object - .keys(accountsInfo) - .map((address) => ({ - ...accountsInfo[address], - address, - isAccount: true - })); - - dispatch(set(addresses)); - }) - .catch((error) => { - console.error('could not fetch addresses', error); - }); -}; diff --git a/js-old/src/dapps/registry/addresses/contacts-reducer.js b/js-old/src/dapps/registry/addresses/contacts-reducer.js deleted file mode 100644 index 80880a923..000000000 --- a/js-old/src/dapps/registry/addresses/contacts-reducer.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const initialState = {}; - -export default (state = initialState, action) => { - if (action.type === 'addresses set') { - const contacts = action.addresses - .filter((address) => !address.isAccount) - .reduce((contacts, contact) => { - contacts[contact.address] = contact; - return contacts; - }, {}); - - return contacts; - } - - return state; -}; diff --git a/js-old/src/dapps/registry/parity.js b/js-old/src/dapps/registry/parity.js deleted file mode 100644 index a9139c992..000000000 --- a/js-old/src/dapps/registry/parity.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const api = window.parity.api; -const { bytesToHex, sha3, toWei, fromWei } = window.parity.api.util; - -export { - api, - bytesToHex, sha3, toWei, fromWei -}; diff --git a/js-old/src/dapps/registry/reducers.js b/js-old/src/dapps/registry/reducers.js deleted file mode 100644 index 6d0816273..000000000 --- a/js-old/src/dapps/registry/reducers.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import accountsReducer from './addresses/accounts-reducer.js'; -import contactsReducer from './addresses/contacts-reducer.js'; -import lookupReducer from './Lookup/reducers.js'; -import eventsReducer from './Events/reducers.js'; -import namesReducer from './Names/reducers.js'; -import recordsReducer from './Records/reducers.js'; -import reverseReducer from './Reverse/reducers.js'; - -const netVersionReducer = (state = null, action) => - action.type === 'set netVersion' ? action.netVersion : state; - -const contractReducer = (state = null, action) => - action.type === 'set contract' ? action.contract : state; - -const feeReducer = (state = null, action) => - action.type === 'set fee' ? action.fee : state; - -const ownerReducer = (state = null, action) => - action.type === 'set owner' ? action.owner : state; - -const initialState = { - netVersion: netVersionReducer(undefined, { type: '' }), - accounts: accountsReducer(undefined, { type: '' }), - contacts: contactsReducer(undefined, { type: '' }), - contract: contractReducer(undefined, { type: '' }), - fee: feeReducer(undefined, { type: '' }), - owner: ownerReducer(undefined, { type: '' }), - lookup: lookupReducer(undefined, { type: '' }), - events: eventsReducer(undefined, { type: '' }), - names: namesReducer(undefined, { type: '' }), - records: recordsReducer(undefined, { type: '' }), - reverse: reverseReducer(undefined, { type: '' }) -}; - -export default (state = initialState, action) => ({ - netVersion: netVersionReducer(state.netVersion, action), - accounts: accountsReducer(state.accounts, action), - contacts: contactsReducer(state.contacts, action), - contract: contractReducer(state.contract, action), - fee: feeReducer(state.fee, action), - owner: ownerReducer(state.owner, action), - lookup: lookupReducer(state.lookup, action), - events: eventsReducer(state.events, action), - names: namesReducer(state.names, action), - records: recordsReducer(state.records, action), - reverse: reverseReducer(state.reverse, action) -}); diff --git a/js-old/src/dapps/registry/store.js b/js-old/src/dapps/registry/store.js deleted file mode 100644 index ced7a5bae..000000000 --- a/js-old/src/dapps/registry/store.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createStore, applyMiddleware } from 'redux'; -import thunk from 'redux-thunk'; - -import reducer from './reducers'; - -export default createStore(reducer, applyMiddleware(thunk)); diff --git a/js-old/src/dapps/registry/ui/address.css b/js-old/src/dapps/registry/ui/address.css deleted file mode 100644 index 89a140348..000000000 --- a/js-old/src/dapps/registry/ui/address.css +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.container { - display: inline-block; - vertical-align: middle; - line-height: 24px; -} - -.align { - display: inline-block; - vertical-align: top; - line-height: 24px; -} - -.link { - text-decoration: none; - color: inherit; - - &:hover { - text-decoration: underline; - } - - & abbr { - text-decoration: inherit; - } -} diff --git a/js-old/src/dapps/registry/ui/address.js b/js-old/src/dapps/registry/ui/address.js deleted file mode 100644 index a01811fc4..000000000 --- a/js-old/src/dapps/registry/ui/address.js +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; - -import Hash from './hash'; -import etherscanUrl from '../util/etherscan-url'; -import IdentityIcon from '../IdentityIcon'; -import { nullableProptype } from '~/util/proptypes'; - -import styles from './address.css'; - -class Address extends Component { - static propTypes = { - address: PropTypes.string.isRequired, - account: nullableProptype(PropTypes.object.isRequired), - netVersion: PropTypes.string.isRequired, - key: PropTypes.string, - shortenHash: PropTypes.bool - }; - - static defaultProps = { - key: 'address', - shortenHash: true - }; - - render () { - const { address, key } = this.props; - - return ( -
- - { this.renderCaption() } -
- ); - } - - renderCaption () { - const { address, account, netVersion, shortenHash } = this.props; - - if (account) { - const { name } = account; - - return ( - - - { name || address } - - - ); - } - - return ( - - { shortenHash ? ( - - ) : address } - - ); - } -} - -function mapStateToProps (initState, initProps) { - const { accounts, contacts } = initState; - - const allAccounts = Object.assign({}, accounts.all, contacts); - - // Add lower case addresses to map - Object - .keys(allAccounts) - .forEach((address) => { - allAccounts[address.toLowerCase()] = allAccounts[address]; - }); - - return (state, props) => { - const { netVersion } = state; - const { address = '' } = props; - - const account = allAccounts[address] || null; - - return { - account, - netVersion - }; - }; -} - -export default connect( - mapStateToProps -)(Address); diff --git a/js-old/src/dapps/registry/ui/hash.css b/js-old/src/dapps/registry/ui/hash.css deleted file mode 100644 index d44e2d286..000000000 --- a/js-old/src/dapps/registry/ui/hash.css +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.link { - text-decoration: none; - color: inherit; - - &:hover { - text-decoration: underline; - } -} diff --git a/js-old/src/dapps/registry/ui/hash.js b/js-old/src/dapps/registry/ui/hash.js deleted file mode 100644 index fe404f5b2..000000000 --- a/js-old/src/dapps/registry/ui/hash.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; -import { connect } from 'react-redux'; - -import etherscanUrl from '../util/etherscan-url'; - -import styles from './hash.css'; - -const leading0x = /^0x/; - -class Hash extends Component { - static propTypes = { - hash: PropTypes.string.isRequired, - netVersion: PropTypes.string.isRequired, - linked: PropTypes.bool - } - - static defaultProps = { - linked: false - } - - render () { - const { hash, netVersion, linked } = this.props; - - let shortened = hash.toLowerCase().replace(leading0x, ''); - - shortened = shortened.length > (6 + 6) - ? shortened.substr(0, 6) + '...' + shortened.slice(-6) - : shortened; - - if (linked) { - return ( - - { shortened } - - ); - } - - return ({ shortened }); - } -} - -export default connect( - (state) => ({ // mapStateToProps - netVersion: state.netVersion - }), - null // mapDispatchToProps -)(Hash); diff --git a/js-old/src/dapps/registry/ui/image.js b/js-old/src/dapps/registry/ui/image.js deleted file mode 100644 index 88cae4e30..000000000 --- a/js-old/src/dapps/registry/ui/image.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React from 'react'; - -const styles = { - padding: '.5em', - border: '1px solid #777' -}; - -export default (address) => { - if (!address || /^(0x)?0*$/.test(address)) { - return ( - - No image - - ); - } - - return ( - { - ); -}; diff --git a/js-old/src/dapps/registry/util/actions.js b/js-old/src/dapps/registry/util/actions.js deleted file mode 100644 index c152848bc..000000000 --- a/js-old/src/dapps/registry/util/actions.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export const isAction = (ns, type, action) => { - return action.type.slice(0, ns.length + 1 + type.length) === `${ns} ${type}`; -}; - -export const isStage = (stage, action) => { - return (new RegExp(`${stage}$`)).test(action.type); -}; - -export const addToQueue = (queue, action, name) => { - return queue.concat({ action, name }); -}; - -export const removeFromQueue = (queue, action, name) => { - return queue.filter((e) => !(e.action === action && e.name === name)); -}; diff --git a/js-old/src/dapps/registry/util/etherscan-url.js b/js-old/src/dapps/registry/util/etherscan-url.js deleted file mode 100644 index 68e765c17..000000000 --- a/js-old/src/dapps/registry/util/etherscan-url.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { url as externalUrl } from '~/3rdparty/etherscan/links'; - -const leading0x = /^0x/; - -const etherscanUrl = (hash, isTestnet, netVersion) => { - hash = hash.toLowerCase().replace(leading0x, ''); - const type = hash.length === 40 ? 'address' : 'tx'; - - return `${externalUrl(isTestnet, netVersion)}/${type}/0x${hash}`; -}; - -export default etherscanUrl; diff --git a/js-old/src/dapps/registry/util/post-tx.js b/js-old/src/dapps/registry/util/post-tx.js deleted file mode 100644 index 46fdb1403..000000000 --- a/js-old/src/dapps/registry/util/post-tx.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const postTx = (api, method, opt = {}, values = []) => { - opt = Object.assign({}, opt); - - return method.estimateGas(opt, values) - .then((gas) => { - opt.gas = gas.mul(1.2).toFixed(0); - return method.postTransaction(opt, values); - }) - .then((reqId) => { - return api.pollMethod('parity_checkRequest', reqId); - }); -}; - -export default postTx; diff --git a/js-old/src/dapps/registry/util/registry.js b/js-old/src/dapps/registry/util/registry.js deleted file mode 100644 index b818966dc..000000000 --- a/js-old/src/dapps/registry/util/registry.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export const getOwner = (contract, name) => { - const { address, api } = contract; - - const key = api.util.sha3.text(name) + '0000000000000000000000000000000000000000000000000000000000000001'; - const position = api.util.sha3(key, { encoding: 'hex' }); - - return api - .eth - .getStorageAt(address, position) - .then((result) => { - if (/^(0x)?0*$/.test(result)) { - return ''; - } - - return '0x' + result.slice(-40); - }); -}; - -export const isOwned = (contract, name) => { - return getOwner(contract, name).then((owner) => !!owner); -}; diff --git a/js-old/src/dapps/signaturereg.js b/js-old/src/dapps/signaturereg.js deleted file mode 100644 index 61b67aab0..000000000 --- a/js-old/src/dapps/signaturereg.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import ReactDOM from 'react-dom'; -import React from 'react'; -import { AppContainer } from 'react-hot-loader'; - -import injectTapEventPlugin from 'react-tap-event-plugin'; -injectTapEventPlugin(); - -import Application from './signaturereg/Application'; - -import '../../assets/fonts/Roboto/font.css'; -import '../../assets/fonts/RobotoMono/font.css'; -import './style.css'; - -ReactDOM.render( - - - , - document.querySelector('#container') -); - -if (module.hot) { - module.hot.accept('./signaturereg/Application/index.js', () => { - require('./signaturereg/Application/index.js'); - - ReactDOM.render( - - - , - document.querySelector('#container') - ); - }); -} diff --git a/js-old/src/dapps/signaturereg/Application/application.css b/js-old/src/dapps/signaturereg/Application/application.css deleted file mode 100644 index f09b5986d..000000000 --- a/js-old/src/dapps/signaturereg/Application/application.css +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.container { - background: black; - color: #eee; - font-family: 'Roboto'; - vertical-align: middle; -} - -.actions { - position: absolute; - top: 1.5em; - right: 1.5em; -} diff --git a/js-old/src/dapps/signaturereg/Application/application.js b/js-old/src/dapps/signaturereg/Application/application.js deleted file mode 100644 index 21e36994e..000000000 --- a/js-old/src/dapps/signaturereg/Application/application.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import React, { Component } from 'react'; - -import { attachInterface, attachBlockNumber } from '../services'; -import Button from '../Button'; -import Events from '../Events'; -import Header from '../Header'; -import Import from '../Import'; -import Loading from '../Loading'; - -import styles from './application.css'; - -export default class Application extends Component { - state = { - accounts: {}, - address: null, - accountsInfo: {}, - blockNumber: new BigNumber(0), - contract: null, - instance: null, - loading: true, - totalSignatures: new BigNumber(0), - showImport: false - } - - componentDidMount () { - return attachInterface() - .then((state) => { - this.setState(Object.assign({}, state, { loading: false })); - - return attachBlockNumber(state.instance, (state) => { - this.setState(state); - }); - }) - .catch((error) => { - console.error('componentDidMount', error); - }); - } - - render () { - const { loading } = this.state; - - if (loading) { - return ( - - ); - } - - return ( -
- { this.renderHeader() } - { this.renderImport() } - { this.renderEvents() } -
- ); - } - - renderHeader () { - const { blockNumber, totalSignatures } = this.state; - - return ( -
- ); - } - - renderImport () { - const { instance, showImport } = this.state; - - if (showImport) { - return ( - - ); - } - - return ( -
- -
- ); - } - - renderEvents () { - const { accountsInfo, contract } = this.state; - - return ( - - ); - } - - toggleImport = () => { - this.setState({ - showImport: !this.state.showImport - }); - } -} diff --git a/js-old/src/dapps/signaturereg/Application/index.js b/js-old/src/dapps/signaturereg/Application/index.js deleted file mode 100644 index 3d8d1ca3b..000000000 --- a/js-old/src/dapps/signaturereg/Application/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './application'; diff --git a/js-old/src/dapps/signaturereg/Button/button.css b/js-old/src/dapps/signaturereg/Button/button.css deleted file mode 100644 index b4891eaa0..000000000 --- a/js-old/src/dapps/signaturereg/Button/button.css +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.button { - background: #f80; - color: white; - border-radius: 5px; - font-size: 1em; - line-height: 24px; - height: 24px; - padding: 0.75em 1.5em; - cursor: pointer; - display: inline-block; -} - -.button.disabled { - opacity: 0.25; - cursor: default; -} - -.button.inverse { - color: #f80; - background: white; -} - -.button * { - display: inline-block; - vertical-align: top; -} diff --git a/js-old/src/dapps/signaturereg/Button/button.js b/js-old/src/dapps/signaturereg/Button/button.js deleted file mode 100644 index 802f6f8b7..000000000 --- a/js-old/src/dapps/signaturereg/Button/button.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; - -import styles from './button.css'; - -export default class Button extends Component { - static propTypes = { - children: PropTypes.node.isRequired, - className: PropTypes.string, - disabled: PropTypes.bool, - invert: PropTypes.bool, - onClick: PropTypes.func.isRequired - } - - render () { - const { children, className, disabled, invert } = this.props; - const classes = `${styles.button} ${disabled ? styles.disabled : ''} ${invert ? styles.inverse : ''} ${className}`; - - return ( -
- { children } -
- ); - } - - onClick = (event) => { - const { disabled, onClick } = this.props; - - if (disabled) { - return; - } - - onClick(event); - } -} diff --git a/js-old/src/dapps/signaturereg/Button/index.js b/js-old/src/dapps/signaturereg/Button/index.js deleted file mode 100644 index 0c2be07ee..000000000 --- a/js-old/src/dapps/signaturereg/Button/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './button'; diff --git a/js-old/src/dapps/signaturereg/Events/events.css b/js-old/src/dapps/signaturereg/Events/events.css deleted file mode 100644 index 543fdb386..000000000 --- a/js-old/src/dapps/signaturereg/Events/events.css +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.events { - padding: 3em; - text-align: center; -} - -.header { - font-size: 1.3em; - line-height: 1.3em; - vertical-align: middle; - text-align: center; - padding-bottom: 24px; - color: #f80; -} - -.events table { - border: none; - margin: 0 auto; - border-collapse: collapse; -} - -.events td { - padding: 0 0.5em 0.5em 0.5em; - white-space: nowrap; - text-align: left; - line-height: 24px; -} - -.events td * { - display: inline-block; - vertical-align: top; -} - -.pending { - opacity: 0.5; -} - -.mined { -} - -td.methodName { - color: #f80; -} - -td.signature { - color: #888; - text-align: right; -} - -td.timestamp { - text-align: right; -} - -td.blockNumber { - text-align: center; -} - -td.owner { - text-overflow: ellipsis; -} diff --git a/js-old/src/dapps/signaturereg/Events/events.js b/js-old/src/dapps/signaturereg/Events/events.js deleted file mode 100644 index 9cc9ca483..000000000 --- a/js-old/src/dapps/signaturereg/Events/events.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; - -import { formatBlockNumber, formatBlockTimestamp, formatSignature } from '../format'; -import { attachEvents } from '../services'; -import IdentityIcon from '../IdentityIcon'; - -import styles from './events.css'; - -export default class Events extends Component { - static propTypes = { - accountsInfo: PropTypes.object.isRequired, - contract: PropTypes.object.isRequired - } - - state = { - events: [] - } - - componentDidMount () { - const { contract } = this.props; - - attachEvents(contract, (state) => { - this.setState(state); - }); - } - - render () { - const { events } = this.state; - - if (!events.length) { - return null; - } - - return ( -
- - - { this.renderEvents() } - -
-
- ); - } - - renderEvents () { - const { accountsInfo } = this.props; - const { events } = this.state; - - return events.map((event) => { - const name = accountsInfo[event.params.creator] - ? accountsInfo[event.params.creator].name - : event.params.creator; - - return ( - - { formatBlockTimestamp(event.block) } - { formatBlockNumber(event.blockNumber) } - - -
{ name }
- - { formatSignature(event.params.signature) } - { event.params.method } - - ); - }); - } -} diff --git a/js-old/src/dapps/signaturereg/Events/index.js b/js-old/src/dapps/signaturereg/Events/index.js deleted file mode 100644 index d2d0080b3..000000000 --- a/js-old/src/dapps/signaturereg/Events/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './events'; diff --git a/js-old/src/dapps/signaturereg/Header/header.css b/js-old/src/dapps/signaturereg/Header/header.css deleted file mode 100644 index 8687ad30a..000000000 --- a/js-old/src/dapps/signaturereg/Header/header.css +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.header { - position: relative; - height: 13.69em; - color: white; - border-bottom: 4px solid white; - overflow: hidden; -} - -.banner { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - font-size: 1.3em; - line-height: 1.3em; - padding: 24px; - background: #f80; -} - -.header img, -.content { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} - -.header img { - opacity: 0.2; - width: 100%; -} - -.content { - text-align: center; - padding: 3em; -} - -.hero { - font-size: 5em; - line-height: 1.2em; - vertical-align: middle; -} - -.byline { - font-size: 1.3em; - line-height: 1.3em; - vertical-align: middle; -} diff --git a/js-old/src/dapps/signaturereg/Header/header.js b/js-old/src/dapps/signaturereg/Header/header.js deleted file mode 100644 index 667e99778..000000000 --- a/js-old/src/dapps/signaturereg/Header/header.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; - -import styles from './header.css'; -import blocks from '../../../../assets/images/dapps/blocks-350.jpg'; - -export default class Header extends Component { - static propTypes = { - blockNumber: PropTypes.object.isRequired, - totalSignatures: PropTypes.object.isRequired - } - - render () { - const { totalSignatures } = this.props; - - return ( -
-
- contract signature registry -
- -
-
- { totalSignatures.toFormat(0) } -
-
- signatures registered -
-
-
- ); - } -} diff --git a/js-old/src/dapps/signaturereg/Header/index.js b/js-old/src/dapps/signaturereg/Header/index.js deleted file mode 100644 index 6394066f7..000000000 --- a/js-old/src/dapps/signaturereg/Header/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './header.js'; diff --git a/js-old/src/dapps/signaturereg/IdentityIcon/identityIcon.css b/js-old/src/dapps/signaturereg/IdentityIcon/identityIcon.css deleted file mode 100644 index 01aba746d..000000000 --- a/js-old/src/dapps/signaturereg/IdentityIcon/identityIcon.css +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.icon { - width: 24px; - height: 24px; - border-radius: 50%; - margin-right: 0.5em; -} diff --git a/js-old/src/dapps/signaturereg/IdentityIcon/identityIcon.js b/js-old/src/dapps/signaturereg/IdentityIcon/identityIcon.js deleted file mode 100644 index c442c4585..000000000 --- a/js-old/src/dapps/signaturereg/IdentityIcon/identityIcon.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; - -import { api } from '../parity'; -import styles from './identityIcon.css'; - -export default class IdentityIcon extends Component { - static propTypes = { - address: PropTypes.string.isRequired - } - - render () { - const { address } = this.props; - - return ( - - ); - } -} diff --git a/js-old/src/dapps/signaturereg/IdentityIcon/index.js b/js-old/src/dapps/signaturereg/IdentityIcon/index.js deleted file mode 100644 index 091913564..000000000 --- a/js-old/src/dapps/signaturereg/IdentityIcon/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './identityIcon'; diff --git a/js-old/src/dapps/signaturereg/Import/import.css b/js-old/src/dapps/signaturereg/Import/import.css deleted file mode 100644 index c86f00d60..000000000 --- a/js-old/src/dapps/signaturereg/Import/import.css +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; -} - -.overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: rgba(55, 55, 55, 0.75); - text-align: center; -} - -.dialog { - margin-top: 1.5em; - border-radius: 5px; - width: 750px; - background: rgba(0, 0, 0, 0.9); - display: inline-block; -} - -.close { - top: 4px; - right: 4px; - position: absolute; - background: transparent; -} - -.header { - font-size: 1.3em; - line-height: 1.3em; - padding: 16px 24px; - background: #f80; - color: white; - position: relative; - margin-bottom: 24px; - border-radius: 5px 5px 0 0; -} - -.body { - padding: 0 24px; -} - -.body div { - text-align: center; -} - -.info { - padding: 0 24px 24px 24px; - line-height: 1.618em; -} - -.info textarea { - background: rgba(80, 80, 80, 0.25); - border-radius: 5px; - resize: none; - padding: 1em; - color: #eee; - font-size: 0.75em; - font-family: 'Roboto Mono'; - width: 100%; - border: none; - box-sizing: border-box; -} - -.info textarea.error { - background: rgba(255, 0, 0, 0.25); -} - -.info .error { - color: rgba(255, 0, 0, 1); - font-size: 0.75em; - line-height: 1.5em; -} - -.buttonrow { - position: relative; - padding: 24px 0; - margin: 0; - text-align: right !important; -} - -.addressSelect { - position: absolute; - top: 24px; - left: 0; -} - -.keys { - position: absolute; - left: 24px; - top: 16px; - padding: 4px 0; -} - -.fnconstant, -.fnexists, -.fnunknown, -.fntodo { - display: inline-block; - margin: 0.25em; - padding: 0.5em 1em; - border-radius: 2px; - color: white; - line-height: 1em; - font-size: 0.8em; -} - -.fnconstant { - color: #888; - background: #333; -} - -.fnexists { - color: #f80; - background: #333; -} - -.fnunknown { - color: #eee; -} - -.fntodo { - background: #f80; -} - -.hide { - opacity: 0; -} diff --git a/js-old/src/dapps/signaturereg/Import/import.js b/js-old/src/dapps/signaturereg/Import/import.js deleted file mode 100644 index c1fcc3997..000000000 --- a/js-old/src/dapps/signaturereg/Import/import.js +++ /dev/null @@ -1,204 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component, PropTypes } from 'react'; - -import { api } from '../parity'; -import { callRegister, postRegister } from '../services'; -import Button from '../Button'; - -import styles from './import.css'; - -export default class Import extends Component { - static propTypes = { - instance: PropTypes.object.isRequired, - visible: PropTypes.bool.isRequired, - onClose: PropTypes.func.isRequired - } - - state = { - abi: null, - abiParsed: null, - abiError: 'Please add a valid ABI definition', - functions: null, - fnstate: {} - } - - render () { - const { visible, onClose } = this.props; - const { abiError } = this.state; - - if (!visible) { - return null; - } - - return ( -
-
-
-
-
abi import
- -
- { abiError ? this.renderCapture() : this.renderRegister() } -
-
-
- ); - } - - renderCapture () { - const { abiError } = this.state; - - return ( -
-
- Provide the ABI (Contract Interface) in the space provided below. Only non-constant functions (names & types) will be imported, while constant functions and existing signatures will be ignored. -
-
-