diff --git a/libs/lz-string.js b/libs/lz-string.js
index de663ae..421dd09 100644
--- a/libs/lz-string.js
+++ b/libs/lz-string.js
@@ -13,16 +13,16 @@ var LZString = (function() {
 var f = String.fromCharCode;
 var keyStrBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 var keyStrUriSafe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$";
-var baseReverseDic = {};
+var baseReverseDic = new Map();
 
 function getBaseValue(alphabet, character) {
-  if (!baseReverseDic[alphabet]) {
-    baseReverseDic[alphabet] = {};
+  if (!baseReverseDic.has(alphabet)) {
+    baseReverseDic.set(alphabet, new Map());
     for (var i=0 ; i<alphabet.length ; i++) {
-      baseReverseDic[alphabet][alphabet.charAt(i)] = i;
+      baseReverseDic.get(alphabet).set(alphabet.charAt(i), i);
     }
   }
-  return baseReverseDic[alphabet][character];
+  return baseReverseDic.get(alphabet).get(character);
 }
 
 var LZString = {
@@ -109,8 +109,8 @@ var LZString = {
   _compress: function (uncompressed, bitsPerChar, getCharFromInt) {
     if (uncompressed == null) return "";
     var i, value,
-        context_dictionary= {},
-        context_dictionaryToCreate= {},
+        context_dictionary= new Map(),
+        context_dictionaryToCreate= new Map(),
         context_c="",
         context_wc="",
         context_w="",
@@ -124,16 +124,16 @@ var LZString = {
 
     for (ii = 0; ii < uncompressed.length; ii += 1) {
       context_c = uncompressed.charAt(ii);
-      if (!Object.prototype.hasOwnProperty.call(context_dictionary,context_c)) {
-        context_dictionary[context_c] = context_dictSize++;
-        context_dictionaryToCreate[context_c] = true;
+      if (!context_dictionary.has(context_c)) {
+        context_dictionary.set(context_c, context_dictSize++);
+        context_dictionaryToCreate.set(context_c, true);
       }
 
       context_wc = context_w + context_c;
-      if (Object.prototype.hasOwnProperty.call(context_dictionary,context_wc)) {
+      if (context_dictionary.has(context_wc)) {
         context_w = context_wc;
       } else {
-        if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {
+        if (context_dictionaryToCreate.has(context_w)) {
           if (context_w.charCodeAt(0)<256) {
             for (i=0 ; i<context_numBits ; i++) {
               context_data_val = (context_data_val << 1);
@@ -188,9 +188,9 @@ var LZString = {
             context_enlargeIn = Math.pow(2, context_numBits);
             context_numBits++;
           }
-          delete context_dictionaryToCreate[context_w];
+          context_dictionaryToCreate.delete(context_w);
         } else {
-          value = context_dictionary[context_w];
+          value = context_dictionary.get(context_w);
           for (i=0 ; i<context_numBits ; i++) {
             context_data_val = (context_data_val << 1) | (value&1);
             if (context_data_position == bitsPerChar-1) {
@@ -211,14 +211,14 @@ var LZString = {
           context_numBits++;
         }
         // Add wc to the dictionary.
-        context_dictionary[context_wc] = context_dictSize++;
+        context_dictionary.set(context_wc, context_dictSize++);
         context_w = String(context_c);
       }
     }
 
     // Output the code for w.
     if (context_w !== "") {
-      if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {
+      if (context_dictionaryToCreate.has(context_w)) {
         if (context_w.charCodeAt(0)<256) {
           for (i=0 ; i<context_numBits ; i++) {
             context_data_val = (context_data_val << 1);
@@ -273,9 +273,9 @@ var LZString = {
           context_enlargeIn = Math.pow(2, context_numBits);
           context_numBits++;
         }
-        delete context_dictionaryToCreate[context_w];
+        context_dictionaryToCreate.delete(context_w);
       } else {
-        value = context_dictionary[context_w];
+        value = context_dictionary.get(context_w);
         for (i=0 ; i<context_numBits ; i++) {
           context_data_val = (context_data_val << 1) | (value&1);
           if (context_data_position == bitsPerChar-1) {