offset paths partial
diff --git a/package.json b/package.json
index a212ad5..cac1b71 100644
--- a/package.json
+++ b/package.json
@@ -40,6 +40,6 @@
   },
   "license": "MIT",
   "dependencies": {
-    "experimental-pathkit-wasm": "^0.1.5"
+    "experimental-pathkit-wasm": "^0.1.7"
   }
 }
diff --git a/player/js/modules/pathkit.js b/player/js/modules/pathkit.js
index bca6641..266f387 100644
--- a/player/js/modules/pathkit.js
+++ b/player/js/modules/pathkit.js
@@ -18,8 +18,8 @@
 function e(a){d(a.instance)}function g(a){b().then(function(a){return WebAssembly.instantiate(a,h)}).then(a).catch(function(a){c.printErr("failed to asynchronously prepare wasm: "+a);x(a)})}if("object"!==typeof WebAssembly)return c.printErr("no native wasm support detected"),!1;if(!(c.wasmMemory instanceof WebAssembly.Memory))return c.printErr("no native wasm Memory in use"),!1;a.memory=c.wasmMemory;h.global={NaN:NaN,Infinity:Infinity};h["global.Math"]=Math;h.env=a;G++;c.monitorRunDependencies&&c.monitorRunDependencies(G);
 if(c.instantiateWasm)try{return c.instantiateWasm(h,d)}catch(ub){return c.printErr("Module.instantiateWasm callback failed with error: "+ub),!1}c.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||Ea(f)||"function"!==typeof fetch?g(e):WebAssembly.instantiateStreaming(fetch(f,{credentials:"same-origin"}),h).then(e).catch(function(a){c.printErr("wasm streaming compile failed: "+a);c.printErr("falling back to ArrayBuffer instantiation");g(e)});return{}}var e="pathkit.wast",f="pathkit.wasm",
 g="pathkit.temp.asm.js";"function"===typeof c.locateFile&&(Ea(e)||(e=c.locateFile(e)),Ea(f)||(f=c.locateFile(f)),Ea(g)||(g=c.locateFile(g)));var h={global:null,env:null,asm2wasm:ea,parent:c},k=null;c.asmPreload=c.asm;var l=c.reallocBuffer;c.reallocBuffer=function(a){if("asmjs"===m)var b=l(a);else a:{var d=c.usingWasm?65536:16777216;0<a%d&&(a+=d-a%d);d=c.buffer.byteLength;if(c.usingWasm)try{b=-1!==c.wasmMemory.grow((a-d)/65536)?c.buffer=c.wasmMemory.buffer:null;break a}catch(B){b=null;break a}b=void 0}return b};
-var m="";c.asm=function(a,b){if(!b.table){a=c.wasmTableSize;void 0===a&&(a=1024);var e=c.wasmMaxTableSize;b.table="object"===typeof WebAssembly&&"function"===typeof WebAssembly.Table?void 0!==e?new WebAssembly.Table({initial:a,maximum:e,element:"anyfunc"}):new WebAssembly.Table({initial:a,element:"anyfunc"}):Array(a);c.wasmTable=b.table}b.memoryBase||(b.memoryBase=c.STATIC_BASE);b.tableBase||(b.tableBase=0);b=d(b);assert(b,"no binaryen method succeeded.");return b}})();na=1024;D=na+29984;
-xa.push({N:function(){Fa()}},{N:function(){Ha()}});c.STATIC_BASE=na;c.STATIC_BUMP=29984;D+=16;var I=0;function J(){I+=4;return A[I-4>>2]}var Ia={};
+var m="";c.asm=function(a,b){if(!b.table){a=c.wasmTableSize;void 0===a&&(a=1024);var e=c.wasmMaxTableSize;b.table="object"===typeof WebAssembly&&"function"===typeof WebAssembly.Table?void 0!==e?new WebAssembly.Table({initial:a,maximum:e,element:"anyfunc"}):new WebAssembly.Table({initial:a,element:"anyfunc"}):Array(a);c.wasmTable=b.table}b.memoryBase||(b.memoryBase=c.STATIC_BASE);b.tableBase||(b.tableBase=0);b=d(b);assert(b,"no binaryen method succeeded.");return b}})();na=1024;D=na+30112;
+xa.push({N:function(){Fa()}},{N:function(){Ha()}});c.STATIC_BASE=na;c.STATIC_BUMP=30112;D+=16;var I=0;function J(){I+=4;return A[I-4>>2]}var Ia={};
 function K(a,b){I=b;try{var d=J(),e=J(),f=J();a=0;K.J||(K.J=[null,[],[]],K.S=function(a,b){var d=K.J[a];assert(d);if(0===b||10===b){a=1===a?c.print:c.printErr;a:{for(var e=b=0;d[e];)++e;if(16<e-b&&d.subarray&&ha)b=ha.decode(d.subarray(b,e));else for(e="";;){var f=d[b++];if(!f){b=e;break a}if(f&128){var g=d[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=d[b++]&63;if(224==(f&240))f=(f&15)<<12|g<<6|k;else{var h=d[b++]&63;if(240==(f&248))f=(f&7)<<18|g<<12|k<<6|h;else{var l=d[b++]&
 63;if(248==(f&252))f=(f&3)<<24|g<<18|k<<12|h<<6|l;else{var m=d[b++]&63;f=(f&1)<<30|g<<24|k<<18|h<<12|l<<6|m}}}65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}}a(b);d.length=0}else d.push(b)});for(b=0;b<f;b++){for(var g=A[e+8*b>>2],h=A[e+(8*b+4)>>2],k=0;k<h;k++)K.S(d,y[g+k]);a+=h}return a}catch(l){return"undefined"!==typeof FS&&l instanceof FS.I||x(l),-l.L}}var Ja={};
 function Ka(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function L(a){return this.fromWireType(C[a>>2])}var M={},N={},La={};function Ma(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Na(a,b){a=Ma(a);return(new Function("body","return function "+a+'() {\n    "use strict";    return body.apply(this, arguments);\n};\n'))(b)}
diff --git a/player/js/modules/pathkit.wasm b/player/js/modules/pathkit.wasm
index f670491..fbde8e9 100644
--- a/player/js/modules/pathkit.wasm
+++ b/player/js/modules/pathkit.wasm
Binary files differ
diff --git a/player/js/utils/shapes/OffsetPathModifier.js b/player/js/utils/shapes/OffsetPathModifier.js
index 4af8deb..44650d4 100644
--- a/player/js/utils/shapes/OffsetPathModifier.js
+++ b/player/js/utils/shapes/OffsetPathModifier.js
@@ -77,12 +77,18 @@
 			shape = shapeData.shape;
 			commands.length = 0;
 			this.addShapeToCommands(shape, shapeData.data.transformers, shapeData.data.lvl, commands);
+			// commands = [[0,50,-50]];
+			// commands.push([1,50,50]);
+			// commands.push([1,-50,50]);
+			// commands.push([1,-50,-50]);
+			// commands.push([5]);
+			console.log(commands)
 			skPath = this.SkPathFromCmdTyped(commands);
 			offsettedSkPath = skPath.stroke(amount * 2, Module.StrokeJoin.MITER, Module.StrokeCap.BUTT);
 			if(commands[commands.length - 1][0] === 5) {
-				// outerSkPath = offsettedSkPath.op(skPath, Module.PathOp.DIFFERENCE); // subtract the original path out
-				// offsettedSkPath.delete();
-				outerSkPath = offsettedSkPath;
+				outerSkPath = offsettedSkPath.op(skPath, Module.PathOp.DIFFERENCE); // subtract the original path out
+				offsettedSkPath.delete();
+				// outerSkPath = offsettedSkPath;
 				// finalSkPath = outerSkPath.simplify();
 				// outerSkPath.delete();
 				finalSkPath = outerSkPath;
@@ -92,6 +98,8 @@
 				// finalSkPath = offsettedSkPath;
 			}
 		  	commands = finalSkPath.toCmds();
+		  	console.log(commands)
+		  	// commands.length = 44;
 			skPath.delete();
 			finalSkPath.delete();
 	        localShapeCollection = shapeData.localShapeCollection;