made with requirebin
Created
September 12, 2016 09:02
-
-
Save ahdinosaur/d7ae4746a35d7d23cefb578bf448c342 to your computer and use it in GitHub Desktop.
requirebin sketch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var pull = require('pull-stream') | |
var paramap = require('pull-paramap') | |
pull( | |
pull.values([1, 2, 3, 4, 5]), | |
paramap(function (amount, cb) { | |
pull( | |
pull.infinite(Math.random), | |
pull.take(amount), | |
pull.collect(cb) | |
) | |
}), | |
pull.filter(arr => arr.length > 2), | |
pull.drain(arr => console.log(arr)) | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
setTimeout(function(){ | |
;require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"pull-paramap":[function(require,module,exports){ | |
module.exports = function (map, width) { | |
var reading = false, abort | |
return function (read) { | |
var i = 0, j = 0, last = 0 | |
var seen = [], started = false, ended = false, _cb, error | |
function drain () { | |
if(_cb) { | |
var cb = _cb | |
if(error) { | |
_cb = null | |
return cb(error) | |
} | |
if(Object.hasOwnProperty.call(seen, j)) { | |
_cb = null | |
var data = seen[j]; delete seen[j]; j++ | |
cb(null, data) | |
if(width) start() | |
} else if(j >= last && ended) { | |
_cb = null | |
cb(true) | |
} | |
} | |
} | |
function start () { | |
started = true | |
if(ended) return drain() | |
if(reading || width && (i - width >= j)) return | |
reading = true | |
read(abort, function (end, data) { | |
reading = false | |
if(end) { | |
last = i; ended = end | |
drain() | |
} else { | |
var k = i++ | |
map(data, function (err, data) { | |
seen[k] = data | |
if(err) error = err | |
drain() | |
}) | |
if(!ended) | |
start() | |
} | |
}) | |
} | |
return function (_abort, cb) { | |
if(_abort) | |
read(ended = abort = _abort, function (err) { | |
if(cb) return cb(err) | |
}) | |
else { | |
_cb = cb | |
if(!started) start() | |
drain() | |
} | |
} | |
} | |
} | |
},{}]},{},[]) | |
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2hvbWUvYWRtaW4vYnJvd3NlcmlmeS1jZG4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2Jyb3dzZXItcGFjay9fcHJlbHVkZS5qcyIsImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1hcCwgd2lkdGgpIHtcbiAgdmFyIHJlYWRpbmcgPSBmYWxzZSwgYWJvcnRcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZWFkKSB7XG4gICAgdmFyIGkgPSAwLCBqID0gMCwgbGFzdCA9IDBcbiAgICB2YXIgc2VlbiA9IFtdLCBzdGFydGVkID0gZmFsc2UsIGVuZGVkID0gZmFsc2UsIF9jYiwgZXJyb3JcblxuICAgIGZ1bmN0aW9uIGRyYWluICgpIHtcbiAgICAgIGlmKF9jYikge1xuICAgICAgICB2YXIgY2IgPSBfY2JcbiAgICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgICBfY2IgPSBudWxsXG4gICAgICAgICAgcmV0dXJuIGNiKGVycm9yKVxuICAgICAgICB9XG4gICAgICAgIGlmKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNlZW4sIGopKSB7XG4gICAgICAgICAgX2NiID0gbnVsbFxuICAgICAgICAgIHZhciBkYXRhID0gc2VlbltqXTsgZGVsZXRlIHNlZW5bal07IGorK1xuICAgICAgICAgIGNiKG51bGwsIGRhdGEpXG4gICAgICAgICAgaWYod2lkdGgpIHN0YXJ0KClcbiAgICAgICAgfSBlbHNlIGlmKGogPj0gbGFzdCAmJiBlbmRlZCkge1xuICAgICAgICAgIF9jYiA9IG51bGxcbiAgICAgICAgICBjYih0cnVlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RhcnQgKCkge1xuICAgICAgc3RhcnRlZCA9IHRydWVcbiAgICAgIGlmKGVuZGVkKSByZXR1cm4gZHJhaW4oKVxuICAgICAgaWYocmVhZGluZyB8fCB3aWR0aCAmJiAoaSAtIHdpZHRoID49IGopKSByZXR1cm5cbiAgICAgIHJlYWRpbmcgPSB0cnVlXG4gICAgICByZWFkKGFib3J0LCBmdW5jdGlvbiAoZW5kLCBkYXRhKSB7XG4gICAgICAgIHJlYWRpbmcgPSBmYWxzZVxuICAgICAgICBpZihlbmQpIHtcbiAgICAgICAgICBsYXN0ID0gaTsgZW5kZWQgPSBlbmRcbiAgICAgICAgICBkcmFpbigpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGsgPSBpKytcblxuICAgICAgICAgIG1hcChkYXRhLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgICAgICBzZWVuW2tdID0gZGF0YVxuICAgICAgICAgICAgaWYoZXJyKSBlcnJvciA9IGVyclxuICAgICAgICAgICAgZHJhaW4oKVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZighZW5kZWQpXG4gICAgICAgICAgICBzdGFydCgpXG5cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hYm9ydCwgY2IpIHtcbiAgICAgIGlmKF9hYm9ydClcbiAgICAgICAgcmVhZChlbmRlZCA9IGFib3J0ID0gX2Fib3J0LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgaWYoY2IpIHJldHVybiBjYihlcnIpXG4gICAgICAgIH0pXG4gICAgICBlbHNlIHtcbiAgICAgICAgX2NiID0gY2JcbiAgICAgICAgaWYoIXN0YXJ0ZWQpIHN0YXJ0KClcbiAgICAgICAgZHJhaW4oKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iXX0= | |
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | |
'use strict' | |
module.exports = function pull (a) { | |
var length = arguments.length | |
if (typeof a === 'function' && a.length === 1) { | |
var args = new Array(length) | |
for(var i = 0; i < length; i++) | |
args[i] = arguments[i] | |
return function (read) { | |
if (args == null) { | |
throw new TypeError("partial sink should only be called once!") | |
} | |
// Grab the reference after the check, because it's always an array now | |
// (engines like that kind of consistency). | |
var ref = args | |
args = null | |
// Prioritize common case of small number of pulls. | |
switch (length) { | |
case 1: return pull(read, ref[0]) | |
case 2: return pull(read, ref[0], ref[1]) | |
case 3: return pull(read, ref[0], ref[1], ref[2]) | |
case 4: return pull(read, ref[0], ref[1], ref[2], ref[3]) | |
default: | |
ref.unshift(read) | |
return pull.apply(null, ref) | |
} | |
} | |
} | |
var read = a | |
if (read && typeof read.source === 'function') { | |
read = read.source | |
} | |
for (var i = 1; i < length; i++) { | |
var s = arguments[i] | |
if (typeof s === 'function') { | |
read = s(read) | |
} else if (s && typeof s === 'object') { | |
s.sink(read) | |
read = s.source | |
} | |
} | |
return read | |
} | |
},{}],2:[function(require,module,exports){ | |
'use strict' | |
var reduce = require('./reduce') | |
module.exports = function collect (cb) { | |
return reduce(function (arr, item) { | |
arr.push(item) | |
return arr | |
}, [], cb) | |
} | |
},{"./reduce":9}],3:[function(require,module,exports){ | |
'use strict' | |
var reduce = require('./reduce') | |
module.exports = function concat (cb) { | |
return reduce(function (a, b) { | |
return a + b | |
}, '', cb) | |
} | |
},{"./reduce":9}],4:[function(require,module,exports){ | |
'use strict' | |
module.exports = function drain (op, done) { | |
var read, abort | |
function sink (_read) { | |
read = _read | |
if(abort) return sink.abort() | |
//this function is much simpler to write if you | |
//just use recursion, but by using a while loop | |
//we do not blow the stack if the stream happens to be sync. | |
;(function next() { | |
var loop = true, cbed = false | |
while(loop) { | |
cbed = false | |
read(null, function (end, data) { | |
cbed = true | |
if(end = end || abort) { | |
loop = false | |
if(done) done(end === true ? null : end) | |
else if(end && end !== true) | |
throw end | |
} | |
else if(op && false === op(data) || abort) { | |
loop = false | |
read(abort || true, done || function () {}) | |
} | |
else if(!loop){ | |
next() | |
} | |
}) | |
if(!cbed) { | |
loop = false | |
return | |
} | |
} | |
})() | |
} | |
sink.abort = function (err, cb) { | |
if('function' == typeof err) | |
cb = err, err = true | |
abort = err || true | |
if(read) return read(abort, cb || function () {}) | |
} | |
return sink | |
} | |
},{}],5:[function(require,module,exports){ | |
'use strict' | |
function id (e) { return e } | |
var prop = require('../util/prop') | |
var drain = require('./drain') | |
module.exports = function find (test, cb) { | |
var ended = false | |
if(!cb) | |
cb = test, test = id | |
else | |
test = prop(test) || id | |
return drain(function (data) { | |
if(test(data)) { | |
ended = true | |
cb(null, data) | |
return false | |
} | |
}, function (err) { | |
if(ended) return //already called back | |
cb(err === true ? null : err, null) | |
}) | |
} | |
},{"../util/prop":29,"./drain":4}],6:[function(require,module,exports){ | |
'use strict' | |
module.exports = { | |
drain: require('./drain'), | |
onEnd: require('./on-end'), | |
log: require('./log'), | |
find: require('./find'), | |
reduce: require('./reduce'), | |
collect: require('./collect'), | |
concat: require('./concat') | |
} | |
},{"./collect":2,"./concat":3,"./drain":4,"./find":5,"./log":7,"./on-end":8,"./reduce":9}],7:[function(require,module,exports){ | |
'use strict' | |
var drain = require('./drain') | |
module.exports = function log (done) { | |
return drain(function (data) { | |
console.log(data) | |
}, done) | |
} | |
},{"./drain":4}],8:[function(require,module,exports){ | |
'use strict' | |
var drain = require('./drain') | |
module.exports = function onEnd (done) { | |
return drain(null, done) | |
} | |
},{"./drain":4}],9:[function(require,module,exports){ | |
'use strict' | |
var drain = require('./drain') | |
module.exports = function reduce (reducer, acc, cb) { | |
return drain(function (data) { | |
acc = reducer(acc, data) | |
}, function (err) { | |
cb(err, acc) | |
}) | |
} | |
},{"./drain":4}],10:[function(require,module,exports){ | |
'use strict' | |
module.exports = function count (max) { | |
var i = 0; max = max || Infinity | |
return function (end, cb) { | |
if(end) return cb && cb(end) | |
if(i > max) | |
return cb(true) | |
cb(null, i++) | |
} | |
} | |
},{}],11:[function(require,module,exports){ | |
'use strict' | |
//a stream that ends immediately. | |
module.exports = function empty () { | |
return function (abort, cb) { | |
cb(true) | |
} | |
} | |
},{}],12:[function(require,module,exports){ | |
'use strict' | |
//a stream that errors immediately. | |
module.exports = function error (err) { | |
return function (abort, cb) { | |
cb(err) | |
} | |
} | |
},{}],13:[function(require,module,exports){ | |
'use strict' | |
module.exports = { | |
keys: require('./keys'), | |
once: require('./once'), | |
values: require('./values'), | |
count: require('./count'), | |
infinite: require('./infinite'), | |
empty: require('./empty'), | |
error: require('./error') | |
} | |
},{"./count":10,"./empty":11,"./error":12,"./infinite":14,"./keys":15,"./once":16,"./values":17}],14:[function(require,module,exports){ | |
'use strict' | |
module.exports = function infinite (generate) { | |
generate = generate || Math.random | |
return function (end, cb) { | |
if(end) return cb && cb(end) | |
return cb(null, generate()) | |
} | |
} | |
},{}],15:[function(require,module,exports){ | |
'use strict' | |
var values = require('./values') | |
module.exports = function (object) { | |
return values(Object.keys(object)) | |
} | |
},{"./values":17}],16:[function(require,module,exports){ | |
'use strict' | |
var abortCb = require('../util/abort-cb') | |
module.exports = function once (value, onAbort) { | |
return function (abort, cb) { | |
if(abort) | |
return abortCb(cb, abort, onAbort) | |
if(value != null) { | |
var _value = value; value = null | |
cb(null, _value) | |
} else | |
cb(true) | |
} | |
} | |
},{"../util/abort-cb":28}],17:[function(require,module,exports){ | |
'use strict' | |
var abortCb = require('../util/abort-cb') | |
module.exports = function values (array, onAbort) { | |
if(!array) | |
return function (abort, cb) { | |
if(abort) return abortCb(cb, abort, onAbort) | |
return cb(true) | |
} | |
if(!Array.isArray(array)) | |
array = Object.keys(array).map(function (k) { | |
return array[k] | |
}) | |
var i = 0 | |
return function (abort, cb) { | |
if(abort) | |
return abortCb(cb, abort, onAbort) | |
if(i >= array.length) | |
cb(true) | |
else | |
cb(null, array[i++]) | |
} | |
} | |
},{"../util/abort-cb":28}],18:[function(require,module,exports){ | |
'use strict' | |
function id (e) { return e } | |
var prop = require('../util/prop') | |
module.exports = function asyncMap (map) { | |
if(!map) return id | |
map = prop(map) | |
var busy = false, abortCb, aborted | |
return function (read) { | |
return function next (abort, cb) { | |
if(aborted) return cb(aborted) | |
if(abort) { | |
aborted = abort | |
if(!busy) read(abort, cb) | |
else read(abort, function () { | |
//if we are still busy, wait for the mapper to complete. | |
if(busy) abortCb = cb | |
else cb(abort) | |
}) | |
} | |
else | |
read(null, function (end, data) { | |
if(end) cb(end) | |
else if(aborted) cb(aborted) | |
else { | |
busy = true | |
map(data, function (err, data) { | |
busy = false | |
if(aborted) { | |
cb(aborted) | |
abortCb(aborted) | |
} | |
else if(err) next (err, cb) | |
else cb(null, data) | |
}) | |
} | |
}) | |
} | |
} | |
} | |
},{"../util/prop":29}],19:[function(require,module,exports){ | |
'use strict' | |
var tester = require('../util/tester') | |
var filter = require('./filter') | |
module.exports = function filterNot (test) { | |
test = tester(test) | |
return filter(function (data) { return !test(data) }) | |
} | |
},{"../util/tester":30,"./filter":20}],20:[function(require,module,exports){ | |
'use strict' | |
var tester = require('../util/tester') | |
module.exports = function filter (test) { | |
//regexp | |
test = tester(test) | |
return function (read) { | |
return function next (end, cb) { | |
var sync, loop = true | |
while(loop) { | |
loop = false | |
sync = true | |
read(end, function (end, data) { | |
if(!end && !test(data)) | |
return sync ? loop = true : next(end, cb) | |
cb(end, data) | |
}) | |
sync = false | |
} | |
} | |
} | |
} | |
},{"../util/tester":30}],21:[function(require,module,exports){ | |
'use strict' | |
var values = require('../sources/values') | |
var once = require('../sources/once') | |
//convert a stream of arrays or streams into just a stream. | |
module.exports = function flatten () { | |
return function (read) { | |
var _read | |
return function (abort, cb) { | |
if (abort) { //abort the current stream, and then stream of streams. | |
_read ? _read(abort, function(err) { | |
read(err || abort, cb) | |
}) : read(abort, cb) | |
} | |
else if(_read) nextChunk() | |
else nextStream() | |
function nextChunk () { | |
_read(null, function (err, data) { | |
if (err === true) nextStream() | |
else if (err) { | |
read(true, function(abortErr) { | |
// TODO: what do we do with the abortErr? | |
cb(err) | |
}) | |
} | |
else cb(null, data) | |
}) | |
} | |
function nextStream () { | |
_read = null | |
read(null, function (end, stream) { | |
if(end) | |
return cb(end) | |
if(Array.isArray(stream) || stream && 'object' === typeof stream) | |
stream = values(stream) | |
else if('function' != typeof stream) | |
stream = once(stream) | |
_read = stream | |
nextChunk() | |
}) | |
} | |
} | |
} | |
} | |
},{"../sources/once":16,"../sources/values":17}],22:[function(require,module,exports){ | |
'use strict' | |
module.exports = { | |
map: require('./map'), | |
asyncMap: require('./async-map'), | |
filter: require('./filter'), | |
filterNot: require('./filter-not'), | |
through: require('./through'), | |
take: require('./take'), | |
unique: require('./unique'), | |
nonUnique: require('./non-unique'), | |
flatten: require('./flatten') | |
} | |
},{"./async-map":18,"./filter":20,"./filter-not":19,"./flatten":21,"./map":23,"./non-unique":24,"./take":25,"./through":26,"./unique":27}],23:[function(require,module,exports){ | |
'use strict' | |
function id (e) { return e } | |
var prop = require('../util/prop') | |
module.exports = function map (mapper) { | |
if(!mapper) return id | |
mapper = prop(mapper) | |
return function (read) { | |
return function (abort, cb) { | |
read(abort, function (end, data) { | |
try { | |
data = !end ? mapper(data) : null | |
} catch (err) { | |
return read(err, function () { | |
return cb(err) | |
}) | |
} | |
cb(end, data) | |
}) | |
} | |
} | |
} | |
},{"../util/prop":29}],24:[function(require,module,exports){ | |
'use strict' | |
var unique = require('./unique') | |
//passes an item through when you see it for the second time. | |
module.exports = function nonUnique (field) { | |
return unique(field, true) | |
} | |
},{"./unique":27}],25:[function(require,module,exports){ | |
'use strict' | |
//read a number of items and then stop. | |
module.exports = function take (test, opts) { | |
opts = opts || {} | |
var last = opts.last || false // whether the first item for which !test(item) should still pass | |
var ended = false | |
if('number' === typeof test) { | |
last = true | |
var n = test; test = function () { | |
return --n | |
} | |
} | |
return function (read) { | |
function terminate (cb) { | |
read(true, function (err) { | |
last = false; cb(err || true) | |
}) | |
} | |
return function (end, cb) { | |
if(ended) last ? terminate(cb) : cb(ended) | |
else if(ended = end) read(ended, cb) | |
else | |
read(null, function (end, data) { | |
if(ended = ended || end) { | |
//last ? terminate(cb) : | |
cb(ended) | |
} | |
else if(!test(data)) { | |
ended = true | |
last ? cb(null, data) : terminate(cb) | |
} | |
else | |
cb(null, data) | |
}) | |
} | |
} | |
} | |
},{}],26:[function(require,module,exports){ | |
'use strict' | |
//a pass through stream that doesn't change the value. | |
module.exports = function through (op, onEnd) { | |
var a = false | |
function once (abort) { | |
if(a || !onEnd) return | |
a = true | |
onEnd(abort === true ? null : abort) | |
} | |
return function (read) { | |
return function (end, cb) { | |
if(end) once(end) | |
return read(end, function (end, data) { | |
if(!end) op && op(data) | |
else once(end) | |
cb(end, data) | |
}) | |
} | |
} | |
} | |
},{}],27:[function(require,module,exports){ | |
'use strict' | |
function id (e) { return e } | |
var prop = require('../util/prop') | |
var filter = require('./filter') | |
//drop items you have already seen. | |
module.exports = function unique (field, invert) { | |
field = prop(field) || id | |
var seen = {} | |
return filter(function (data) { | |
var key = field(data) | |
if(seen[key]) return !!invert //false, by default | |
else seen[key] = true | |
return !invert //true by default | |
}) | |
} | |
},{"../util/prop":29,"./filter":20}],28:[function(require,module,exports){ | |
module.exports = function abortCb(cb, abort, onAbort) { | |
cb(abort) | |
onAbort && onAbort(abort === true ? null: abort) | |
return | |
} | |
},{}],29:[function(require,module,exports){ | |
module.exports = function prop (key) { | |
return key && ( | |
'string' == typeof key | |
? function (data) { return data[key] } | |
: 'object' === typeof key && 'function' === typeof key.exec //regexp | |
? function (data) { var v = key.exec(data); return v && v[0] } | |
: key | |
) | |
} | |
},{}],30:[function(require,module,exports){ | |
var prop = require('./prop') | |
function id (e) { return e } | |
module.exports = function tester (test) { | |
return ( | |
'object' === typeof test && 'function' === typeof test.test //regexp | |
? function (data) { return test.test(data) } | |
: prop (test) || id | |
) | |
} | |
},{"./prop":29}],"pull-stream":[function(require,module,exports){ | |
'use strict' | |
var sources = require('./sources') | |
var sinks = require('./sinks') | |
var throughs = require('./throughs') | |
exports = module.exports = require('./pull') | |
for(var k in sources) | |
exports[k] = sources[k] | |
for(var k in throughs) | |
exports[k] = throughs[k] | |
for(var k in sinks) | |
exports[k] = sinks[k] | |
},{"./pull":1,"./sinks":6,"./sources":13,"./throughs":22}]},{},[]) | |
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2hvbWUvYWRtaW4vYnJvd3NlcmlmeS1jZG4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2Jyb3dzZXItcGFjay9fcHJlbHVkZS5qcyIsInB1bGwuanMiLCJzaW5rcy9jb2xsZWN0LmpzIiwic2lua3MvY29uY2F0LmpzIiwic2lua3MvZHJhaW4uanMiLCJzaW5rcy9maW5kLmpzIiwic2lua3MvaW5kZXguanMiLCJzaW5rcy9sb2cuanMiLCJzaW5rcy9vbi1lbmQuanMiLCJzaW5rcy9yZWR1Y2UuanMiLCJzb3VyY2VzL2NvdW50LmpzIiwic291cmNlcy9lbXB0eS5qcyIsInNvdXJjZXMvZXJyb3IuanMiLCJzb3VyY2VzL2luZGV4LmpzIiwic291cmNlcy9pbmZpbml0ZS5qcyIsInNvdXJjZXMva2V5cy5qcyIsInNvdXJjZXMvb25jZS5qcyIsInNvdXJjZXMvdmFsdWVzLmpzIiwidGhyb3VnaHMvYXN5bmMtbWFwLmpzIiwidGhyb3VnaHMvZmlsdGVyLW5vdC5qcyIsInRocm91Z2hzL2ZpbHRlci5qcyIsInRocm91Z2hzL2ZsYXR0ZW4uanMiLCJ0aHJvdWdocy9pbmRleC5qcyIsInRocm91Z2hzL21hcC5qcyIsInRocm91Z2hzL25vbi11bmlxdWUuanMiLCJ0aHJvdWdocy90YWtlLmpzIiwidGhyb3VnaHMvdGhyb3VnaC5qcyIsInRocm91Z2hzL3VuaXF1ZS5qcyIsInV0aWwvYWJvcnQtY2IuanMiLCJ1dGlsL3Byb3AuanMiLCJ1dGlsL3Rlc3Rlci5qcyIsImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHB1bGwgKGEpIHtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgaWYgKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nICYmIGEubGVuZ3RoID09PSAxKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuZ3RoKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKylcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV1cbiAgICByZXR1cm4gZnVuY3Rpb24gKHJlYWQpIHtcbiAgICAgIGlmIChhcmdzID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcInBhcnRpYWwgc2luayBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSFcIilcbiAgICAgIH1cblxuICAgICAgLy8gR3JhYiB0aGUgcmVmZXJlbmNlIGFmdGVyIHRoZSBjaGVjaywgYmVjYXVzZSBpdCdzIGFsd2F5cyBhbiBhcnJheSBub3dcbiAgICAgIC8vIChlbmdpbmVzIGxpa2UgdGhhdCBraW5kIG9mIGNvbnNpc3RlbmN5KS5cbiAgICAgIHZhciByZWYgPSBhcmdzXG4gICAgICBhcmdzID0gbnVsbFxuXG4gICAgICAvLyBQcmlvcml0aXplIGNvbW1vbiBjYXNlIG9mIHNtYWxsIG51bWJlciBvZiBwdWxscy5cbiAgICAgIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6IHJldHVybiBwdWxsKHJlYWQsIHJlZlswXSlcbiAgICAgIGNhc2UgMjogcmV0dXJuIHB1bGwocmVhZCwgcmVmWzBdLCByZWZbMV0pXG4gICAgICBjYXNlIDM6IHJldHVybiBwdWxsKHJlYWQsIHJlZlswXSwgcmVmWzFdLCByZWZbMl0pXG4gICAgICBjYXNlIDQ6IHJldHVybiBwdWxsKHJlYWQsIHJlZlswXSwgcmVmWzFdLCByZWZbMl0sIHJlZlszXSlcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlZi51bnNoaWZ0KHJlYWQpXG4gICAgICAgIHJldHVybiBwdWxsLmFwcGx5KG51bGwsIHJlZilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgcmVhZCA9IGFcblxuICBpZiAocmVhZCAmJiB0eXBlb2YgcmVhZC5zb3VyY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWFkID0gcmVhZC5zb3VyY2VcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcyA9IGFyZ3VtZW50c1tpXVxuICAgIGlmICh0eXBlb2YgcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVhZCA9IHMocmVhZClcbiAgICB9IGVsc2UgaWYgKHMgJiYgdHlwZW9mIHMgPT09ICdvYmplY3QnKSB7XG4gICAgICBzLnNpbmsocmVhZClcbiAgICAgIHJlYWQgPSBzLnNvdXJjZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWFkXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHJlZHVjZSA9IHJlcXVpcmUoJy4vcmVkdWNlJylcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb2xsZWN0IChjYikge1xuICByZXR1cm4gcmVkdWNlKGZ1bmN0aW9uIChhcnIsIGl0ZW0pIHtcbiAgICBhcnIucHVzaChpdGVtKVxuICAgIHJldHVybiBhcnJcbiAgfSwgW10sIGNiKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciByZWR1Y2UgPSByZXF1aXJlKCcuL3JlZHVjZScpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29uY2F0IChjYikge1xuICByZXR1cm4gcmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEgKyBiXG4gIH0sICcnLCBjYilcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRyYWluIChvcCwgZG9uZSkge1xuICB2YXIgcmVhZCwgYWJvcnRcblxuICBmdW5jdGlvbiBzaW5rIChfcmVhZCkge1xuICAgIHJlYWQgPSBfcmVhZFxuICAgIGlmKGFib3J0KSByZXR1cm4gc2luay5hYm9ydCgpXG4gICAgLy90aGlzIGZ1bmN0aW9uIGlzIG11Y2ggc2ltcGxlciB0byB3cml0ZSBpZiB5b3VcbiAgICAvL2p1c3QgdXNlIHJlY3Vyc2lvbiwgYnV0IGJ5IHVzaW5nIGEgd2hpbGUgbG9vcFxuICAgIC8vd2UgZG8gbm90IGJsb3cgdGhlIHN0YWNrIGlmIHRoZSBzdHJlYW0gaGFwcGVucyB0byBiZSBzeW5jLlxuICAgIDsoZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgdmFyIGxvb3AgPSB0cnVlLCBjYmVkID0gZmFsc2VcbiAgICAgICAgd2hpbGUobG9vcCkge1xuICAgICAgICAgIGNiZWQgPSBmYWxzZVxuICAgICAgICAgIHJlYWQobnVsbCwgZnVuY3Rpb24gKGVuZCwgZGF0YSkge1xuICAgICAgICAgICAgY2JlZCA9IHRydWVcbiAgICAgICAgICAgIGlmKGVuZCA9IGVuZCB8fCBhYm9ydCkge1xuICAgICAgICAgICAgICBsb29wID0gZmFsc2VcbiAgICAgICAgICAgICAgaWYoZG9uZSkgZG9uZShlbmQgPT09IHRydWUgPyBudWxsIDogZW5kKVxuICAgICAgICAgICAgICBlbHNlIGlmKGVuZCAmJiBlbmQgIT09IHRydWUpXG4gICAgICAgICAgICAgICAgdGhyb3cgZW5kXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKG9wICYmIGZhbHNlID09PSBvcChkYXRhKSB8fCBhYm9ydCkge1xuICAgICAgICAgICAgICBsb29wID0gZmFsc2VcbiAgICAgICAgICAgICAgcmVhZChhYm9ydCB8fCB0cnVlLCBkb25lIHx8IGZ1bmN0aW9uICgpIHt9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZighbG9vcCl7XG4gICAgICAgICAgICAgIG5leHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYoIWNiZWQpIHtcbiAgICAgICAgICAgIGxvb3AgPSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSgpXG4gIH1cblxuICBzaW5rLmFib3J0ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgICBpZignZnVuY3Rpb24nID09IHR5cGVvZiBlcnIpXG4gICAgICBjYiA9IGVyciwgZXJyID0gdHJ1ZVxuICAgIGFib3J0ID0gZXJyIHx8IHRydWVcbiAgICBpZihyZWFkKSByZXR1cm4gcmVhZChhYm9ydCwgY2IgfHwgZnVuY3Rpb24gKCkge30pXG4gIH1cblxuICByZXR1cm4gc2lua1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmZ1bmN0aW9uIGlkIChlKSB7IHJldHVybiBlIH1cbnZhciBwcm9wID0gcmVxdWlyZSgnLi4vdXRpbC9wcm9wJylcbnZhciBkcmFpbiA9IHJlcXVpcmUoJy4vZHJhaW4nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZpbmQgKHRlc3QsIGNiKSB7XG4gIHZhciBlbmRlZCA9IGZhbHNlXG4gIGlmKCFjYilcbiAgICBjYiA9IHRlc3QsIHRlc3QgPSBpZFxuICBlbHNlXG4gICAgdGVzdCA9IHByb3AodGVzdCkgfHwgaWRcblxuICByZXR1cm4gZHJhaW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBpZih0ZXN0KGRhdGEpKSB7XG4gICAgICBlbmRlZCA9IHRydWVcbiAgICAgIGNiKG51bGwsIGRhdGEpXG4gICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYoZW5kZWQpIHJldHVybiAvL2FscmVhZHkgY2FsbGVkIGJhY2tcbiAgICBjYihlcnIgPT09IHRydWUgPyBudWxsIDogZXJyLCBudWxsKVxuICB9KVxufVxuXG5cblxuXG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRyYWluOiByZXF1aXJlKCcuL2RyYWluJyksXG4gIG9uRW5kOiByZXF1aXJlKCcuL29uLWVuZCcpLFxuICBsb2c6IHJlcXVpcmUoJy4vbG9nJyksXG4gIGZpbmQ6IHJlcXVpcmUoJy4vZmluZCcpLFxuICByZWR1Y2U6IHJlcXVpcmUoJy4vcmVkdWNlJyksXG4gIGNvbGxlY3Q6IHJlcXVpcmUoJy4vY29sbGVjdCcpLFxuICBjb25jYXQ6IHJlcXVpcmUoJy4vY29uY2F0Jylcbn1cblxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBkcmFpbiA9IHJlcXVpcmUoJy4vZHJhaW4nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxvZyAoZG9uZSkge1xuICByZXR1cm4gZHJhaW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBjb25zb2xlLmxvZyhkYXRhKVxuICB9LCBkb25lKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBkcmFpbiA9IHJlcXVpcmUoJy4vZHJhaW4nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG9uRW5kIChkb25lKSB7XG4gIHJldHVybiBkcmFpbihudWxsLCBkb25lKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBkcmFpbiA9IHJlcXVpcmUoJy4vZHJhaW4nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJlZHVjZSAocmVkdWNlciwgYWNjLCBjYikge1xuICByZXR1cm4gZHJhaW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBhY2MgPSByZWR1Y2VyKGFjYywgZGF0YSlcbiAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgIGNiKGVyciwgYWNjKVxuICB9KVxufVxuXG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb3VudCAobWF4KSB7XG4gIHZhciBpID0gMDsgbWF4ID0gbWF4IHx8IEluZmluaXR5XG4gIHJldHVybiBmdW5jdGlvbiAoZW5kLCBjYikge1xuICAgIGlmKGVuZCkgcmV0dXJuIGNiICYmIGNiKGVuZClcbiAgICBpZihpID4gbWF4KVxuICAgICAgcmV0dXJuIGNiKHRydWUpXG4gICAgY2IobnVsbCwgaSsrKVxuICB9XG59XG5cblxuIiwiJ3VzZSBzdHJpY3QnXG4vL2Egc3RyZWFtIHRoYXQgZW5kcyBpbW1lZGlhdGVseS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZW1wdHkgKCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFib3J0LCBjYikge1xuICAgIGNiKHRydWUpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuLy9hIHN0cmVhbSB0aGF0IGVycm9ycyBpbW1lZGlhdGVseS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZXJyb3IgKGVycikge1xuICByZXR1cm4gZnVuY3Rpb24gKGFib3J0LCBjYikge1xuICAgIGNiKGVycilcbiAgfVxufVxuXG4iLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0ge1xuICBrZXlzOiByZXF1aXJlKCcuL2tleXMnKSxcbiAgb25jZTogcmVxdWlyZSgnLi9vbmNlJyksXG4gIHZhbHVlczogcmVxdWlyZSgnLi92YWx1ZXMnKSxcbiAgY291bnQ6IHJlcXVpcmUoJy4vY291bnQnKSxcbiAgaW5maW5pdGU6IHJlcXVpcmUoJy4vaW5maW5pdGUnKSxcbiAgZW1wdHk6IHJlcXVpcmUoJy4vZW1wdHknKSxcbiAgZXJyb3I6IHJlcXVpcmUoJy4vZXJyb3InKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluZmluaXRlIChnZW5lcmF0ZSkge1xuICBnZW5lcmF0ZSA9IGdlbmVyYXRlIHx8IE1hdGgucmFuZG9tXG4gIHJldHVybiBmdW5jdGlvbiAoZW5kLCBjYikge1xuICAgIGlmKGVuZCkgcmV0dXJuIGNiICYmIGNiKGVuZClcbiAgICByZXR1cm4gY2IobnVsbCwgZ2VuZXJhdGUoKSlcbiAgfVxufVxuXG5cbiIsIid1c2Ugc3RyaWN0J1xudmFyIHZhbHVlcyA9IHJlcXVpcmUoJy4vdmFsdWVzJylcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICByZXR1cm4gdmFsdWVzKE9iamVjdC5rZXlzKG9iamVjdCkpXG59XG5cblxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgYWJvcnRDYiA9IHJlcXVpcmUoJy4uL3V0aWwvYWJvcnQtY2InKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG9uY2UgKHZhbHVlLCBvbkFib3J0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYWJvcnQsIGNiKSB7XG4gICAgaWYoYWJvcnQpXG4gICAgICByZXR1cm4gYWJvcnRDYihjYiwgYWJvcnQsIG9uQWJvcnQpXG4gICAgaWYodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdmFyIF92YWx1ZSA9IHZhbHVlOyB2YWx1ZSA9IG51bGxcbiAgICAgIGNiKG51bGwsIF92YWx1ZSlcbiAgICB9IGVsc2VcbiAgICAgIGNiKHRydWUpXG4gIH1cbn1cblxuXG4iLCIndXNlIHN0cmljdCdcbnZhciBhYm9ydENiID0gcmVxdWlyZSgnLi4vdXRpbC9hYm9ydC1jYicpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdmFsdWVzIChhcnJheSwgb25BYm9ydCkge1xuICBpZighYXJyYXkpXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhYm9ydCwgY2IpIHtcbiAgICAgIGlmKGFib3J0KSByZXR1cm4gYWJvcnRDYihjYiwgYWJvcnQsIG9uQWJvcnQpXG4gICAgICByZXR1cm4gY2IodHJ1ZSlcbiAgICB9XG4gIGlmKCFBcnJheS5pc0FycmF5KGFycmF5KSlcbiAgICBhcnJheSA9IE9iamVjdC5rZXlzKGFycmF5KS5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBhcnJheVtrXVxuICAgIH0pXG4gIHZhciBpID0gMFxuICByZXR1cm4gZnVuY3Rpb24gKGFib3J0LCBjYikge1xuICAgIGlmKGFib3J0KVxuICAgICAgcmV0dXJuIGFib3J0Q2IoY2IsIGFib3J0LCBvbkFib3J0KVxuICAgIGlmKGkgPj0gYXJyYXkubGVuZ3RoKVxuICAgICAgY2IodHJ1ZSlcbiAgICBlbHNlXG4gICAgICBjYihudWxsLCBhcnJheVtpKytdKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gaWQgKGUpIHsgcmV0dXJuIGUgfVxudmFyIHByb3AgPSByZXF1aXJlKCcuLi91dGlsL3Byb3AnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGFzeW5jTWFwIChtYXApIHtcbiAgaWYoIW1hcCkgcmV0dXJuIGlkXG4gIG1hcCA9IHByb3AobWFwKVxuICB2YXIgYnVzeSA9IGZhbHNlLCBhYm9ydENiLCBhYm9ydGVkXG4gIHJldHVybiBmdW5jdGlvbiAocmVhZCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0IChhYm9ydCwgY2IpIHtcbiAgICAgIGlmKGFib3J0ZWQpIHJldHVybiBjYihhYm9ydGVkKVxuICAgICAgaWYoYWJvcnQpIHtcbiAgICAgICAgYWJvcnRlZCA9IGFib3J0XG4gICAgICAgIGlmKCFidXN5KSByZWFkKGFib3J0LCBjYilcbiAgICAgICAgZWxzZSByZWFkKGFib3J0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy9pZiB3ZSBhcmUgc3RpbGwgYnVzeSwgd2FpdCBmb3IgdGhlIG1hcHBlciB0byBjb21wbGV0ZS5cbiAgICAgICAgICBpZihidXN5KSBhYm9ydENiID0gY2JcbiAgICAgICAgICBlbHNlIGNiKGFib3J0KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAgICByZWFkKG51bGwsIGZ1bmN0aW9uIChlbmQsIGRhdGEpIHtcbiAgICAgICAgICBpZihlbmQpIGNiKGVuZClcbiAgICAgICAgICBlbHNlIGlmKGFib3J0ZWQpIGNiKGFib3J0ZWQpXG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBidXN5ID0gdHJ1ZVxuICAgICAgICAgICAgbWFwKGRhdGEsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICAgICAgICAgICAgYnVzeSA9IGZhbHNlXG4gICAgICAgICAgICAgIGlmKGFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgICBjYihhYm9ydGVkKVxuICAgICAgICAgICAgICAgIGFib3J0Q2IoYWJvcnRlZClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIGlmKGVycikgbmV4dCAoZXJyLCBjYilcbiAgICAgICAgICAgICAgZWxzZSBjYihudWxsLCBkYXRhKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG59XG5cblxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0ZXN0ZXIgPSByZXF1aXJlKCcuLi91dGlsL3Rlc3RlcicpXG52YXIgZmlsdGVyID0gcmVxdWlyZSgnLi9maWx0ZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZpbHRlck5vdCAodGVzdCkge1xuICB0ZXN0ID0gdGVzdGVyKHRlc3QpXG4gIHJldHVybiBmaWx0ZXIoZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuICF0ZXN0KGRhdGEpIH0pXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHRlc3RlciA9IHJlcXVpcmUoJy4uL3V0aWwvdGVzdGVyJylcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWx0ZXIgKHRlc3QpIHtcbiAgLy9yZWdleHBcbiAgdGVzdCA9IHRlc3Rlcih0ZXN0KVxuICByZXR1cm4gZnVuY3Rpb24gKHJlYWQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCAoZW5kLCBjYikge1xuICAgICAgdmFyIHN5bmMsIGxvb3AgPSB0cnVlXG4gICAgICB3aGlsZShsb29wKSB7XG4gICAgICAgIGxvb3AgPSBmYWxzZVxuICAgICAgICBzeW5jID0gdHJ1ZVxuICAgICAgICByZWFkKGVuZCwgZnVuY3Rpb24gKGVuZCwgZGF0YSkge1xuICAgICAgICAgIGlmKCFlbmQgJiYgIXRlc3QoZGF0YSkpXG4gICAgICAgICAgICByZXR1cm4gc3luYyA/IGxvb3AgPSB0cnVlIDogbmV4dChlbmQsIGNiKVxuICAgICAgICAgIGNiKGVuZCwgZGF0YSlcbiAgICAgICAgfSlcbiAgICAgICAgc3luYyA9IGZhbHNlXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdmFsdWVzID0gcmVxdWlyZSgnLi4vc291cmNlcy92YWx1ZXMnKVxudmFyIG9uY2UgPSByZXF1aXJlKCcuLi9zb3VyY2VzL29uY2UnKVxuXG4vL2NvbnZlcnQgYSBzdHJlYW0gb2YgYXJyYXlzIG9yIHN0cmVhbXMgaW50byBqdXN0IGEgc3RyZWFtLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmbGF0dGVuICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZWFkKSB7XG4gICAgdmFyIF9yZWFkXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhYm9ydCwgY2IpIHtcbiAgICAgIGlmIChhYm9ydCkgeyAvL2Fib3J0IHRoZSBjdXJyZW50IHN0cmVhbSwgYW5kIHRoZW4gc3RyZWFtIG9mIHN0cmVhbXMuXG4gICAgICAgIF9yZWFkID8gX3JlYWQoYWJvcnQsIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgIHJlYWQoZXJyIHx8IGFib3J0LCBjYilcbiAgICAgICAgfSkgOiByZWFkKGFib3J0LCBjYilcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYoX3JlYWQpIG5leHRDaHVuaygpXG4gICAgICBlbHNlIG5leHRTdHJlYW0oKVxuXG4gICAgICBmdW5jdGlvbiBuZXh0Q2h1bmsgKCkge1xuICAgICAgICBfcmVhZChudWxsLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgICAgaWYgKGVyciA9PT0gdHJ1ZSkgbmV4dFN0cmVhbSgpXG4gICAgICAgICAgZWxzZSBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZWFkKHRydWUsIGZ1bmN0aW9uKGFib3J0RXJyKSB7XG4gICAgICAgICAgICAgIC8vIFRPRE86IHdoYXQgZG8gd2UgZG8gd2l0aCB0aGUgYWJvcnRFcnI/XG4gICAgICAgICAgICAgIGNiKGVycilcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgY2IobnVsbCwgZGF0YSlcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIG5leHRTdHJlYW0gKCkge1xuICAgICAgICBfcmVhZCA9IG51bGxcbiAgICAgICAgcmVhZChudWxsLCBmdW5jdGlvbiAoZW5kLCBzdHJlYW0pIHtcbiAgICAgICAgICBpZihlbmQpXG4gICAgICAgICAgICByZXR1cm4gY2IoZW5kKVxuICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkoc3RyZWFtKSB8fCBzdHJlYW0gJiYgJ29iamVjdCcgPT09IHR5cGVvZiBzdHJlYW0pXG4gICAgICAgICAgICBzdHJlYW0gPSB2YWx1ZXMoc3RyZWFtKVxuICAgICAgICAgIGVsc2UgaWYoJ2Z1bmN0aW9uJyAhPSB0eXBlb2Ygc3RyZWFtKVxuICAgICAgICAgICAgc3RyZWFtID0gb25jZShzdHJlYW0pXG4gICAgICAgICAgX3JlYWQgPSBzdHJlYW1cbiAgICAgICAgICBuZXh0Q2h1bmsoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1hcDogcmVxdWlyZSgnLi9tYXAnKSxcbiAgYXN5bmNNYXA6IHJlcXVpcmUoJy4vYXN5bmMtbWFwJyksXG4gIGZpbHRlcjogcmVxdWlyZSgnLi9maWx0ZXInKSxcbiAgZmlsdGVyTm90OiByZXF1aXJlKCcuL2ZpbHRlci1ub3QnKSxcbiAgdGhyb3VnaDogcmVxdWlyZSgnLi90aHJvdWdoJyksXG4gIHRha2U6IHJlcXVpcmUoJy4vdGFrZScpLFxuICB1bmlxdWU6IHJlcXVpcmUoJy4vdW5pcXVlJyksXG4gIG5vblVuaXF1ZTogcmVxdWlyZSgnLi9ub24tdW5pcXVlJyksXG4gIGZsYXR0ZW46IHJlcXVpcmUoJy4vZmxhdHRlbicpXG59XG5cblxuXG4iLCIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gaWQgKGUpIHsgcmV0dXJuIGUgfVxudmFyIHByb3AgPSByZXF1aXJlKCcuLi91dGlsL3Byb3AnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1hcCAobWFwcGVyKSB7XG4gIGlmKCFtYXBwZXIpIHJldHVybiBpZFxuICBtYXBwZXIgPSBwcm9wKG1hcHBlcilcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZWFkKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhYm9ydCwgY2IpIHtcbiAgICAgIHJlYWQoYWJvcnQsIGZ1bmN0aW9uIChlbmQsIGRhdGEpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgZGF0YSA9ICFlbmQgPyBtYXBwZXIoZGF0YSkgOiBudWxsXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJldHVybiByZWFkKGVyciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNiKGVycilcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGNiKGVuZCwgZGF0YSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHVuaXF1ZSA9IHJlcXVpcmUoJy4vdW5pcXVlJylcblxuLy9wYXNzZXMgYW4gaXRlbSB0aHJvdWdoIHdoZW4geW91IHNlZSBpdCBmb3IgdGhlIHNlY29uZCB0aW1lLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub25VbmlxdWUgKGZpZWxkKSB7XG4gIHJldHVybiB1bmlxdWUoZmllbGQsIHRydWUpXG59XG4iLCIndXNlIHN0cmljdCdcblxuLy9yZWFkIGEgbnVtYmVyIG9mIGl0ZW1zIGFuZCB0aGVuIHN0b3AuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRha2UgKHRlc3QsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge31cbiAgdmFyIGxhc3QgPSBvcHRzLmxhc3QgfHwgZmFsc2UgLy8gd2hldGhlciB0aGUgZmlyc3QgaXRlbSBmb3Igd2hpY2ggIXRlc3QoaXRlbSkgc2hvdWxkIHN0aWxsIHBhc3NcbiAgdmFyIGVuZGVkID0gZmFsc2VcbiAgaWYoJ251bWJlcicgPT09IHR5cGVvZiB0ZXN0KSB7XG4gICAgbGFzdCA9IHRydWVcbiAgICB2YXIgbiA9IHRlc3Q7IHRlc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gLS1uXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChyZWFkKSB7XG5cbiAgICBmdW5jdGlvbiB0ZXJtaW5hdGUgKGNiKSB7XG4gICAgICByZWFkKHRydWUsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgbGFzdCA9IGZhbHNlOyBjYihlcnIgfHwgdHJ1ZSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlbmQsIGNiKSB7XG4gICAgICBpZihlbmRlZCkgICAgICAgICAgICBsYXN0ID8gdGVybWluYXRlKGNiKSA6IGNiKGVuZGVkKVxuICAgICAgZWxzZSBpZihlbmRlZCA9IGVuZCkgcmVhZChlbmRlZCwgY2IpXG4gICAgICBlbHNlXG4gICAgICAgIHJlYWQobnVsbCwgZnVuY3Rpb24gKGVuZCwgZGF0YSkge1xuICAgICAgICAgIGlmKGVuZGVkID0gZW5kZWQgfHwgZW5kKSB7XG4gICAgICAgICAgICAvL2xhc3QgPyB0ZXJtaW5hdGUoY2IpIDpcbiAgICAgICAgICAgIGNiKGVuZGVkKVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmKCF0ZXN0KGRhdGEpKSB7XG4gICAgICAgICAgICBlbmRlZCA9IHRydWVcbiAgICAgICAgICAgIGxhc3QgPyBjYihudWxsLCBkYXRhKSA6IHRlcm1pbmF0ZShjYilcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgY2IobnVsbCwgZGF0YSlcbiAgICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG4vL2EgcGFzcyB0aHJvdWdoIHN0cmVhbSB0aGF0IGRvZXNuJ3QgY2hhbmdlIHRoZSB2YWx1ZS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGhyb3VnaCAob3AsIG9uRW5kKSB7XG4gIHZhciBhID0gZmFsc2VcblxuICBmdW5jdGlvbiBvbmNlIChhYm9ydCkge1xuICAgIGlmKGEgfHwgIW9uRW5kKSByZXR1cm5cbiAgICBhID0gdHJ1ZVxuICAgIG9uRW5kKGFib3J0ID09PSB0cnVlID8gbnVsbCA6IGFib3J0KVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChyZWFkKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlbmQsIGNiKSB7XG4gICAgICBpZihlbmQpIG9uY2UoZW5kKVxuICAgICAgcmV0dXJuIHJlYWQoZW5kLCBmdW5jdGlvbiAoZW5kLCBkYXRhKSB7XG4gICAgICAgIGlmKCFlbmQpIG9wICYmIG9wKGRhdGEpXG4gICAgICAgIGVsc2Ugb25jZShlbmQpXG4gICAgICAgIGNiKGVuZCwgZGF0YSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gaWQgKGUpIHsgcmV0dXJuIGUgfVxudmFyIHByb3AgPSByZXF1aXJlKCcuLi91dGlsL3Byb3AnKVxudmFyIGZpbHRlciA9IHJlcXVpcmUoJy4vZmlsdGVyJylcblxuLy9kcm9wIGl0ZW1zIHlvdSBoYXZlIGFscmVhZHkgc2Vlbi5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdW5pcXVlIChmaWVsZCwgaW52ZXJ0KSB7XG4gIGZpZWxkID0gcHJvcChmaWVsZCkgfHwgaWRcbiAgdmFyIHNlZW4gPSB7fVxuICByZXR1cm4gZmlsdGVyKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIGtleSA9IGZpZWxkKGRhdGEpXG4gICAgaWYoc2VlbltrZXldKSByZXR1cm4gISFpbnZlcnQgLy9mYWxzZSwgYnkgZGVmYXVsdFxuICAgIGVsc2Ugc2VlbltrZXldID0gdHJ1ZVxuICAgIHJldHVybiAhaW52ZXJ0IC8vdHJ1ZSBieSBkZWZhdWx0XG4gIH0pXG59XG5cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYWJvcnRDYihjYiwgYWJvcnQsIG9uQWJvcnQpIHtcbiAgY2IoYWJvcnQpXG4gIG9uQWJvcnQgJiYgb25BYm9ydChhYm9ydCA9PT0gdHJ1ZSA/IG51bGw6IGFib3J0KVxuICByZXR1cm5cbn1cblxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwcm9wIChrZXkpIHtcbiAgcmV0dXJuIGtleSAmJiAoXG4gICAgJ3N0cmluZycgPT0gdHlwZW9mIGtleVxuICAgID8gZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGFba2V5XSB9XG4gICAgOiAnb2JqZWN0JyA9PT0gdHlwZW9mIGtleSAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2Yga2V5LmV4ZWMgLy9yZWdleHBcbiAgICA/IGZ1bmN0aW9uIChkYXRhKSB7IHZhciB2ID0ga2V5LmV4ZWMoZGF0YSk7IHJldHVybiB2ICYmIHZbMF0gfVxuICAgIDoga2V5XG4gIClcbn1cbiIsInZhciBwcm9wID0gcmVxdWlyZSgnLi9wcm9wJylcblxuZnVuY3Rpb24gaWQgKGUpIHsgcmV0dXJuIGUgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRlc3RlciAodGVzdCkge1xuICByZXR1cm4gKFxuICAgICdvYmplY3QnID09PSB0eXBlb2YgdGVzdCAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2YgdGVzdC50ZXN0IC8vcmVnZXhwXG4gICAgPyBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gdGVzdC50ZXN0KGRhdGEpIH1cbiAgICA6IHByb3AgKHRlc3QpIHx8IGlkXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgc291cmNlcyAgPSByZXF1aXJlKCcuL3NvdXJjZXMnKVxudmFyIHNpbmtzICAgID0gcmVxdWlyZSgnLi9zaW5rcycpXG52YXIgdGhyb3VnaHMgPSByZXF1aXJlKCcuL3Rocm91Z2hzJylcblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9wdWxsJylcblxuZm9yKHZhciBrIGluIHNvdXJjZXMpXG4gIGV4cG9ydHNba10gPSBzb3VyY2VzW2tdXG5cbmZvcih2YXIgayBpbiB0aHJvdWdocylcbiAgZXhwb3J0c1trXSA9IHRocm91Z2hzW2tdXG5cbmZvcih2YXIgayBpbiBzaW5rcylcbiAgZXhwb3J0c1trXSA9IHNpbmtzW2tdXG5cbiJdfQ== | |
var pull = require('pull-stream') | |
var paramap = require('pull-paramap') | |
pull( | |
pull.values([1, 2, 3, 4, 5]), | |
paramap(function (amount, cb) { | |
pull( | |
pull.infinite(Math.random), | |
pull.take(amount), | |
pull.collect(cb) | |
) | |
}), | |
pull.filter(arr => arr.length > 2), | |
pull.drain(arr => console.log(arr)) | |
) | |
;}, 0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "requirebin-sketch", | |
"version": "1.0.0", | |
"dependencies": { | |
"pull-paramap": "1.1.6", | |
"pull-stream": "3.4.5" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- contents of this file will be placed inside the <body> --> | |
<main></main> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- contents of this file will be placed inside the <head> --> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment