## Stats from current release

Click to expand stats ⚠ Total Bundle Size Increase ⚠

| | zeit/next.js master | zeit/next.js refs/tags/v9.0.3-canary.6 | Change |
| - | - | - | - |
| Build Duration | 13.4s | 13.3s | -138ms |
| `node_modules` Size | 45.4 MB | 45.9 MB | ⚠  +416 kB |
| Total Bundle (main, webpack, commons) Size | 206 kB | 206 kB | ⚠  +52 B |
| Total Bundle (main, webpack, commons) gzip Size | 67.8 kB | 67.9 kB | ⚠  +73 B |
| Client `_app` Size | 2.39 kB | 2.39 kB | ✓ |
| Client `_app` gzip Size | 1.08 kB | 1.08 kB | ✓ |
| Client `_error` Size | 8.45 kB | 8.22 kB | -228 B |
| Client `_error` gzip Size | 3.24 kB | 3.16 kB | -75 B |
| Client `pages/index` Size | 343 B | 343 B | ✓ |
| Client `pages/index` gzip Size | 246 B | 246 B | ✓ |
| Client `pages/link` Size | 4.14 kB | 4.08 kB | -56 B |
| Client `pages/link` gzip Size | 1.82 kB | 1.8 kB | -20 B |
| Client `pages/routerDirect` Size | 423 B | 423 B | ✓ |
| Client `pages/routerDirect` gzip Size | 306 B | 306 B | ✓ |
| Client `pages/withRouter` Size | 435 B | 435 B | ✓ |
| Client `pages/withRouter` gzip Size | 301 B | 301 B | ✓ |
| Client `main` Size | 19.8 kB | 15.6 kB | -4.18 kB |
| Client `main` gzip Size | 6.78 kB | 5.39 kB | -1.38 kB |
| Client `commons` Size | 184 kB | 188 kB | ⚠  +4.23 kB |
| Client `commons` gzip Size | 59.7 kB | 61.1 kB | ⚠  +1.46 kB |
| Client `webpack` Size | 1.49 kB | 1.49 kB | ✓ |
| Client `webpack` gzip Size | 770 B | 770 B | ✓ |
| Base Rendered Size | 1.34 kB | 1.35 kB | ⚠  +6 B |
| Build Dir Size | 738 kB | 703 kB | -34.7 kB |

Click to expand serverless stats ⚠ Total Bundle Size Increase ⚠

| | zeit/next.js master | zeit/next.js refs/tags/v9.0.3-canary.6 | Change |
| - | - | - | - |
| Build Duration | 13.9s | 14.1s | ⚠  +158ms |
| `node_modules` Size | 45.4 MB | 45.9 MB | ⚠  +416 kB |
| Total Bundle (main, webpack, commons) Size | 206 kB | 206 kB | ⚠  +52 B |
| Total Bundle (main, webpack, commons) gzip Size | 67.8 kB | 67.9 kB | ⚠  +73 B |
| Client `_app` Size | 2.39 kB | 2.39 kB | ✓ |
| Client `_app` gzip Size | 1.08 kB | 1.08 kB | ✓ |
| Client `_error` Size | 8.45 kB | 8.22 kB | -228 B |
| Client `_error` gzip Size | 3.24 kB | 3.16 kB | -75 B |
| Client `pages/index` Size | 343 B | 343 B | ✓ |
| Client `pages/index` gzip Size | 246 B | 246 B | ✓ |
| Client `pages/link` Size | 4.14 kB | 4.08 kB | -56 B |
| Client `pages/link` gzip Size | 1.82 kB | 1.8 kB | -20 B |
| Client `pages/routerDirect` Size | 423 B | 423 B | ✓ |
| Client `pages/routerDirect` gzip Size | 306 B | 306 B | ✓ |
| Client `pages/withRouter` Size | 435 B | 435 B | ✓ |
| Client `pages/withRouter` gzip Size | 301 B | 301 B | ✓ |
| Client `main` Size | 19.8 kB | 15.6 kB | -4.18 kB |
| Client `main` gzip Size | 6.78 kB | 5.39 kB | -1.38 kB |
| Client `commons` Size | 184 kB | 188 kB | ⚠  +4.23 kB |
| Client `commons` gzip Size | 59.7 kB | 61.1 kB | ⚠  +1.46 kB |
| Client `webpack` Size | 1.49 kB | 1.49 kB | ✓ |
| Client `webpack` gzip Size | 770 B | 770 B | ✓ |
| Serverless `pages/link` Size | 338 kB | 252 kB | -86.4 kB |
| Serverless `pages/link` gzip Size | 86.9 kB | 67.9 kB | -18.9 kB |
| Serverless `pages/index` Size | 329 kB | 244 kB | -84.8 kB |
| Serverless `pages/index` gzip Size | 84.4 kB | 65.8 kB | -18.7 kB |
| Serverless `pages/_error` Size | 329 kB | 244 kB | -84.7 kB |
| Serverless `pages/_error` gzip Size | 84.2 kB | 65.5 kB | -18.7 kB |
| Serverless `pages/routerDirect` Size | 330 kB | 245 kB | -84.8 kB |
| Serverless `pages/routerDirect` gzip Size | 84.4 kB | 65.7 kB | -18.7 kB |
| Serverless `pages/withRouter` Size | 330 kB | 245 kB | -84.8 kB |
| Serverless `pages/withRouter` gzip Size | 84.4 kB | 65.8 kB | -18.5 kB |
| Build Dir Size | 2.26 MB | 1.89 MB | -373 kB |

        Diff for commons.js

```diff

@@ -21,6 +21,35 @@ module.exports = __webpack_require__("WEpk").Object.getPrototypeOf;

 /***/ }),

+/***/ "+wdc":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/** @license React v0.13.6
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+Object.defineProperty(exports,"__esModule",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}
+function u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if("function"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=
+b}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}
+var x=Date,y="function"===typeof setTimeout?setTimeout:void 0,z="function"===typeof clearTimeout?clearTimeout:void 0,A="function"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B="function"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}
+if("object"===typeof performance&&"function"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null; true?G=window:undefined;
+if(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if( false||"function"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{"undefined"!==typeof console&&("function"!==typeof A&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),
+"function"!==typeof B&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};
+var V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;
+exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};
+exports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if("object"===typeof b&&null!==b&&"number"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());
+b=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};
+exports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};
+
+
+/***/ }),
+
 /***/ "/eQG":
 /***/ (function(module, exports, __webpack_require__) {

@@ -391,36 +420,6 @@ var objectKeys = Object.keys || function (obj) {

 /***/ }),

-/***/ "4Vye":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__("KI45");
-
-var _defineProperty = _interopRequireDefault(__webpack_require__("hfKm"));
-
-var __importStar = void 0 && (void 0).__importStar || function (mod) {
-  if (mod && mod.__esModule) return mod;
-  var result = {};
-  if (mod != null) for (var k in mod) {
-    if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-  }
-  result["default"] = mod;
-  return result;
-};
-
-(0, _defineProperty["default"])(exports, "__esModule", {
-  value: true
-});
-
-var React = __importStar(__webpack_require__("q1tI"));
-
-exports.RequestContext = React.createContext(null);
-
-/***/ }),
-
 /***/ "4jyI":
 /***/ (function(module, exports, __webpack_require__) {

@@ -3019,6 +3018,7 @@ function () {
     var initialProps = _ref.initialProps,
         pageLoader = _ref.pageLoader,
         App = _ref.App,
+        wrapApp = _ref.wrapApp,
         Component = _ref.Component,
         err = _ref.err,
         subscription = _ref.subscription;
@@ -3096,6 +3096,7 @@ function () {
     this.asPath = as;
     this.sub = subscription;
     this.clc = null;
+    this._wrapApp = wrapApp;

     if (true) {
       // in order for `e.state` to work on the `onpopstate` event
@@ -3582,6 +3583,7 @@ function () {
                 App = this.components['/_app'].Component;
                 _context2.next = 6;
                 return utils_1.loadGetInitialProps(App, {
+                  AppTree: this._wrapApp(App),
                   Component: Component,
                   router: this,
                   ctx: ctx
@@ -4215,6 +4217,19 @@ $export($export.S, 'Promise', { 'try': function (callbackfn) {

 /***/ }),

+/***/ "QCnb":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+if (true) {
+  module.exports = __webpack_require__("+wdc");
+} else {}
+
+
+/***/ }),
+
 /***/ "QMMT":
 /***/ (function(module, exports, __webpack_require__) {

@@ -6640,7 +6655,6 @@ var _interopRequireDefault = __webpack_require__("KI45");

 exports.__esModule = true;
 exports.useRouter = useRouter;
-exports.useRequest = useRequest;
 exports.makePublicRouterInstance = makePublicRouterInstance;
 exports.createRouter = exports.withRouter = exports["default"] = void 0;

@@ -6657,8 +6671,6 @@ exports.NextRouter = _router2.NextRouter;

 var _routerContext = __webpack_require__("9EOK");

-var _requestContext = __webpack_require__("4Vye");
-
 var _withRouter = _interopRequireDefault(__webpack_require__("0Bsm"));

 exports.withRouter = _withRouter["default"];
@@ -6744,10 +6756,6 @@ exports["default"] = _default;

 function useRouter() {
   return _react["default"].useContext(_routerContext.RouterContext);
-}
-
-function useRequest() {
-  return _react["default"].useContext(_requestContext.RequestContext);
 } // INTERNAL APIS
 // -------------
 // (do not use following exports inside the app)

```

        Diff for main.js

```diff

@@ -60,35 +60,6 @@ module.exports = _asyncToGenerator;

 /***/ }),

-/***/ "+wdc":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/** @license React v0.13.6
- * scheduler.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-Object.defineProperty(exports,"__esModule",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}
-function u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if("function"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=
-b}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}
-var x=Date,y="function"===typeof setTimeout?setTimeout:void 0,z="function"===typeof clearTimeout?clearTimeout:void 0,A="function"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B="function"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}
-if("object"===typeof performance&&"function"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null; true?G=window:undefined;
-if(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if( false||"function"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{"undefined"!==typeof console&&("function"!==typeof A&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),
-"function"!==typeof B&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};
-var V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;
-exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};
-exports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if("object"===typeof b&&null!==b&&"number"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());
-b=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};
-exports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};
-
-
-/***/ }),
-
 /***/ "/h46":
 /***/ (function(module, exports, __webpack_require__) {

@@ -216,13 +187,22 @@ function () {
     key: "updateElements",
     value: function updateElements(type, components) {
       var headEl = document.getElementsByTagName('head')[0];
-      var oldTags = Array.prototype.slice.call(headEl.querySelectorAll(type + '.next-head'));
+      var headCountEl = headEl.querySelector('meta[name=next-head-count]');
+      var headCount = Number(headCountEl.content);
+      var oldTags = [];
+
+      for (var i = 0, j = headCountEl.previousElementSibling; i < headCount; i++, j = j.previousElementSibling) {
+        if (j.tagName.toLowerCase() === type) {
+          oldTags.push(j);
+        }
+      }
+
       var newTags = components.map(reactElementToDOM).filter(function (newTag) {
-        for (var i = 0, len = oldTags.length; i < len; i++) {
-          var oldTag = oldTags[i];
+        for (var k = 0, len = oldTags.length; k < len; k++) {
+          var oldTag = oldTags[k];

           if (oldTag.isEqualNode(newTag)) {
-            oldTags.splice(i, 1);
+            oldTags.splice(k, 1);
             return false;
           }
         }
@@ -233,8 +213,9 @@ function () {
         return t.parentNode.removeChild(t);
       });
       newTags.forEach(function (t) {
-        return headEl.appendChild(t);
+        return headEl.insertBefore(t, headCountEl);
       });
+      headCountEl.content = (headCount - oldTags.length + newTags.length).toString();
     }
   }]);
   return HeadManager;
@@ -588,6 +569,7 @@ function () {
               pageLoader: pageLoader,
               App: App,
               Component: Component,
+              wrapApp: wrapApp,
               err: initialErr,
               subscription: function subscription(_ref3, App) {
                 var Component = _ref3.Component,
@@ -688,7 +670,7 @@ function _renderError() {
   _renderError = (0, _asyncToGenerator2["default"])(
   /*#__PURE__*/
   _regenerator["default"].mark(function _callee3(props) {
-    var App, err, initProps;
+    var App, err, appCtx, initProps;
     return _regenerator["default"].wrap(function _callee3$(_context3) {
       while (1) {
         switch (_context3.prev = _context3.next) {
@@ -711,19 +693,11 @@ function _renderError() {

           case 6:
             exports.ErrorComponent = ErrorComponent = _context3.sent;
-
-            if (!props.props) {
-              _context3.next = 11;
-              break;
-            }
-
-            _context3.t0 = props.props;
-            _context3.next = 14;
-            break;
-
-          case 11:
-            _context3.next = 13;
-            return (0, _utils.loadGetInitialProps)(App, {
+            // In production we do a normal render with the `ErrorComponent` as component.
+            // If we've gotten here upon initial render, we can use the props from the server.
+            // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+            appCtx = {
+              AppTree: wrapApp(App),
               Component: ErrorComponent,
               router: router,
               ctx: {
@@ -732,21 +706,34 @@ function _renderError() {
                 query: query,
                 asPath: asPath
               }
-            });
+            };

-          case 13:
-            _context3.t0 = _context3.sent;
+            if (!props.props) {
+              _context3.next = 12;
+              break;
+            }
+
+            _context3.t0 = props.props;
+            _context3.next = 15;
+            break;
+
+          case 12:
+            _context3.next = 14;
+            return (0, _utils.loadGetInitialProps)(App, appCtx);

           case 14:
+            _context3.t0 = _context3.sent;
+
+          case 15:
             initProps = _context3.t0;
-            _context3.next = 17;
+            _context3.next = 18;
             return doRender((0, _extends2["default"])({}, props, {
               err: err,
               Component: ErrorComponent,
               props: initProps
             }));

-          case 17:
+          case 18:
           case "end":
             return _context3.stop();
         }
@@ -791,6 +778,17 @@ function AppContainer(_ref4) {
   }, children)))));
 }

+var wrapApp = function wrapApp(App) {
+  return function (props) {
+    var appProps = (0, _extends2["default"])({}, props, {
+      Component: Component,
+      err: err,
+      router: router
+    });
+    return _react["default"].createElement(AppContainer, null, _react["default"].createElement(App, appProps));
+  };
+};
+
 function doRender(_x4) {
   return _doRender.apply(this, arguments);
 }
@@ -799,7 +797,7 @@ function _doRender() {
   _doRender = (0, _asyncToGenerator2["default"])(
   /*#__PURE__*/
   _regenerator["default"].mark(function _callee4(_ref5) {
-    var App, Component, props, err, _router2, pathname, _query, _asPath, appProps;
+    var App, Component, props, err, _router2, pathname, _query, _asPath, appCtx, appProps;

     return _regenerator["default"].wrap(function _callee4$(_context4) {
       while (1) {
@@ -809,35 +807,37 @@ function _doRender() {
             // this is for when ErrorComponent gets replaced by Component by HMR

             if (!(!props && Component && Component !== ErrorComponent && lastAppProps.Component === ErrorComponent)) {
-              _context4.next = 6;
+              _context4.next = 7;
               break;
             }

             _router2 = router, pathname = _router2.pathname, _query = _router2.query, _asPath = _router2.asPath;
-            _context4.next = 5;
-            return (0, _utils.loadGetInitialProps)(App, {
-              Component: Component,
+            appCtx = {
               router: router,
+              AppTree: wrapApp(App),
+              Component: ErrorComponent,
               ctx: {
                 err: err,
                 pathname: pathname,
                 query: _query,
                 asPath: _asPath
               }
-            });
+            };
+            _context4.next = 6;
+            return (0, _utils.loadGetInitialProps)(App, appCtx);

-          case 5:
+          case 6:
             props = _context4.sent;

-          case 6:
+          case 7:
             Component = Component || lastAppProps.Component;
             props = props || lastAppProps.props;
-            appProps = (0, _extends2["default"])({
+            appProps = (0, _extends2["default"])({}, props, {
               Component: Component,
               err: err,
-              router: router
-            }, props); // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.
+              router: router // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.

+            });
             lastAppProps = appProps;
             emitter.emit('before-reactdom-render', {
               Component: Component,
@@ -852,7 +852,7 @@ function _doRender() {
               appProps: appProps
             });

-          case 13:
+          case 14:
           case "end":
             return _context4.stop();
         }
@@ -879,19 +879,6 @@ module.exports = __webpack_require__("HohS")

 /***/ }),

-/***/ "QCnb":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-if (true) {
-  module.exports = __webpack_require__("+wdc");
-} else {}
-
-
-/***/ }),
-
 /***/ "UDep":
 /***/ (function(module, exports, __webpack_require__) {

@@ -1252,6 +1239,9 @@ function () {
                 route = _this.normalizeRoute(route);
                 scriptRoute = route === '/' ? '/index.js' : route + ".js";
                 script = document.createElement('script');
+
+                if (false) {}
+
                 url = _this.assetPrefix + "/_next/static/" + encodeURIComponent(_this.buildId) + "/pages" + scriptRoute;
                 script.crossOrigin = undefined;
                 script.src = url;
@@ -1267,7 +1257,7 @@ function () {

                 document.body.appendChild(script);

-              case 10:
+              case 11:
               case "end":
                 return _context.stop();
             }
@@ -1327,40 +1317,42 @@ function () {
                 route = _this2.normalizeRoute(route);
                 scriptRoute = (route === '/' ? '/index' : route) + ".js";

+                if (false) {}
+
                 if (!(_this2.prefetchCache.has(scriptRoute) || document.getElementById("__NEXT_PAGE__" + route))) {
-                  _context2.next = 4;
+                  _context2.next = 5;
                   break;
                 }

                 return _context2.abrupt("return");

-              case 4:
+              case 5:
                 _this2.prefetchCache.add(scriptRoute); // Inspired by quicklink, license: https://github.com/GoogleChromeLabs/quicklink/blob/master/LICENSE
                 // Don't prefetch if the user is on 2G / Don't prefetch if Save-Data is enabled

                 if (!('connection' in navigator)) {
-                  _context2.next = 8;
+                  _context2.next = 9;
                   break;
                 }

                 if (!((navigator.connection.effectiveType || '').indexOf('2g') !== -1 || navigator.connection.saveData)) {
-                  _context2.next = 8;
+                  _context2.next = 9;
                   break;
                 }

                 return _context2.abrupt("return");

-              case 8:
+              case 9:
                 if (!hasPreload) {
-                  _context2.next = 18;
+                  _context2.next = 19;
                   break;
                 }

-                _context2.next = 11;
+                _context2.next = 12;
                 return _this2.promisedBuildId;

-              case 11:
+              case 12:
                 link = document.createElement('link');
                 link.rel = 'preload';
                 link.crossOrigin = undefined;
@@ -1369,15 +1361,15 @@ function () {
                 document.head.appendChild(link);
                 return _context2.abrupt("return");

-              case 18:
+              case 19:
                 if (!(document.readyState === 'complete')) {
-                  _context2.next = 22;
+                  _context2.next = 23;
                   break;
                 }

                 return _context2.abrupt("return", _this2.loadPage(route)["catch"](function () {}));

-              case 22:
+              case 23:
                 return _context2.abrupt("return", new _promise["default"](function (resolve) {
                   window.addEventListener('load', function () {
                     _this2.loadPage(route).then(function () {
@@ -1388,7 +1380,7 @@ function () {
                   });
                 }));

-              case 23:
+              case 24:
               case "end":
                 return _context2.stop();
             }

```


Also forces `long`, `needsArg`, and the new `isHelpCommand` to be keyworded parameters, as they have no necessary order and are all optional


Automated Test Suite Message


Remember that `!(a || b)` is the same as `!a && !b`. I am sure you can reduce the number of parentheses.


TeamCity Bvcms / Build [Build 1599](https://builds.tpsdb.com/viewLog.html?buildId=7487&buildTypeId=Bvcms_Build) is now running


Successfully aliased the URL <https://personal-proj-rmfgggt68.now.sh> to the following aliases:

* https://dnd.dallenhoyal.com
* https://personal-proj.dallenhoyal.now.sh
* https://personal-proj-git-master.dallenhoyal.now.sh


So there may be a situation where you update only splitter1 and not splitter2. Is this what you want to achieve?
Or instead do you want to update both recipients or none of them?


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

end of the stream or a document separator is expected at line 11, column 1:
    mozilla
    ^

</details>


Successfully aliased the URL <https://babangsundcom-mltlxzr4k.now.sh> to the following aliases:

* https://babangsund.com
* https://babangsundcom.babangsund.now.sh
* https://babangsundcom-git-master.babangsund.now.sh


[vg CI tests](https://ucsc-ci.com/vgteam/vg/pipelines/1228) complete for merge to master.  View the [full report here](http://vg-data.s3.amazonaws.com/vg_ci/vgci_reports/branch/master/index.html).

19 tests passed, 0 tests failed and 0 tests skipped in 12900 seconds

Tests produced 791 warnings. 791 were for lower-than-expected alignment scores


I will tray again later. Thanks for all Luiz.


Successfully aliased the URL <https://monorepo-bvkvvwxs9.now.sh> to the following aliases:

* https://monorepo.storybook.now.sh
* https://monorepo-git-next.storybook.now.sh


Successfully aliased the URL <https://guoguo-ficovfmxe.now.sh> to the following alias:

* https://guoguo-git-master.cuiqg.now.sh


Now could not deploy this pull request since the `now.json` file does not contain valid JSON.

	Click here to see the contents of `now.json`

{
    "version": 2,
    "name": "guoguo",
    "alias": ["guoguo.now.sh"],
    "builds": [
        { "src": "*.html", "use": "@now/static"},
        { "src": "*.php", "use": "@now/php" }
    ],
    "routes": [
    ],
    "env": {
        "ALIPAY": "HTTPS://QR.ALIPAY.COM/FKX080459IRTOPQMT78KD4",
        "WEPAY": "wxp://f2f05K0L9oPozy8iBH1YQSYiBefjPbO5HdGI",
    },
    "regions": ["all"],
    "public": true,
    "github": {
        "autoAlias": false
    }
}

For more information on now.json visit https://zeit.co/docs/features/configuration#now.json.


Successfully aliased the URL <https://theglamourist-n27zhhdr1.now.sh> to the following aliases:

* https://theglamourist.com
* https://www.theglamourist.com
* https://theglamour.ist
* https://theglamourist.visnup.now.sh
* https://theglamourist-git-master.visnup.now.sh


Successfully aliased the URL <https://wikichronica-1wafn3pwu.now.sh> to the following aliases:

* https://wiki.chronica.xyz
* https://www.wiki.chronica.xyz
* https://wikichronica.ckipp01.now.sh
* https://wikichronica-git-master.ckipp01.now.sh


Лучше задавай пустой массив просто как [], если не нужны дефолтные значения


лучше вместо Hash.new использовать {}


This straight up doesn't work. Just pushed to get it off my machine. As soon as the `if` on `src/host/screenInfo.cpp:1676` exits, the endResize is cleaned up, and that's bad. We should probably use a real raii type somehow.

In chat I mentioned
```c++
unique_any<VtIo, decltype(VtIo::_EndResize), VtIo::_EndResize)> vtio_resize_lock_t
```
but that seems weird too, and I have no idea if that would work.


Successfully aliased the URL <https://theglamourist-g5pvws6k9.now.sh> to the following aliases:

* https://theglamourist.com
* https://www.theglamourist.com
* https://theglamour.ist
* https://theglamourist.visnup.now.sh
* https://theglamourist-git-master.visnup.now.sh


test


stratified_tank_adaptive_internal_dt (nmerket) - x86_64-Linux-Ubuntu-18.04-gcc-7.4-UnitTestsCoverage-Debug: OK (1128 of 1128 tests passed, 0 test warnings)

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-100.0%25-green.png) ![Coverage Badge](http://img.shields.io/badge/coverage%20status-42.41%25-green.png)


Если что - есть метод each.with_index(), где можно выбрать стартовое значение для индекса - https://aaronlasseigne.com/2016/05/24/know-ruby-with_index/


Successfully aliased the URL <https://guoguo-ree02vfuj.now.sh> to the following alias:

* https://guoguo-git-master.cuiqg.now.sh


To maintain code style in sugar, use a list instead of a tuple.


TeamCity Bvcms / Build [Build 1599](https://builds.tpsdb.com/viewLog.html?buildId=7487&buildTypeId=Bvcms_Build) outcome was **SUCCESS**
Summary: Tests passed: 49 Build time: 00:13:36


RU has a URL class, and the above might be safer with:
```
url = ru.Url (job_manager_endpoint)
schema, hostname = url.schema, url.hostname
if '+' in schema:
    rm, access = schema.split('+')
else:
    rm, access = [schema, None]
```


Maybe come back to it? I don't think auspice will use the information currently. Definitely think it'd be valuable to support, but in general adding in options to `augur export v2` is a lot easier than removing them / changing them.


@Simonwep I noticed with this change that the tap on the button show the overlay above the button, where it previously was shown relative to this button (and I think it respected the position in the configuration). Is it intended it always should be in center of screen on mobile devices?

**Before**
![Screenshot_20190727-235358_Chrome](https://user-images.githubusercontent.com/2919859/62169004-3f621600-b327-11e9-91a1-4c979df2f3ba.jpg)

 **After**
![Screenshot_20190731-000207_Chrome](https://user-images.githubusercontent.com/2919859/62168963-2a858280-b327-11e9-9239-53394c23dcbd.jpg)


Посмотри на методы sum и take - они есть в свежих версиях руби. С ними можно изящнее сделать.


we'll be tackling this in the underlying ARA SDK instead, since this could be useful even without JUCE


Лучше в одну строку - `break if entry == "стоп"`


windows.json → ws2019.json


Оооой, давай не использовать в качестве ключей строки, тем более содержащие кириллицу. Вместо этого же есть символы.


Awesome work Ian. :shipit:


Successfully aliased the URL <https://petgram-rf5lwgffv.now.sh> to the following aliases:

* https://petgram.malagon91.now.sh
* https://petgram-git-develop.malagon91.now.sh


[![Visit Site](https://raw.githubusercontent.com/pantheon-systems/ci-drops-8/0.1.0/data/img/visit-site-36.png)](https://pr-38-aledade.pantheonsite.io/)

Created multidev environment [pr-38](https://dashboard.pantheon.io/sites/533c69ec-70af-4cb2-af59-49d50e7d05f7#pr-38) for aledade.


Переусложнил. Не надо тут все форматировать так, достаточно просто хэша


Hola


I think this would need to be declared as a Long from the get-go in Cloud Sim. A bandaid for now?


Отступы поплыли ) Надо поправить


Не надо два раза вычислять корень. Вместо этого лучше присвоить результат вычисления переменной и использовать ее.


# Specs execution successful
:scroll: [View logs](http://bamboo.comnull)
### Plans updated

Bamboo specs have been successfully imported and the following plans have been updated.

Project | Plan | Build
---|---|---
[Test](http://bamboo.com/browse/TEST) | [Comment test](http://bamboo.com/browse/TEST-CTEST)  | :white_check_mark: [\#1](http://bamboo.com/browse/TEST-CTEST-1)
[New project](http://bamboo.com/browse/NEW) | [Disabled plan](http://bamboo.com/browse/NEW-DISABLED) **disabled** | :white_check_mark: [\#1](http://bamboo.com/browse/NEW-DISABLED-1)

### Deployments updated

Bamboo specs have been successfully imported and the following deployment projects have been updated.

|Deployment project |
----|
[Deployment test](http://bamboo.com/deploy/viewDeploymentProjectVersions.action?id=2162689)|


Now could not deploy this pull request since the `now.json` file does not contain valid JSON.

	Click here to see the contents of `now.json`

{this-is-not-json}

For more information on now.json visit https://zeit.co/docs/features/configuration#now.json.


Deployment failed with the following error:

~~~
You defined 1 build that did not match any source files (please ensure they are NOT defined in .nowignore):
~~~


Successfully aliased the URL <https://github-e2e-tests-production-alias-v1-with-alias-zpxhnuomnl.now.sh> to the following alias:

* https://github-e2e-production-with-v1-alias.now.sh


Successfully aliased the URL <https://github-e2e-tests-production-alias-v2-without-alias-46dnpham5.now.sh> to the following aliases:

* https://github-e2e-tests-production-alias-v2-without-alias.zeit-github-test-production1.now.sh
* https://github-e2e-tests-production-alias-v2-without-alias-git-master.zeit-github-test-production1.now.sh


Successfully aliased the URL <https://github-e2e-tests-production-alias-v2-with-alias-om9lnuagj.now.sh> to the following aliases:

* https://github-e2e-production-with-v2-alias.now.sh
* https://github-e2e-tests-production-alias-v2-with-alias.zeit-github-test-production1.now.sh
* https://github-e2e-tests-production-alias-v2-with-alias-git-master.zeit-github-test-production1.now.sh


Можно сделать хитрый ход:
```
a, b, h = [side_a, side_b, side_c].sort
```

Это эквивалентно пяти строкам выше


Successfully aliased the URL <https://guoguo-2wqche9nm.now.sh> to the following alias:

* https://guoguo-git-master.cuiqg.now.sh


FYI the stack commits are suggested to be needing some more in-depth testing for stability and performance, so just keep that in mind.


Hello @swilgosz! After following your lecture one assertion is still failing for me. Could you please take a look at the output below? I've tried setting `old_article = create :article, created_at: 1.hour.ago` but it didn't solve it. Thank you!

Failures:

  1) ArticlesController#index should return proper json
     Failure/Error:
       it 'should return articles in the proper order' do
         old_article = create :article
         newer_article = create :article
         subject
         expect(json_data.first['id']).to eq(newer_article.id.to_s)
         expect(json_data.last['id']).to eq(old_article.id.to_s)
       end

       `it` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).


@JuliaRegistrator register


When an edge agent sends the `org.sovrin.router/stored_msgs` query to its upstream router agent, it includes the tags for all of the messages which it has already received. So, the router no longer returns _all_ the messages it has ever stored, but only newer ones. This should improve bandwidth, as a list of tags is much shorter than a list of messages. I retained the filtering in the `process_each_message_ rule as a sanity check, but this could now be removed?


Deployment failed with the following error:

~~~
Your `package.json` file is missing a `build` property inside the `script` property.
~~~


Error while trying to register: Changing UUIDs is not allowed


kjsndkjwe


Initial commit


![](https://github.trello.services/images/mini-trello-icon.png) [Chapter 2 Question 7](https://trello.com/c/SYkKDg0e/10-chapter-2-question-7)


Hola


What's up


Just about there


My nigga!


@cyberium
You will need this SQL code if you want to test in-game:
```SQL
DELETE FROM gossip_menu_option WHERE menu_id=1882;
DELETE FROM dbscripts_on_gossip WHERE id=1882;

UPDATE creature_template SET ScriptName='npc_regthar_deathgate' WHERE Entry=3389;
```

And steps to test:
- `.go creature id 3389`
- `.quest add 4021`
- Select gossip option "Where is Warlord…" from NPC
- core should crash


Hello


Sup


What is the purpose here?


This line seems to make the core crash with
```
mangosd(1073,0x70000d663000) malloc: *** error for object 0x7fc9e13db800: pointer being freed was not allocated
mangosd(1073,0x70000d663000) malloc: *** set a breakpoint in malloc_error_break to debug
```

But I can't see what's wrong here…


added the project with Quasar, Cordova and HelloJS


Successfully aliased the URL <https://pole2fitness-react-gksgzixpm.now.sh> to the following aliases:

* https://pole2fitness-react.alex-thomas92.now.sh
* https://pole2fitness-react-git-master.alex-thomas92.now.sh


Successfully aliased the URL <https://monorepo-6m0n13dui.now.sh> to the following aliases:

* https://monorepo.storybook.now.sh
* https://monorepo-git-next.storybook.now.sh


@JuliaRegistrator register


Successfully aliased the URL <https://johno-aal2lk5l3.now.sh> to the following aliases:

* https://johno.com
* https://www.johno.com
* https://johno.johno1.now.sh
* https://johno-git-master.johno1.now.sh


А если корень вычислять не надо?


Registration pull request created: [JuliaRegistries/General/2386](https://github.com/JuliaRegistries/General/pull/2386)

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if [Julia TagBot](https://github.com/apps/julia-tagbot) is installed, or can be done manually through the github interface, or via:
```
git tag -a v0.3.0 -m "<description of version>" 8791a1f4d0116764bca7fdfec03f16a137df9c46
git push origin v0.3.0
```


haha..sorry dont know how to submit files here lol


![](https://github.trello.services/images/mini-trello-icon.png) [Models](https://trello.com/c/CmpkgdBX/6-models)


Мы еще забыли что у нас стороны могут быть не только целыми )


Successfully aliased the URL <https://pole2fitness-react-ne0loop8t.now.sh> to the following aliases:

* https://pole2fitness-react.alex-thomas92.now.sh
* https://pole2fitness-react-git-master.alex-thomas92.now.sh


Successfully aliased the URL <https://hacker-next-5irjxgez9.now.sh> to the following aliases:

* https://hacker-next.jolly.now.sh
* https://hacker-next-git-master.jolly.now.sh


I mean, yeah, that's also a valid decision.


This change effectively breaks TPM 2.0 detection in SecurityPkg/Tcg/Tcg2Config/TpmDetection.c
The old flow was:

- Detect if a DTPM exists
- Call Tpm12RequestUseTpm to detect if TPM is 1.2
- If Tpm12RequestUseTpm  returned success, eventually return TPM_DEVICE_1_2
- If Tpm12RequestUseTpm  returned an error, return TPM_DEVICE_2_0_DTPM immediately

Now, dTPM detection is removed and Tpm12RequestUseTpm returning an error returns TPM_DEVICE_NULL.


Do you find the previous version better? "Only strings and lists are appendable."

I made a quick example that gives it in context:

```
-- TYPE MISMATCH ------------------------------------------------------ temp.elm

The (++) operator cannot append this type of value:

6|   text (String.fromInt ({} ++ {}))
                           ^^
I am seeing a record of type:

    {}

But the (++) operator is only for appending List and String values. Maybe put
this value in [] to make it a list?

Hint: I only know how to append strings and lists.
```


167457378-AFN-floating-point-underflow (lgu1234) - Win64-Windows-10-VisualStudio-16: OK (2455 of 2455 tests passed, 0 test warnings)

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-100.0%25-green.png)


Works in gfortran fortran f90 on Windows


167457378-AFN-floating-point-underflow (lgu1234) - x86_64-Linux-Ubuntu-18.04-gcc-7.4-UnitTestsCoverage-Debug: OK (1129 of 1129 tests passed, 0 test warnings)

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-100.0%25-green.png) ![Coverage Badge](http://img.shields.io/badge/coverage%20status-42.4%25-green.png)


Registration pull request created: [JuliaRegistries/General/2388](https://github.com/JuliaRegistries/General/pull/2388)

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if [Julia TagBot](https://github.com/apps/julia-tagbot) is installed, or can be done manually through the github interface, or via:
```
git tag -a v0.1.0 -m "<description of version>" 4b19d44075c98d8531a8c2717df102227754b0d9
git push origin v0.1.0
```


Don’t need to check error code if you’re not going to do anything with it


Successfully aliased the URL <https://babangsundcom-3glkgqimr.now.sh> to the following aliases:

* https://babangsund.com
* https://babangsundcom.babangsund.now.sh
* https://babangsundcom-git-master.babangsund.now.sh


using a single (') in conjunction with (\n\) does not compile in my python editor. Adding (""") allows for line break/carriage returns as entered. This commit will create three lines of text, with the last line a variable text based on calibration step.


fixes https://github.com/data2health/admin/issues/1


Build version: __`3.2.1-renovate/semantic-release-monorepo.287`__ :crossed_fingers: [`renovate/semantic-release-monorepo`](https://github.com/streamich/git-cz/tree/renovate/semantic-release-monorepo) on [*Travis*](https://travis-ci.org/streamich/git-cz/builds/121331696) :tada:


Silly me... It's probably not this line but rather the consequences of what it does.  Something may be wrong in JustSummoned(). I'll look at it tomorrow.


Build version: __`3.2.0-renovate/semantic-release-monorepo.610`__ :crossed_fingers: [`renovate/semantic-release-monorepo`](https://github.com/streamich/md-mdast/tree/renovate/semantic-release-monorepo) on [*CircleCI*](https://circleci.com/gh/streamich/md-mdast/610) :tada:


Teste de comentários pelo celular


Successfully aliased the URL <https://petgram-r7nk4hlmt.now.sh> to the following aliases:

* https://petgram.malagon91.now.sh
* https://petgram-git-develop.malagon91.now.sh


seems like the repository override is required to pull in the openstack rpms?


--------------------------------------------------------------
Results
--------------------------------------------------------------
>     ========================================================
>        Test summary:
>            Passed   0 / 21  tests     (21 failed)
>
>        Score:
>            0.00 points of a possible 21.00  (0.00%)
>     ========================================================


hmmm, this doesn't look quite right to me... for one, it's definitely a breaking change, and for another, I don't think it should be necessary?

I think instead of changing this class at all, we should set static properties on `customError` where it is created...


# Pase 2
Se modifico el archivo x
[Pase 2-Liberacion a Produccion-Modificar Archivo.xlsx](https://github.com/thona-seguros/Repositorio-SicasPruebas/files/3449113/Pase.2-Liberacion.a.Produccion-Modificar.Archivo.xlsx)


-------------------------------------------------------------------------------
  Test 1: Check that new LRUs are initialized with correct storage and size
-------------------------------------------------------------------------------

  >     MaxStorage()                   == 16                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 16
    Received: 0
  >     RemainingStorage()             == 16                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 16
    Received: 0
  >     Len()                          == 0                  ... ok
  >     MaxStorage()                   == 64                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 64
    Received: 0
  >     RemainingStorage()             == 64                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 64
    Received: 0
  >     Len()                          == 0                  ... ok
  >     MaxStorage()                   == 256                ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 256
    Received: 0
  >     RemainingStorage()             == 256                ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 256
    Received: 0
  >     Len()                          == 0                  ... ok
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     RemainingStorage()             == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1024
    Received: 0
  >     Len()                          == 0                  ... ok
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 2: Test storage and size of a small LRU
-------------------------------------------------------------------------------

  >     Set("1234",'1234')             == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("1234",'1234')
    Expected: true
    Received: false
  >     MaxStorage()                   == 16                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 16
    Received: 0
  >     RemainingStorage()             == 8                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 8
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     Set("1234",'1234')             == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("1234",'1234')
    Expected: true
    Received: false
  >     MaxStorage()                   == 64                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 64
    Received: 0
  >     RemainingStorage()             == 56                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 56
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     Set("1234",'1234')             == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("1234",'1234')
    Expected: true
    Received: false
  >     MaxStorage()                   == 256                ... FAIL
    Output from additional subtests was suppressed...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 3: Check that Get fails when called on an empty LRU
-------------------------------------------------------------------------------

  >     Get("hello_world")             == cache_miss         ... ok
  >     Get("key")                     == cache_miss         ... ok
  >     Get("value")                   == cache_miss         ... ok
  >     Get("Get")                     == cache_miss         ... ok
  >     Get("LRU")                     == cache_miss         ... ok
###
                               -- test passed --

-------------------------------------------------------------------------------
  Test 4: Add single binding to an LRU and check its validity
-------------------------------------------------------------------------------

  >     RemainingStorage()             == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1024
    Received: 0
  >     Set("Hello_World",'barbaz')    == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("Hello World",'barbaz')
    Expected: true
    Received: false
  >     RemainingStorage()             == 1007               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1007
    Received: 0
  >     Get("Hello_World")             == cache_hit:<'barbaz'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("Hello World")
    Expected: cache hit:<'barbaz'>
    Received: cache miss
  >     RemainingStorage()             == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1024
    Received: 0
  >     Set("Abracadabra",'Alakazam')  == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("Abracadabra",'Alakazam')
    Expected: true
    Received: false
  >     RemainingStorage()             == 1005               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1005
    Received: 0
  >     Get("Abracadabra")             == cache_hit:<'Alakazam'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("Abracadabra")
    Expected: cache hit:<'Alakazam'>
    Received: cache miss
  >     RemainingStorage()             == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1024
    Received: 0
  >     Set("Key",'Value')             == true               ... FAIL
    Output from additional subtests was suppressed...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 5: Add many bindings to one LRU, check that resulting state is valid
-------------------------------------------------------------------------------

    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 10240
    Received: 0
    ***** Operation failed! *****
    Command:  lru.Set("Hello World0",'barbaz')
    Expected: true
    Received: false
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 10222
    Received: 0
    ***** Operation failed! *****
    Command:  lru.Set("Hello World1",'barbaz')
    Expected: true
    Received: false
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 10204
    Received: 0
    ***** Operation failed! *****
    Command:  lru.Set("Hello World2",'barbaz')
    Expected: true
    Received: false
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 10186
    Received: 0
    ***** Operation failed! *****
    Command:  lru.Set("Hello World3",'barbaz')
    Expected: true
    Output truncated after 40 lines ...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 6: Check items can be added to a 'full' LRU if there's enough memory
-------------------------------------------------------------------------------

  >     Len()                          == 0                  ... ok
  >     Set("____0",'____0')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    0",'    0')
    Expected: true
    Received: false
  >     Set("____1",'____1')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    1",'    1')
    Expected: true
    Received: false
  >     Set("____2",'____2')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    2",'    2')
    Expected: true
    Received: false
  >     Set("____3",'____3')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    3",'    3')
    Expected: true
    Received: false
  >     Len()                          == 3                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 3
    Received: 0
  >     Set("____4",'____4')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    4",'    4')
    Expected: true
    Received: false
  >     Len()                          == 3                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 3
    Received: 0
  >     Set("____5",'____5')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    5",'    5')
    Expected: true
    Received: false
  >     Len()                          == 3                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 3
    Received: 0
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 7: Check that bindings too large for the LRU are rejected
-------------------------------------------------------------------------------

  >     Set(">_____0<",'>_____0<')     == false              ... ok
  >     Get(">_____0<")                == cache_miss         ... ok
  >     Set(">_____1<",'>_____1<')     == false              ... ok
  >     Get(">_____1<")                == cache_miss         ... ok
  >     Set(">_____2<",'>_____2<')     == false              ... ok
  >     Get(">_____2<")                == cache_miss         ... ok
  >     Set(">_____3<",'>_____3<')     == false              ... ok
  >     Get(">_____3<")                == cache_miss         ... ok
  >     Set(">_____4<",'>_____4<')     == false              ... ok
  >     Get(">_____4<")                == cache_miss         ... ok
###
                               -- test passed --

-------------------------------------------------------------------------------
  Test 8: Attempt to construct and add bindings to a 0-capacity LRU
-------------------------------------------------------------------------------

  >     Set("hello",'world')           == false              ... ok
  >     Set("abra",'kadabra')          == false              ... ok
  >     Set("foo",'bar')               == false              ... ok
  >     Set("key",'val')               == false              ... ok
  >     Set("",'')                     == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("",'')
    Expected: true
    Received: false
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 9: Check that the empty string can be used as a valid key
-------------------------------------------------------------------------------

  >     Set("",'Value')                == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("",'Value')
    Expected: true
    Received: false
  >     RemainingStorage()             == 1019               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1019
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     Get("")                        == cache_hit:<'Value'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("")
    Expected: cache hit:<'Value'>
    Received: cache miss
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 10: Check that the empty []byte can be used as a valid value
-------------------------------------------------------------------------------

  >     Set("key",'')                  == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'')
    Expected: true
    Received: false
  >     RemainingStorage()             == 1021               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1021
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     Get("key")                     == cache_hit:<''>     ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<''>
    Received: cache miss
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 11: Check that nil can be used as a valid value
-------------------------------------------------------------------------------

  >     Set("key",'')                  == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'')
    Expected: true
    Received: false
  >     RemainingStorage()             == 1021               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1021
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     Get("key")                     == cache_hit:<''>     ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<''>
    Received: cache miss
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 12: Check that values can be non-ASCII (binary)
-------------------------------------------------------------------------------

  >     Set("key",'\x00\x01�\x15�')    == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'��')
    Expected: true
    Received: false
  >     RemainingStorage()             == 1016               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1016
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     Get("key")                     == cache_hit:<'\x00\x01�\x15�'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'��'>
    Received: cache miss
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 13: Check that keys can be non-ASCII (Unicode)
-------------------------------------------------------------------------------

  >     Set("😂_🚀",'✔_🚗')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("😂 🚀",'✔ 🚗')
    Expected: true
    Received: false
  >     RemainingStorage()             == 1007               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1007
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     Get("😂_🚀")                     == cache_hit:<'✔_🚗'>  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("😂 🚀")
    Expected: cache hit:<'✔ 🚗'>
    Received: cache miss
  >     Set("🚩_🆗",'©_☀')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("🚩 🆗",'© ☀')
    Expected: true
    Received: false
  >     RemainingStorage()             == 1009               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1009
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     Get("🚩_🆗")                     == cache_hit:<'©_☀'>  ... FAIL
    Output from additional subtests was suppressed...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 14: Test that values are overwritten when Set() called with same key
-------------------------------------------------------------------------------

  >     Set("key",'old')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'old')
    Expected: true
    Received: false
  >     Get("key")                     == cache_hit:<'old'>  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'old'>
    Received: cache miss
  >     Set("key",'new')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'new')
    Expected: true
    Received: false
  >     Get("key")                     == cache_hit:<'new'>  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'new'>
    Received: cache miss
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 15: Test that internal state correctly updated when values overwritten
-------------------------------------------------------------------------------

  >     Set("key",'old')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'old')
    Expected: true
    Received: false
  >     Get("key")                     == cache_hit:<'old'>  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'old'>
    Received: cache miss
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     RemainingStorage()             == 1018               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1018
    Received: 0
  >     Set("key",'nw')                == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'nw')
    Expected: true
    Received: false
  >     Get("key")                     == cache_hit:<'nw'>   ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'nw'>
    Received: cache miss
  >     MaxStorage()                   == 1024               ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 1024
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     RemainingStorage()             == 1019               ... FAIL
    Output from additional subtests was suppressed...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 16: Check that removed bindings are no longer accessible
-------------------------------------------------------------------------------

  >     Set("key",'value')             == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'value')
    Expected: true
    Received: false
  >     Get("key")                     == cache_hit:<'value'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'value'>
    Received: cache miss
  >     Remove("key")                  == cache_hit:<'value'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Remove("key")
    Expected: cache hit:<'value'>
    Received: cache miss
  >     Get("key")                     == cache_miss         ... ok
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 17: Check that removed bindings no longer consume storage
-------------------------------------------------------------------------------

  >     Set("__0",'__0')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("  0",'  0')
    Expected: true
    Received: false
  >     Set("__1",'__1')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("  1",'  1')
    Expected: true
    Received: false
  >     Set("__2",'__2')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("  2",'  2')
    Expected: true
    Received: false
  >     Set("__3",'__3')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("  3",'  3')
    Expected: true
    Received: false
  >     Remove("__0")                  == cache_hit:<'__0'>  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Remove("  0")
    Expected: cache hit:<'  0'>
    Received: cache miss
  >     Len()                          == 3                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 3
    Received: 0
  >     RemainingStorage()             == 1006               ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 1006
    Received: 0
  >     Remove("__1")                  == cache_hit:<'__1'>  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Remove("  1")
    Expected: cache hit:<'  1'>
    Received: cache miss
  >     Len()                          == 2                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 2
    Received: 0
  >     RemainingStorage()             == 1012               ... FAIL
    Output from additional subtests was suppressed...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 18: Check that overwriting values doesn't affect removal
-------------------------------------------------------------------------------

  >     Set("key",'old')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'old')
    Expected: true
    Received: false
  >     Get("key")                     == cache_hit:<'old'>  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'old'>
    Received: cache miss
  >     Set("key",'value')             == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'value')
    Expected: true
    Received: false
  >     Get("key")                     == cache_hit:<'value'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'value'>
    Received: cache miss
  >     Remove("key")                  == cache_hit:<'value'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Remove("key")
    Expected: cache hit:<'value'>
    Received: cache miss
  >     Get("key")                     == cache_miss         ... ok
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 19: Attempt to remove a binding from an empty LRU
-------------------------------------------------------------------------------

  >     Remove("key")                  == cache_miss         ... ok
  >     Remove("nada")                 == cache_miss         ... ok
  >     Remove("foo")                  == cache_miss         ... ok
  >     Remove("bar")                  == cache_miss         ... ok
###
                               -- test passed --

-------------------------------------------------------------------------------
  Test 20: Attempt to remove a binding not in the LRU
-------------------------------------------------------------------------------

  >     Remove("key")                  == cache_miss         ... ok
  >     Set("key",'value')             == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("key",'value')
    Expected: true
    Received: false
  >     Get("key")                     == cache_hit:<'value'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("key")
    Expected: cache hit:<'value'>
    Received: cache miss
  >     Remove("key")                  == cache_hit:<'value'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Remove("key")
    Expected: cache hit:<'value'>
    Received: cache miss
  >     Remove("key")                  == cache_miss         ... ok
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 21: Overfill an LRU and check the correct binding is evicted
-------------------------------------------------------------------------------

  >     Set("____0",'____0')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    0",'    0')
    Expected: true
    Received: false
  >     Set("____1",'____1')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    1",'    1')
    Expected: true
    Received: false
  >     Set("____2",'____2')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    2",'    2')
    Expected: true
    Received: false
  >     Set("____3",'____3')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    3",'    3')
    Expected: true
    Received: false
  >     Set("____4",'____4')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    4",'    4')
    Expected: true
    Received: false
  >     Set("____5",'____5')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    5",'    5')
    Expected: true
    Received: false
  >     Set("____6",'____6')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    6",'    6')
    Expected: true
    Received: false
  >     Set("____7",'____7')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    7",'    7')
    Expected: true
    Received: false
  >     Set("____8",'____8')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    8",'    8')
    Expected: true
    Received: false
  >     Set("____9",'____9')           == true               ... FAIL
    Output from additional subtests was suppressed...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 22: Overfill an LRU, Getting some items, then check for correct eviction
-------------------------------------------------------------------------------

  >     Set("____0",'____0')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    0",'    0')
    Expected: true
    Received: false
  >     Set("____1",'____1')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    1",'    1')
    Expected: true
    Received: false
  >     Set("____2",'____2')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    2",'    2')
    Expected: true
    Received: false
  >     Set("____3",'____3')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    3",'    3')
    Expected: true
    Received: false
  >     Set("____4",'____4')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    4",'    4')
    Expected: true
    Received: false
  >     Set("____5",'____5')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    5",'    5')
    Expected: true
    Received: false
  >     Set("____6",'____6')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    6",'    6')
    Expected: true
    Received: false
  >     Set("____7",'____7')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    7",'    7')
    Expected: true
    Received: false
  >     Set("____8",'____8')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("    8",'    8')
    Expected: true
    Received: false
  >     Set("____9",'____9')           == true               ... FAIL
    Output from additional subtests was suppressed...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 23: Ensure that evictions occur in the appropriate order
-------------------------------------------------------------------------------

    ***** Operation failed! *****
    Command:  lru.Set(" 2",' 2')
    Expected: true
    Received: false
    ***** Operation failed! *****
    Command:  lru.Get(" 2")
    Expected: cache hit:<' 2'>
    Received: cache miss
    ***** Operation failed! *****
    Command:  lru.Set(" 3",' 3')
    Expected: true
    Received: false
    ***** Operation failed! *****
    Command:  lru.Get(" 2")
    Expected: cache hit:<' 2'>
    Received: cache miss
    ***** Operation failed! *****
    Command:  lru.Get(" 3")
    Expected: cache hit:<' 3'>
    Received: cache miss
    ***** Operation failed! *****
    Command:  lru.Set(" 4",' 4')
    Expected: true
    Received: false
    ***** Operation failed! *****
    Command:  lru.Get(" 2")
    Expected: cache hit:<' 2'>
    Received: cache miss
    ***** Operation failed! *****
    Command:  lru.Get(" 3")
    Expected: cache hit:<' 3'>
    Output truncated after 40 lines ...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 24: Make sure that values are not evicted before they need to be
-------------------------------------------------------------------------------

  >     Set("0",'0')                   == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("0",'0')
    Expected: true
    Received: false
  >     Set("1",'1')                   == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("1",'1')
    Expected: true
    Received: false
  >     Get("0")                       == cache_hit:<'0'>    ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("0")
    Expected: cache hit:<'0'>
    Received: cache miss
  >     Get("1")                       == cache_hit:<'1'>    ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("1")
    Expected: cache hit:<'1'>
    Received: cache miss
  >     Set("2",'2')                   == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("2",'2')
    Expected: true
    Received: false
  >     Get("1")                       == cache_hit:<'1'>    ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("1")
    Expected: cache hit:<'1'>
    Received: cache miss
  >     Get("2")                       == cache_hit:<'2'>    ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("2")
    Expected: cache hit:<'2'>
    Received: cache miss
  >     Set("3",'3')                   == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("3",'3')
    Expected: true
    Received: false
  >     Get("2")                       == cache_hit:<'2'>    ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("2")
    Expected: cache hit:<'2'>
    Received: cache miss
  >     Get("3")                       == cache_hit:<'3'>    ... FAIL
    Output from additional subtests was suppressed...
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 25: Check that storage is freed correctly when eviction occurs
-------------------------------------------------------------------------------

  >     Set("12345",'12345')           == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("12345",'12345')
    Expected: true
    Received: false
  >     MaxStorage()                   == 10                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 10
    Received: 0
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     RemainingStorage()             == 0                  ... ok
  >     Set("123",'123')               == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("123",'123')
    Expected: true
    Received: false
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     RemainingStorage()             == 4                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 4
    Received: 0
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 26: Check proper length is used when evicting Unicode strings
-------------------------------------------------------------------------------

  >     Set("😂",'🙈')                   == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("😂",'🙈')
    Expected: true
    Received: false
  >     Get("😂")                       == cache_hit:<'🙈'>    ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("😂")
    Expected: cache hit:<'🙈'>
    Received: cache miss
  >     Set("12",'12')                 == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("12",'12')
    Expected: true
    Received: false
  >     Len()                          == 1                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.Len()
    Expected: 1
    Received: 0
  >     RemainingStorage()             == 6                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 6
    Received: 0
  >     Get("😂")                       == cache_miss         ... ok
  >     Get("12")                      == cache_hit:<'12'>   ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("12")
    Expected: cache hit:<'12'>
    Received: cache miss
###
                               -- test failed (-1.0) --

-------------------------------------------------------------------------------
  Test 27: Check that overeviction doesn't occur when updating existing key
-------------------------------------------------------------------------------

  >     MaxStorage()                   == 20                 ... FAIL
    ***** Operation failed! *****
    Command:  lru.MaxStorage()
    Expected: 20
    Received: 0
  >     Set("abcd",'efgh')             == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("abcd",'efgh')
    Expected: true
    Received: false
  >     Set("1234",'5678')             == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("1234",'5678')
    Expected: true
    Received: false
  >     RemainingStorage()             == 4                  ... FAIL
    ***** Operation failed! *****
    Command:  lru.RemainingStorage()
    Expected: 4
    Received: 0
  >     Set("1234",'12345678')         == true               ... FAIL
    ***** Operation failed! *****
    Command:  lru.Set("1234",'12345678')
    Expected: true
    Received: false
  >     Get("abcd")                    == cache_hit:<'efgh'> ... FAIL
    ***** Operation failed! *****
    Command:  lru.Get("abcd")
    Expected: cache hit:<'efgh'>
    Received: cache miss
###
                               -- test failed (-1.0) --

--------------------------------------------------------------
Results
--------------------------------------------------------------
>     ========================================================
>        Test summary:
>            Passed   3 / 27  tests     (24 failed)
>            Passed  36 / 213 subtests  (177 failed)
>
>        Score:
>            3.00 points of a possible 27.00  (11.11%)
>     ========================================================