Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/atob/browser-atob.js b/node_modules/atob/browser-atob.js
new file mode 100644
index 0000000..af4f357
--- /dev/null
+++ b/node_modules/atob/browser-atob.js
@@ -0,0 +1,44 @@
+(function (w) {
+  "use strict";
+
+  function findBest(atobNative) {
+    // normal window
+    if ('function' === typeof atobNative) { return atobNative; }
+
+
+    // browserify (web worker)
+    if ('function' === typeof Buffer) {
+      return function atobBrowserify(a) {
+        //!! Deliberately using an API that's deprecated in node.js because
+        //!! this file is for browsers and we expect them to cope with it.
+        //!! Discussion: github.com/node-browser-compat/atob/pull/9
+        return new Buffer(a, 'base64').toString('binary');
+      };
+    }
+
+    // ios web worker with base64js
+    if ('object' === typeof w.base64js) {
+      // bufferToBinaryString
+      // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50
+      return function atobWebWorker_iOS(a) {
+        var buf = w.base64js.b64ToByteArray(a);
+        return Array.prototype.map.call(buf, function (ch) {
+          return String.fromCharCode(ch);
+        }).join('');
+      };
+    }
+
+		return function () {
+			// ios web worker without base64js
+			throw new Error("You're probably in an old browser or an iOS webworker." +
+				" It might help to include beatgammit's base64-js.");
+    };
+  }
+
+  var atobBest = findBest(w.atob);
+  w.atob = atobBest;
+
+  if ((typeof module === 'object') && module && module.exports) {
+    module.exports = atobBest;
+  }
+}(window));