<script type="text/javascript">
(function (cjs, an) {

var p; // shortcut to reference prototypes
var lib={};var ss={};var img={};
lib.webFontTxtInst = {}; 
var loadedTypekitCount = 0;
var loadedGoogleCount = 0;
var gFontsUpdateCacheList = [];
var tFontsUpdateCacheList = [];
lib.ssMetadata = [
		{name:"kseal_engine_components_new_atlas_", frames: [[0,1522,859,464],[0,725,873,795],[1449,1280,335,119],[1117,374,808,246],[1438,1612,479,423],[1449,622,505,245],[0,0,1115,723],[1449,1091,384,187],[1117,0,791,372],[861,1612,575,422],[875,725,572,885],[1449,869,350,220],[1786,1280,164,114],[1801,869,191,177]]}
];



lib.updateListCache = function (cacheList) {		
	for(var i = 0; i < cacheList.length; i++) {		
		if(cacheList[i].cacheCanvas)		
			cacheList[i].updateCache();		
	}		
};		

lib.addElementsToCache = function (textInst, cacheList) {		
	var cur = textInst;		
	while(cur != null && cur != exportRoot) {		
		if(cacheList.indexOf(cur) != -1)		
			break;		ro
		cur = cur.parent;		
	}		
	if(cur != exportRoot) {		
		var cur2 = textInst;		
		var index = cacheList.indexOf(cur);		
		while(cur2 != null && cur2 != cur) {		
			cacheList.splice(index, 0, cur2);		
			cur2 = cur2.parent;		
			index++;		
		}		
	}		
	else {		
		cur = textInst;		
		while(cur != null && cur != exportRoot) {		
			cacheList.push(cur);		
			cur = cur.parent;		
		}		
	}		
};		

lib.gfontAvailable = function(family, totalGoogleCount) {		
	lib.properties.webfonts[family] = true;		
	var txtInst = lib.webFontTxtInst && lib.webFontTxtInst[family] || [];		
	for(var f = 0; f < txtInst.length; ++f)		
		lib.addElementsToCache(txtInst[f], gFontsUpdateCacheList);		

	loadedGoogleCount++;		
	if(loadedGoogleCount == totalGoogleCount) {		
		lib.updateListCache(gFontsUpdateCacheList);		
	}		
};		

lib.tfontAvailable = function(family, totalTypekitCount) {		
	lib.properties.webfonts[family] = true;		
	var txtInst = lib.webFontTxtInst && lib.webFontTxtInst[family] || [];		
	for(var f = 0; f < txtInst.length; ++f)		
		lib.addElementsToCache(txtInst[f], tFontsUpdateCacheList);		

	loadedTypekitCount++;		
	if(loadedTypekitCount == totalTypekitCount) {		
		lib.updateListCache(tFontsUpdateCacheList);		
	}		
};
// symbols:



(lib.CylinderHead = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(0);
}).prototype = p = new cjs.Sprite();



(lib.EngineBlock = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(1);
}).prototype = p = new cjs.Sprite();



(lib.FreezePlug = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(2);
}).prototype = p = new cjs.Sprite();



(lib.HeadGasket = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(3);
}).prototype = p = new cjs.Sprite();



(lib.HeaterCore = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(4);
}).prototype = p = new cjs.Sprite();



(lib.HoseHeaterCore = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(5);
}).prototype = p = new cjs.Sprite();



(lib.HoseLower = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(6);
}).prototype = p = new cjs.Sprite();



(lib.HoseReturn = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(7);
}).prototype = p = new cjs.Sprite();



(lib.HoseWaterPump = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(8);
}).prototype = p = new cjs.Sprite();



(lib.IntakeManifold = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(9);
}).prototype = p = new cjs.Sprite();



(lib.Radiator = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(10);
}).prototype = p = new cjs.Sprite();



(lib.Reservoir = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(11);
}).prototype = p = new cjs.Sprite();



(lib.Thermostat = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(12);
}).prototype = p = new cjs.Sprite();



(lib.WaterPump = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(13);
}).prototype = p = new cjs.Sprite();
// helper functions:

function mc_symbol_clone() {
	var clone = this._cloneProps(new this.constructor(this.mode, this.startPosition, this.loop));
	clone.gotoAndStop(this.currentFrame);
	clone.paused = this.paused;
	clone.framerate = this.framerate;
	return clone;
}

function getMCSymbolPrototype(symbol, nominalBounds, frameBounds) {
	var prototype = cjs.extend(symbol, cjs.MovieClip);
	prototype.clone = mc_symbol_clone;
	prototype.nominalBounds = nominalBounds;
	prototype.frameBounds = frameBounds;
	return prototype;
	}


(lib.mcHoseWaterPump = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.HoseWaterPump();
	this.instance.parent = this;
	this.instance.setTransform(-197.7,-93,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHoseWaterPump, new cjs.Rectangle(-197.7,-93,395.5,186), null);


(lib.mcHoseReturn = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.HoseReturn();
	this.instance.parent = this;
	this.instance.setTransform(-96,-46.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHoseReturn, new cjs.Rectangle(-96,-46.7,192,93.5), null);


(lib.mcHoseLower = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.HoseLower();
	this.instance.parent = this;
	this.instance.setTransform(-278.7,-180.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHoseLower, new cjs.Rectangle(-278.7,-180.7,557.5,361.5), null);


(lib.mcHoseHeaterCore = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.HoseHeaterCore();
	this.instance.parent = this;
	this.instance.setTransform(-126.2,-61.2,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHoseHeaterCore, new cjs.Rectangle(-126.2,-61.2,252.5,122.5), null);


(lib.mcDot = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// dot
	this.shape = new cjs.Shape();
	this.shape.graphics.f("#F56723").s().p("AhBBCQgbgbAAgnQAAgmAbgbQAcgbAlAAQAmAAAcAbQAbAbAAAmQAAAngbAbQgcAbgmAAQglAAgcgbg");

	this.timeline.addTween(cjs.Tween.get(this.shape).wait(72));

	// ring 1
	this.shape_1 = new cjs.Shape();
	this.shape_1.graphics.f().s("#F56723").ss(2,1,1).p("ABQAAQAAAdgSAWQgDADgCADQgYAXghAAQggAAgYgXQgCgDgDgDQgBgBgBgBQgQgVAAgcQAAgbAQgVQAEgEADgEQAYgXAgAAQAhAAAYAXQAXAYAAAgg");

	this.shape_2 = new cjs.Shape();
	this.shape_2.graphics.f().s("rgba(245,103,35,0.965)").ss(2,1,1).p("AhRAAQAAgbARgWQAIgKACgBQAXgVAfAAQAkACAWAWQAYAYAAAhQgBAegRAWQgDADgDADQgZAYghAAQAAAAAAAAQgggBgYgWQgBAAAAgBQgDgDgDgDQgBgBAAgBQgRgWAAgcg");

	this.shape_3 = new cjs.Shape();
	this.shape_3.graphics.f().s("rgba(245,103,35,0.929)").ss(1.9,1,1).p("AhTAAQAAgcARgWQAJgKABgBQAYgWAgAAQAkABAYAXQAYAZAAAiQAAAfgSAWQgDADgDAEQgaAYgiAAQAAAAAAAAQghAAgZgXQAAgBgBAAQgDgEgDgDQgBgBAAAAQgRgXAAgdg");

	this.shape_4 = new cjs.Shape();
	this.shape_4.graphics.f().s("rgba(245,103,35,0.898)").ss(1.9,1,1).p("AhVAAQAAgdARgWQAJgKABgBQAZgXAhAAQAlABAYAYQAZAaAAAiQAAAfgTAXQgDAEgDADQgaAZgiAAQgBAAAAAAQgiAAgZgYQgBAAgBgBQgCgDgDgDQgBgBgBgBQgRgXAAgeg");

	this.shape_5 = new cjs.Shape();
	this.shape_5.graphics.f().s("rgba(245,103,35,0.863)").ss(1.8,1,1).p("AhXAAQAAgeARgXQAJgKACgBQAZgXAiAAQAmABAZAYQAZAbAAAjQAAAggTAYQgDADgDADQgbAagjAAQgBAAAAAAQgjAAgagYQgBgBAAgBQgDgDgDgDQgBgBgBgBQgRgXAAgfg");

	this.shape_6 = new cjs.Shape();
	this.shape_6.graphics.f().s("rgba(245,103,35,0.827)").ss(1.8,1,1).p("AhZAAQAAgeASgYQAJgKABgBQAagYAiAAQAoABAZAZQAaAbAAAkQAAAhgTAYQgDADgDAEQgcAagkAAQgBAAAAAAQgkAAgagZQgBgBgBAAQgDgEgDgDQgBgBAAgBQgSgYAAgfg");

	this.shape_7 = new cjs.Shape();
	this.shape_7.graphics.f().s("rgba(245,103,35,0.792)").ss(1.7,1,1).p("AhcAAQAAgfATgYQAJgLACgBQAagYAjgBQApACAaAZQAaAcABAlQgBAhgTAZQgEAEgDADQgcAbglABQgBAAAAAAQglgBgbgZQgBgBAAgBQgDgDgDgDQgBgCgBAAQgTgZAAggg");

	this.shape_8 = new cjs.Shape();
	this.shape_8.graphics.f().s("rgba(245,103,35,0.757)").ss(1.7,1,1).p("AheAAQAAggATgYQAJgLACgBQAbgZAkgBQApABAbAbQAcAcAAAmQgBAigUAZQgDAEgDAEQgdAbgmABQgBAAAAAAQglgBgcgaQgBgBgBAAQgDgEgDgDQgBgBgBgBQgTgZAAghg");

	this.shape_9 = new cjs.Shape();
	this.shape_9.graphics.f().s("rgba(245,103,35,0.725)").ss(1.6,1,1).p("AhgAAQAAggATgaQAKgKABgCQAcgZAlgBQAqABAbAbQAdAdAAAnQgBAjgUAaQgDAEgEADQgdAdgnAAQgBAAAAAAQgmgBgdgbQgBAAgBgBQgDgDgDgEQgBgBgBgBQgTgZAAgig");

	this.shape_10 = new cjs.Shape();
	this.shape_10.graphics.f().s("rgba(245,103,35,0.69)").ss(1.6,1,1).p("AhiAAQAAghAUgaQAJgLACgBQAcgaAlgBQAsABAcAbQAdAeAAAoQAAAkgVAaQgEAEgDAEQgeAdgoAAQgBAAAAAAQgnAAgegcQAAgBgBgBQgDgDgEgEQgBgBAAgBQgUgaAAgig");

	this.shape_11 = new cjs.Shape();
	this.shape_11.graphics.f().s("rgba(245,103,35,0.655)").ss(1.5,1,1).p("AhkAAQAAgiAUgaQAKgLABgBQAdgbAmgBQAtABAcAcQAeAeAAApQAAAkgWAbQgDAEgEAEQgeAegpAAQgBAAAAAAQgoAAgegdQgBAAgBgBQgDgEgDgDQgBgBgBgBQgUgbAAgjg");

	this.shape_12 = new cjs.Shape();
	this.shape_12.graphics.f().s("rgba(245,103,35,0.62)").ss(1.5,1,1).p("AhmAAQAAgjAUgaQAKgLACgCQAdgbAngBQAuABAdAcQAeAfAAAqQAAAlgWAbQgDAFgEADQgfAfgqAAQAAAAgBAAQgpAAgfgdQgBgBAAgBQgEgDgDgEQgBgBgBgBQgUgbAAgkg");

	this.shape_13 = new cjs.Shape();
	this.shape_13.graphics.f().s("rgba(245,103,35,0.584)").ss(1.4,1,1).p("AhoAAQAAgjAVgcQAJgLACgBQAegcAngBQAvAAAeAeQAfAfAAArQAAAmgWAcQgEAEgDAEQggAfgrAAQAAAAgBAAQgqAAgfgeQgBgBgBAAQgDgEgEgEQgBgBAAgBQgVgbAAglg");

	this.shape_14 = new cjs.Shape();
	this.shape_14.graphics.f().s("rgba(245,103,35,0.553)").ss(1.4,1,1).p("AhrAAQAAgkAWgcQAKgLABgCQAfgcAogCQAwABAfAeQAfAgABAsQgBAmgWAdQgEAEgEAEQggAggrABQgBAAgBAAQgrgBgggeQgBgBgBgBQgDgEgDgDQgBgCgBgBQgWgcAAglg");

	this.shape_15 = new cjs.Shape();
	this.shape_15.graphics.f().s("rgba(245,103,35,0.518)").ss(1.3,1,1).p("AhtAAQAAglAWgcQAKgMACgBQAfgdApgCQAxABAfAfQAgAgABAtQgBAngXAdQgDAFgEAEQghAggsABQgBAAgBAAQgsgBgggfQgBgBgBgBQgEgDgDgEQgBgBgBgBQgWgdAAgmg");

	this.shape_16 = new cjs.Shape();
	this.shape_16.graphics.f().s("rgba(245,103,35,0.482)").ss(1.2,1,1).p("AhvAAQAAglAWgdQAKgMACgBQAggeAqgCQAyABAgAfQAhAiAAAtQAAAogYAdQgEAFgEAEQgiAhgsABQgBAAgBAAQgsAAgiggQgBgBgBgBQgDgEgEgEQgBgBgBgBQgWgdAAgng");

	this.shape_17 = new cjs.Shape();
	this.shape_17.graphics.f().s("rgba(245,103,35,0.447)").ss(1.2,1,1).p("AhxAAQAAgmAXgeQAKgLACgCQAggeAqgCQA0ABAgAgQAiAiAAAuQAAApgYAeQgEAEgEAFQgjAhgtABQgBAAgBAAQgtAAgighQgBgBgBgBQgEgEgEgEQgBgBAAgBQgXgdAAgog");

	this.shape_18 = new cjs.Shape();
	this.shape_18.graphics.f().s("rgba(245,103,35,0.416)").ss(1.1,1,1).p("AhzAAQAAgnAXgeQAKgMACgBQAhgfArgCQA1ABAhAgQAiAjAAAvQAAApgYAfQgEAFgFAEQgjAjguAAQgBAAgBAAQguAAgjghQgBgBgBgCQgEgDgDgEQgBgCgBgBQgXgeAAgog");

	this.shape_19 = new cjs.Shape();
	this.shape_19.graphics.f().s("rgba(245,103,35,0.38)").ss(1.1,1,1).p("Ah1AAQAAgnAXgfQALgMABgCQAigfAsgCQA1AAAiAiQAjAjAAAwQAAAqgZAfQgEAFgEAFQgkAjgvAAQgBAAgBAAQgvAAgjgiQgBgBgCgBQgDgEgEgEQgBgBgBgBQgXgfAAgpg");

	this.shape_20 = new cjs.Shape();
	this.shape_20.graphics.f().s("rgba(245,103,35,0.345)").ss(1,1,1).p("Ah3AAQAAgoAXgfQALgMACgCQAiggAtgCQA2AAAjAiQAjAkAAAwQAAAsgZAfQgEAFgEAFQglAkgwAAQgBAAgBAAQgwAAgkgiQgBgCgBgBQgEgEgEgEQgBgBgBgBQgXgfAAgqg");

	this.shape_21 = new cjs.Shape();
	this.shape_21.graphics.f().s("rgba(245,103,35,0.31)").ss(1,1,1).p("Ah6AAQAAgpAZggQAKgMACgCQAjggAtgDQA4ABAjAjQAkAkABAxQgBAsgZAhQgEAFgFAEQglAlgxABQgBAAgBAAQgxgBgkgjQgCgBgBgBQgEgEgDgEQgBgCgBgBQgZgfAAgrg");

	this.shape_22 = new cjs.Shape();
	this.shape_22.graphics.f().s("rgba(245,103,35,0.275)").ss(0.9,1,1).p("Ah8AAQAAgqAZggQALgMACgCQAjghAugDQA5ABAkAjQAkAlABAyQAAAtgbAhQgEAFgEAFQgmAlgyABQgBAAgBAAQgyAAglgkQgBgCgBgBQgEgEgEgEQgBgBgBgCQgZggAAgrg");

	this.shape_23 = new cjs.Shape();
	this.shape_23.graphics.f().s("rgba(245,103,35,0.243)").ss(0.9,1,1).p("Ah+AAQAAgqAZghQALgNACgBQAjgjAwgCQA6ABAkAjQAlAmABAzQAAAugbAhQgEAFgFAFQgmAmgyABQgCAAgBAAQgzAAgmglQgBgBgBgCQgEgEgEgEQgBgBgBgBQgZghAAgsg");

	this.shape_24 = new cjs.Shape();
	this.shape_24.graphics.f().s("rgba(245,103,35,0.208)").ss(0.8,1,1).p("AiAAAQAAgrAaghQAKgNACgCQAkgjAwgCQA7AAAlAlQAnAmAAA0QAAAvgbAhQgEAGgFAFQgnAmgzABQgCAAgBAAQgzAAgngmQgBgBgCgBQgEgEgEgFQgBgBAAgBQgaghAAgtg");

	this.shape_25 = new cjs.Shape();
	this.shape_25.graphics.f().s("rgba(245,103,35,0.173)").ss(0.8,1,1).p("AiCAAQAAgsAagiQALgMACgCQAkgkAxgCQA8AAAmAlQAnAnAAA1QAAAvgbAjQgFAFgFAFQgnAng0ABQgCAAgBAAQg0AAgogmQgBgBgBgCQgEgEgEgEQgBgCgBgBQgaghAAgug");

	this.shape_26 = new cjs.Shape();
	this.shape_26.graphics.f().s("rgba(245,103,35,0.137)").ss(0.7,1,1).p("AiEAAQAAgsAagjQALgNACgCQAlgkAygCQA9AAAmAmQAoAnAAA2QAAAwgcAjQgEAFgFAGQgoAng1ABQgCAAgBAAQg1AAgognQgBgBgCgBQgEgFgEgEQgBgBgBgCQgagiAAgug");

	this.shape_27 = new cjs.Shape();
	this.shape_27.graphics.f().s("rgba(245,103,35,0.102)").ss(0.7,1,1).p("AiGAAQAAgtAagjQAMgNACgCQAlglAzgCQA+AAAnAmQAoAoAAA3QAAAxgcAjQgEAGgFAFQgpAog2ABQgBAAgCAAQg2AAgpgnQgBgCgBgBQgFgEgEgFQgBgBgBgBQgagjAAgvg");

	this.shape_28 = new cjs.Shape();
	this.shape_28.graphics.f().s("rgba(245,103,35,0.071)").ss(0.6,1,1).p("AiIAAQAAguAbgjQALgNACgCQAmgmAzgCQBAAAAnAnQApApAAA3QAAAxgcAkQgFAGgFAFQgpAqg3AAQgBAAgCAAQg3AAgpgoQgCgBgBgCQgEgEgEgEQgBgCgBgBQgbgjAAgwg");

	this.shape_29 = new cjs.Shape();
	this.shape_29.graphics.f().s("rgba(245,103,35,0.035)").ss(0.6,1,1).p("AiLAAQAAgvAcgkQALgNACgCQAngmA0gDQBAAAApAoQApAqABA4QAAAygdAlQgFAFgFAGQgqAqg4ABQgBAAgCAAQg4AAgqgpQgBgCgCgBQgEgFgEgEQgBgCgBgBQgcgjAAgxg");

	this.shape_30 = new cjs.Shape();
	this.shape_30.graphics.f().s("rgba(245,103,35,0)").ss(0.5,1,1).p("ACOAAQAAA7gqApQgpAqg7AAQg5AAgqgqQgqgpAAg7QAAg6AqgpQAqgqA5AAQA7AAApAqQAqApAAA6g");

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.shape_1}]}).to({state:[{t:this.shape_2}]},1).to({state:[{t:this.shape_3}]},1).to({state:[{t:this.shape_4}]},1).to({state:[{t:this.shape_5}]},1).to({state:[{t:this.shape_6}]},1).to({state:[{t:this.shape_7}]},1).to({state:[{t:this.shape_8}]},1).to({state:[{t:this.shape_9}]},1).to({state:[{t:this.shape_10}]},1).to({state:[{t:this.shape_11}]},1).to({state:[{t:this.shape_12}]},1).to({state:[{t:this.shape_13}]},1).to({state:[{t:this.shape_14}]},1).to({state:[{t:this.shape_15}]},1).to({state:[{t:this.shape_16}]},1).to({state:[{t:this.shape_17}]},1).to({state:[{t:this.shape_18}]},1).to({state:[{t:this.shape_19}]},1).to({state:[{t:this.shape_20}]},1).to({state:[{t:this.shape_21}]},1).to({state:[{t:this.shape_22}]},1).to({state:[{t:this.shape_23}]},1).to({state:[{t:this.shape_24}]},1).to({state:[{t:this.shape_25}]},1).to({state:[{t:this.shape_26}]},1).to({state:[{t:this.shape_27}]},1).to({state:[{t:this.shape_28}]},1).to({state:[{t:this.shape_29}]},1).to({state:[{t:this.shape_30}]},1).to({state:[]},1).wait(42));

}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-9.3,-9.3,18.6,18.6);


(lib.mcCalloutBackground = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.shape = new cjs.Shape();
	this.shape.graphics.f("#FFFFFF").s().p("A2pZoQgyAAAAg6MAAAgxbQAAg6AyAAMAtTAAAQAyAAAAA6MAAAAxbQAAA6gyAAg");

	this.timeline.addTween(cjs.Tween.get(this.shape).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcCalloutBackground, new cjs.Rectangle(), null);


(lib.btnCalloutButton = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.shape = new cjs.Shape();
	this.shape.graphics.f("#F76707").s().rr(-79.55,-23.5,159.1,47,5);
	this.shape.setTransform(0,0,0.723,1);

	this.shape_1 = new cjs.Shape();
	this.shape_1.graphics.f("#C55206").s().rr(-79.55,-23.5,159.1,47,5);
	this.shape_1.setTransform(0,0,0.723,1);

	this.shape_2 = new cjs.Shape();
	this.shape_2.graphics.f("#000000").s().rr(-79.55,-23.5,159.1,47,5);
	this.shape_2.setTransform(0,0,0.723,1);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.shape}]}).to({state:[{t:this.shape_1}]},1).to({state:[{t:this.shape_2}]},1).wait(2));

}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-57.5,-23.5,115.1,47);


(lib.mcWaterPump = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-1,30.1);

	this.instance_1 = new lib.WaterPump();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-47.7,-44.2,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcWaterPump, new cjs.Rectangle(-47.7,-44.2,95.5,88.5), null);


(lib.mcThermostat = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-5,-7.9);

	this.instance_1 = new lib.Thermostat();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-41,-28.5,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcThermostat, new cjs.Rectangle(-41,-28.5,82,57), null);


(lib.mcReservoir = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(4,-18.9);

	this.instance_1 = new lib.Reservoir();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-87.5,-55,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcReservoir, new cjs.Rectangle(-87.5,-55,175,110), null);


(lib.mcRadiator = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(41,-78.9);

	this.instance_1 = new lib.Radiator();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-143,-221.2,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcRadiator, new cjs.Rectangle(-143,-221.2,286,442.5), null);


(lib.mcIntakeManifold = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(38,-51.9);

	this.instance_1 = new lib.IntakeManifold();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-143.7,-105.5,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcIntakeManifold, new cjs.Rectangle(-143.7,-105.5,287.5,211), null);


(lib.mcHeaterCore = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(71,39.1);

	this.instance_1 = new lib.HeaterCore();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-119.7,-105.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHeaterCore, new cjs.Rectangle(-119.7,-105.7,239.5,211.5), null);


(lib.mcHeadGasket = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-121,38.1);

	this.instance_1 = new lib.HeadGasket();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-202,-61.5,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHeadGasket, new cjs.Rectangle(-202,-61.5,404,123), null);


(lib.mcFreezePlug = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-8,-4.9);

	this.instance_1 = new lib.FreezePlug();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-83.7,-29.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcFreezePlug, new cjs.Rectangle(-83.7,-29.7,167.5,59.5), null);


(lib.mcEngineBlock = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-120,91);

	this.instance_1 = new lib.EngineBlock();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-218.2,-198.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcEngineBlock, new cjs.Rectangle(-218.2,-198.7,436.5,397.5), null);


(lib.mcCylinderHead = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-116,-21.5);

	this.instance_1 = new lib.CylinderHead();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-214.7,-116,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcCylinderHead, new cjs.Rectangle(-214.7,-116,429.5,232), null);


(lib.mcCalloutButton = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_2
	this.txtCalloutButton = new cjs.Text("Learn More", "normal 700 18px 'Fira Sans'", "#FFFFFF");
	this.txtCalloutButton.name = "txtCalloutButton";
	this.txtCalloutButton.lineHeight = 30;
	this.txtCalloutButton.lineWidth = 98;
	this.txtCalloutButton.parent = this;
	this.txtCalloutButton.setTransform(-47,-12.5);
	if(!lib.properties.webfonts['Fira Sans']) {
		lib.webFontTxtInst['Fira Sans'] = lib.webFontTxtInst['Fira Sans'] || [];
		lib.webFontTxtInst['Fira Sans'].push(this.txtCalloutButton);
	}

	this.timeline.addTween(cjs.Tween.get(this.txtCalloutButton).wait(1));

	// Layer_1
	this.instance = new lib.btnCalloutButton();
	this.instance.parent = this;
	new cjs.ButtonHelper(this.instance, 0, 1, 2, false, new lib.btnCalloutButton(), 3);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcCalloutButton, new cjs.Rectangle(-57.5,-23.5,115.1,47), null);


(lib.mcCallout = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// timeline functions:
	this.frame_0 = function() {
		/* Click to Go to Web Page
		Clicking on the specified symbol instance loads the URL in a new browser window.
		
		Instructions:
		1. Replace http://www.adobe.com with the desired URL address.
		   Keep the quotation marks ("").
		*/
		
		//this.mcCalloutButton.bg_clickTag.cursor = "pointer"
		this.mcCalloutButton.addEventListener("click", fl_ClickToGoToWebPage);
		
		function fl_ClickToGoToWebPage() {
			window.open(currentComponentLink, "_parent");
		}
	}

	// actions tween:
	this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(1));

	// Layer_1
	this.mcCalloutButton = new lib.mcCalloutButton();
	this.mcCalloutButton.name = "mcCalloutButton";
	this.mcCalloutButton.parent = this;
	this.mcCalloutButton.setTransform(-76,126);

	this.txtComponentDescription = new cjs.Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultrices purus non ipsum feugiat, nec efficitur sem porttitor. Aenean sit amet sapien sit amet massa aliquam pretium.", "normal 400 18px 'Fira Sans'", "#333333");
	this.txtComponentDescription.name = "txtComponentDescription";
	this.txtComponentDescription.lineHeight = 28;
	this.txtComponentDescription.lineWidth = 267;
	this.txtComponentDescription.parent = this;
	this.txtComponentDescription.setTransform(-133.6,-109.3);
	if(!lib.properties.webfonts['Fira Sans']) {
		lib.webFontTxtInst['Fira Sans'] = lib.webFontTxtInst['Fira Sans'] || [];
		lib.webFontTxtInst['Fira Sans'].push(this.txtComponentDescription);
	}

	this.txtComponentName = new cjs.Text("Component Name", "normal 700 22px 'Fira Sans'", "#234287");
	this.txtComponentName.name = "txtComponentName";
	this.txtComponentName.lineHeight = 36;
	this.txtComponentName.lineWidth = 267;
	this.txtComponentName.parent = this;
	this.txtComponentName.setTransform(-133.6,-154.3);
	if(!lib.properties.webfonts['Fira Sans']) {
		lib.webFontTxtInst['Fira Sans'] = lib.webFontTxtInst['Fira Sans'] || [];
		lib.webFontTxtInst['Fira Sans'].push(this.txtComponentName);
	}

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.txtComponentName},{t:this.txtComponentDescription},{t:this.mcCalloutButton}]}).wait(1));

	// Layer_2
	this.mcCalloutBackground = new lib.mcCalloutBackground();
	this.mcCalloutBackground.name = "mcCalloutBackground";
	this.mcCalloutBackground.parent = this;
	this.mcCalloutBackground.shadow = new cjs.Shadow("rgba(153,153,153,1)",0,5,15);

	this.timeline.addTween(cjs.Tween.get(this.mcCalloutBackground).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcCallout, new cjs.Rectangle(-166,-175,336,364), null);


// stage content:
(lib.ksealenginecomponents = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// timeline functions:
	this.frame_0 = function() {
		this.stop();
		
		var root = this;
		
		//counts the number of reasons that the callout should be visible
		calloutShow = 0;
		calloutVisibility();
		
		//gather up all the components
		var engineComponents = [this.mcRadiator,
								this.mcHoseLower,
								this.mcReservoir,
								this.mcThermostat,
								this.mcHoseWaterPump,
								this.mcIntakeManifold,
								this.mcWaterPump,
								this.mcCylinderHead,
								this.mcHeadGasket,
								this.mcFreezePlug,
								this.mcEngineBlock,
								this.mcHoseHeaterCore,
								this.mcHeaterCore,
								this.mcHoseReturn
								];
		
		
		//initialize engine components
		engineComponents.forEach(function(item, index, array) {
			
			//set origin x and y
			item.originX = item.x;
			item.originY = item.y;
				
			//add mouseover and mouseout listeners only to important components
			if( index == 1 || index == 4 || index == 11 || index == 13 ){
					//do nothing
			} else {
				
				//add component mouseover listener
				item.addEventListener("mouseover", componentRollOver);
				item.addEventListener("MouseEvent.CLICK", componentRollOver);
			
				//add component mouseout listener
				item.addEventListener("mouseout", componentRollOut);
			}
		});
		
		//holds the web link for the current component
		currentComponentLink = "";
		
		// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		// !-- Set the text and links for the callouts here --!
		// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		
		//text for the callout button
		this.mcCallout.mcCalloutButton.txtCalloutButton.text = "Learn More";
		
		//callout headline
		this.mcRadiator.txtComponentName = "Radiator";
		
		//callout body copy
		this.mcRadiator.txtComponentDescription = "The radiator is designed to transfer heat between the cooling system and the atmosphere in order to maintain the correct engine temperature. The main reason radiators fail is due to corrosion or damage causing a leak, which can lead to the engine overheating  - potentially costing you a lot of money to get it fixed. So how can you look out for a leak, and fix it?";
		
		//callout link address (use absolute links)
		//this.mcRadiator.txtComponentLink = "1131";
		this.mcRadiator.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/radiator";
		
		
		
		this.mcReservoir.txtComponentName = "Reservoir";
		this.mcReservoir.txtComponentDescription = "Known as the expansion tank, header tank or reservoir, this is a container located near the radiator that holds the excess or overflowing cooling agent used in the engine. In most modern cars this is also where you would top up the coolant and add K-Seal. In older cars you may still need to add K-Seal via the radiator.";
		//this.mcReservoir.txtComponentLink = "28";
		
		
		this.mcReservoir.txtComponentLink = "https://www.kseal.com/using-k-seal/instructions/how-to-use-k-seal";
		
		
		this.mcThermostat.txtComponentName = "Thermostat";
		this.mcThermostat.txtComponentDescription = "Sitting between the engine and the radiator, the thermostat is critical to making your car’s cooling system work. If the engine is too hot, the thermostat acknowledges this and lets coolant flow freely through the radiator in order to cool the engine. If the engine is too cool the thermostat reduces or stops the flow of coolant to the radiator allowing the engine to warm up.";
		//this.mcThermostat.txtComponentLink = "1131";
		this.mcThermostat.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/radiator";
		
		this.mcIntakeManifold.txtComponentName = "Intake Manifold";
		this.mcIntakeManifold.txtComponentDescription = "Your vehicle’s intake manifold is a vital part of the internal combustion engine. Its primary purpose is to evenly distribute the mixture of air and fuel into the cylinders. The intake manifold also conducts coolant through the cylinders to reduce engine temperature – helping to keep your engine running smoothly. However, it can be very difficult to identify symptoms as related to intake manifold failure – unless you know what to look out for.";
		//this.mcIntakeManifold.txtComponentLink = "1134";
		this.mcIntakeManifold.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/intake-manifold";
		
		this.mcWaterPump.txtComponentName = "Water Pump";
		this.mcWaterPump.txtComponentDescription = "The water pump ensures that enough coolant liquid is flowing around the cooling system in order to remove sufficient heat to prevent the engine overheating. The more the engine works the faster coolant is pushed around the cooling system. Water pumps do malfunction from time to time, but the most common issue is the casing developing a leak.  This will lead to overheating which can cause serious damage to other parts of the engine, including the cylinder head and block. Fortunately, there is an affordable way to fix this…";
		//this.mcWaterPump.txtComponentLink = "1133";
		this.mcWaterPump.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/water-pump";
		
		this.mcCylinderHead.txtComponentName = "Cylinder Head";
		this.mcCylinderHead.txtComponentDescription = "A cylinder head sits on top of the engine block and covers its cylinders, creating the combustion chamber. A complicated part of the engine, if the cylinder head fails it will lead to the engine (and by extension the vehicle) breaking down. Any problem it might develop should therefore be repaired as quickly as possible.";
		//this.mcCylinderHead.txtComponentLink = "1136";
		this.mcCylinderHead.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/cylinder-head";
		
		this.mcHeadGasket.txtComponentName = "Head Gasket";
		this.mcHeadGasket.txtComponentDescription = "A head gasket acts as the seal between the engine block and cylinder head. It seals the combustion gases within the engine and keeps out the coolant that is designed to cool the engine cylinder. If you don’t notice the early symptoms of head gasket leaks and continue to drive the car, things will get progressively worse. And should the head gasket blow, some motorists may find it cheaper to scrap the vehicle than fork out to have it repaired.";
		//this.mcHeadGasket.txtComponentLink = "1128";
		this.mcHeadGasket.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/head-gasket";
		
		this.mcFreezePlug.txtComponentName = "Freeze Plug";
		this.mcFreezePlug.txtComponentDescription = "Commonly known as a freeze plug, core plug, or expansion plug, this engine component is left over from the casting process when the engine block was manufactured. Corrosion can result in the core plug leaking leading to more severe problems due to overheating.";
		//this.mcFreezePlug.txtComponentLink = "1130";
		this.mcFreezePlug.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/engine-block";
		
		this.mcEngineBlock.txtComponentName = "Engine Block";
		this.mcEngineBlock.txtComponentDescription = "The engine or cylinder block is the key component of an internal combustion engine, where the power to drive the vehicle is generated by igniting a mixture of fuel and air to produce an explosion. Performing a number of functions, the engine block needs to be monitored to ensure the engine – and car as a whole – continue to run safely. Leave a problem unchecked, and it could cost you thousands to repair. But there are ways to recognise the symptoms before the problem gets worse.";
		//this.mcEngineBlock.txtComponentLink = "1130";
		this.mcEngineBlock.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/engine-block";
		
		
		this.mcHeaterCore.txtComponentName = "Heater Core";
		this.mcHeaterCore.txtComponentDescription = "The heater core is also known as the heater matrix. Instead of removing heat to the outside air like the radiator, the heater core transfers heat to the vehicle interior to help keep you warm. If the heater core leaks, you may no longer be able to warm up your vehicle’s interior, and more coolant than usual may be being used up. Getting this replaced or repaired is a time consuming and expensive job.";
		//this.mcHeaterCore.txtComponentLink = "1132";
		this.mcHeaterCore.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/heater-core";
		
		
		// !!!!!!!!!!!!!!!!!!!!!!!!!
		// !-- Stop editing here --!
		// !!!!!!!!!!!!!!!!!!!!!!!!!
		
		//adjust component target X and Y
		this.mcRadiator.targetX = 223;
		this.mcRadiator.targetY = 537;
		
		this.mcHoseLower.targetX = 845;
		this.mcHoseLower.targetY = 680;
		
		this.mcReservoir.targetX = 530;
		this.mcReservoir.targetY = 773;
		
		this.mcThermostat.targetX = 954;
		this.mcThermostat.targetY = 445;
		
		this.mcHoseWaterPump.targetX = 697;
		this.mcHoseWaterPump.targetY = 457;
		
		this.mcIntakeManifold.targetX = 770;
		this.mcIntakeManifold.targetY = 535;
		
		this.mcWaterPump.targetX = 407;
		this.mcWaterPump.targetY = 538;
		
		this.mcCylinderHead.targetX = 626;
		this.mcCylinderHead.targetY = 144;
		
		this.mcHeadGasket.targetX = 622;
		this.mcHeadGasket.targetY = 295;
		
		this.mcFreezePlug.targetX = 864;
		this.mcFreezePlug.targetY = 664;
		
		this.mcEngineBlock.targetX = 623;
		this.mcEngineBlock.targetY = 526;
		
		this.mcHoseHeaterCore.targetX = 881;
		this.mcHoseHeaterCore.targetY = 345;
		
		this.mcHeaterCore.targetX = 972;
		this.mcHeaterCore.targetY = 283;
		
		this.mcHoseReturn.targetX = 395;
		this.mcHoseReturn.targetY = 356;
		
		
		//initialize original z-index
		this.mcRadiator.originZ = 14;
		this.mcHoseLower.originZ = 13;
		this.mcReservoir.originZ = 12;
		this.mcThermostat.originZ = 11;
		this.mcHoseWaterPump.originZ = 10;
		this.mcIntakeManifold.originZ = 9;
		this.mcWaterPump.originZ = 8;
		this.mcCylinderHead.originZ = 7;
		this.mcHeadGasket.originZ = 6;
		this.mcFreezePlug.originZ = 5;
		this.mcEngineBlock.originZ = 4;
		this.mcHoseHeaterCore.originZ = 3;
		this.mcHeaterCore.originZ = 2;
		this.mcHoseReturn.originZ = 1;
		
		//reorders components into correct z-order stack
		function resetZ() {
			engineComponents.forEach(function(item, index, array) {
				item.parent.setChildIndex(item, item.originZ);
			});
		}
		
		////mouse over listener
		stage.enableMouseOver(10);
		var mouse = {x:0, y:0};
		
		
		//stage mouseover listener
		stage.addEventListener("mouseover", over.bind(this));
		function over(){
			//explode the components to their target locations
		  engineComponents.forEach(function(item, index, array) {
				TweenLite.to(item, 0.75, {y:item.targetY, x:item.targetX, ease:Power1.easeInOut});
			});
			
		}
		
		stage.addEventListener("mouseout", out.bind(this));
		function out(){
			//implode the components to their original location
		  engineComponents.forEach(function(item, index, array) {
				TweenLite.to(item, 0.75, {x:item.originX, y:item.originY, ease:Power1.easeInOut});
			});
		}
		
		
		//when mouse rolls over a component
		function componentRollOver(e) {
			
			var compName = e.currentTarget.txtComponentName;
			var compDesc = e.currentTarget.txtComponentDescription;
			var compLink = e.currentTarget.txtComponentLink;
			
			jQuery('.lightbox .dialogue-box').html('<h2>' + compName + '</h2>' + '<p>' + compDesc + '</p>' + '<a href="'+ compLink +'" class="btn-primary btn">Learn More </a>');
			
			jQuery('.tooltip-title').html(compName).show();
			
			if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { jQuery('.phone-moreinfo').show(); }
						
			jQuery('.canvas-wrap').css( 'cursor', 'pointer' );
			
			
			//scale up the target
			TweenLite.to(e.currentTarget, 0.3, {scaleX:1.1, scaleY:1.1, ease:Power1.easeInOut});
			//pop it to the top of the Z index stack
			e.currentTarget.parent.setChildIndex( e.currentTarget, e.currentTarget.parent.getNumChildren()-1 );
			
			//get values for bitmap cache
			var cachewidth = e.currentTarget.getBounds().width;
			var cacheheight = e.currentTarget.getBounds().height;
			var cacheleft = cachewidth * -0.5;
			var cachetop = cacheheight * -0.5;
			
			//crate bitmap cache for GSAP EaselPlugin
			e.currentTarget.cache(cacheleft, cachetop, cachewidth, cacheheight, 2); //left, top, width, height
			
			//colorize the target component
			TweenLite.to(e.currentTarget, 0.3, {easel:{colorize:"#F56723", colorizeAmount:1}});
		
			//set the callout text and link
			root.mcCallout.txtComponentName.text = e.currentTarget.txtComponentName;
			root.mcCallout.txtComponentDescription.text = e.currentTarget.txtComponentDescription;
			currentComponentLink = e.currentTarget.txtComponentLink;
			
			calloutShow += 1;
			calloutVisibility();
		
			//set position of callout
			var calloutWidth = root.mcCallout.getBounds().width;
			var calloutHeight = root.mcCallout.getBounds().width;	
			var calloutSide = 1;
			
			//decide whether callout should appear to right or left of component
			if(e.currentTarget.x > root.stage.getBounds().width - (calloutWidth/2) - (cachewidth/2) - 50){
				calloutSide = -1;
			}
			
			//set x of callout
			root.mcCallout.x = e.currentTarget.x + (((cachewidth/2) + (calloutWidth/2) + 25) * calloutSide);
			
			//set y of callout
			if(e.currentTarget.y < (calloutHeight/2) + 100){
				//too high
				root.mcCallout.y = (calloutHeight/2) + 100;
			} else if(e.currentTarget.y > root.stage.getBounds().height - (calloutHeight/2) - 100) {
				//too low
				root.mcCallout.y = root.stage.getBounds().height - (calloutHeight/2);
			} else {
				//just right
				root.mcCallout.y = e.currentTarget.y;
			}
			
			
		//	callout.parent.setChildIndex(callout, callout.parent.getNumChildren()-1 );
		}
		
		//when mouse rolls off a component
		function componentRollOut(e) {
			calloutShow -= 1;
			calloutVisibility();
								
			//return target to original Z index
			e.currentTarget.parent.setChildIndex(e.currentTarget, e.currentTarget.originZ);
				
			//scale down target
			TweenLite.to(e.currentTarget, 0.3, {scaleX:1, scaleY:1, ease:Power1.easeInOut});
				
			//de-colorize target
			TweenLite.to(e.currentTarget, 0.3, {easel:{colorize:"#F56723", colorizeAmount:0}});
			
		}
		
		//decides if Callout should be visible
		function calloutVisibility(){
			//if callout has 1 or more reasons to show
			//console.log(calloutShow);
			if(calloutShow > 0) {
				//show the callout
				root.mcCallout.visible = false;
				//pop it to the top of the z index stack
				root.mcCallout.parent.setChildIndex( root.mcCallout, root.mcCallout.parent.getNumChildren()-1 );
			} else {
				//otherwise hide callout
				root.mcCallout.visible = false;
				calloutShow = 0;
			}
		}
		
		//add component mouseover listener
		this.mcCallout.addEventListener("mouseover", calloutRollOver);
			
		//add component mouseout listener
		this.mcCallout.addEventListener("mouseout", calloutRollOut);
		
		function calloutRollOver(){
			calloutShow += 1;
			calloutVisibility();
		}
		
		function calloutRollOut() {
			calloutShow -= 1;
			calloutVisibility();
		}
	}

	// actions tween:
	this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(2));

	// callout
	this.mcCallout = new lib.mcCallout();
	this.mcCallout.name = "mcCallout";
	this.mcCallout.parent = this;
	this.mcCallout.setTransform(1029.9,714);

	this.timeline.addTween(cjs.Tween.get(this.mcCallout).wait(2));

	// radiator
	this.mcRadiator = new lib.mcRadiator();
	this.mcRadiator.name = "mcRadiator";
	this.mcRadiator.parent = this;
	this.mcRadiator.setTransform(308.5,387.9);

	this.timeline.addTween(cjs.Tween.get(this.mcRadiator).wait(1).to({x:223,y:537},0).wait(1));

	// hose lower
	this.mcHoseLower = new lib.mcHoseLower();
	this.mcHoseLower.name = "mcHoseLower";
	this.mcHoseLower.parent = this;
	this.mcHoseLower.setTransform(709.1,406.6);

	this.timeline.addTween(cjs.Tween.get(this.mcHoseLower).wait(1).to({x:845,y:671},0).wait(1));

	// reservoir
	this.mcReservoir = new lib.mcReservoir();
	this.mcReservoir.name = "mcReservoir";
	this.mcReservoir.parent = this;
	this.mcReservoir.setTransform(521.2,322.9);

	this.timeline.addTween(cjs.Tween.get(this.mcReservoir).wait(1).to({x:530,y:773},0).wait(1));

	// thermostat
	this.mcThermostat = new lib.mcThermostat();
	this.mcThermostat.name = "mcThermostat";
	this.mcThermostat.parent = this;
	this.mcThermostat.setTransform(889.5,235.2);

	this.timeline.addTween(cjs.Tween.get(this.mcThermostat).wait(1).to({x:95445,y:445.5},0).wait(1));

	// hose water pump
	this.mcHoseWaterPump = new lib.mcHoseWaterPump();
	this.mcHoseWaterPump.name = "mcHoseWaterPump";
	this.mcHoseWaterPump.parent = this;
	this.mcHoseWaterPump.setTransform(695.9,324.6);

	this.timeline.addTween(cjs.Tween.get(this.mcHoseWaterPump).wait(1).to({x:697.3,y:456.8},0).wait(1));

	// intake manifold
	this.mcIntakeManifold = new lib.mcIntakeManifold();
	this.mcIntakeManifold.name = "mcIntakeManifold";
	this.mcIntakeManifold.parent = this;
	this.mcIntakeManifold.setTransform(709.6,290.5);

	this.timeline.addTween(cjs.Tween.get(this.mcIntakeManifold).wait(1).to({x:770.3,y:535.1},0).wait(1));

	// water pump
	this.mcWaterPump = new lib.mcWaterPump();
	this.mcWaterPump.name = "mcWaterPump";
	this.mcWaterPump.parent = this;
	this.mcWaterPump.setTransform(489.1,389.1);

	this.timeline.addTween(cjs.Tween.get(this.mcWaterPump).wait(1).to({x:407.4,y:538},0).wait(1));

	// cylinder head
	this.mcCylinderHead = new lib.mcCylinderHead();
	this.mcCylinderHead.name = "mcCylinderHead";
	this.mcCylinderHead.parent = this;
	this.mcCylinderHead.setTransform(625.6,199.7);

	this.timeline.addTween(cjs.Tween.get(this.mcCylinderHead).wait(1).to({x:626.6,y:144},0).wait(1));

	// head gasket
	this.mcHeadGasket = new lib.mcHeadGasket();
	this.mcHeadGasket.name = "mcHeadGasket";
	this.mcHeadGasket.parent = this;
	this.mcHeadGasket.setTransform(621.6,250.6);

	this.timeline.addTween(cjs.Tween.get(this.mcHeadGasket).wait(1).to({y:294.7},0).wait(1));

	// freeze plug
	this.mcFreezePlug = new lib.mcFreezePlug();
	this.mcFreezePlug.name = "mcFreezePlug";
	this.mcFreezePlug.parent = this;
	this.mcFreezePlug.setTransform(684.8,430.6);

	this.timeline.addTween(cjs.Tween.get(this.mcFreezePlug).wait(1).to({x:824.5,y:663.7},0).wait(1));

	// engine block
	this.mcEngineBlock = new lib.mcEngineBlock();
	this.mcEngineBlock.name = "mcEngineBlock";
	this.mcEngineBlock.parent = this;
	this.mcEngineBlock.setTransform(623,391.6);

	this.timeline.addTween(cjs.Tween.get(this.mcEngineBlock).wait(1).to({x:623.3,y:525.6},0).wait(1));

	// hose heater core
	this.mcHoseHeaterCore = new lib.mcHoseHeaterCore();
	this.mcHoseHeaterCore.name = "mcHoseHeaterCore";
	this.mcHoseHeaterCore.parent = this;
	this.mcHoseHeaterCore.setTransform(900.2,183.8);

	this.timeline.addTween(cjs.Tween.get(this.mcHoseHeaterCore).wait(1).to({x:881.3,y:345.5},0).wait(1));

	// heater core
	this.mcHeaterCore = new lib.mcHeaterCore();
	this.mcHeaterCore.name = "mcHeaterCore";
	this.mcHeaterCore.parent = this;
	this.mcHeaterCore.setTransform(932,144.7);

	this.timeline.addTween(cjs.Tween.get(this.mcHeaterCore).wait(1).to({x:971.9,y:283.3},0).wait(1));

	// hose return
	this.mcHoseReturn = new lib.mcHoseReturn();
	this.mcHoseReturn.name = "mcHoseReturn";
	this.mcHoseReturn.parent = this;
	this.mcHoseReturn.setTransform(362.4,201);

	this.timeline.addTween(cjs.Tween.get(this.mcHoseReturn).wait(1).to({x:395,y:356.4},0).wait(1));

	// background
	this.shape = new cjs.Shape();
	this.shape.graphics.f().s().p("EhdvBGUMAAAiMnMC7fAAAMAAACMng");
	this.shape.setTransform(600,450);

	this.timeline.addTween(cjs.Tween.get(this.shape).wait(2));

}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(600,450,1200,904);
// library properties:
lib.properties = {
	id: '6DEFC84FD411479E841AF2F7606C5481',
	width: 1200,
	height: 900,
	fps: 24,
	color: "#FFFFFF",
	opacity: 0.00,
	webfonts: {},
	manifest: [
		{src:"https://www.kseal.com/wp-content/uploads/2017/11/kseal_engine_components_atlas_.png", id:"kseal_engine_components_new_atlas_"}
	],
	preloads: []
};



// bootstrap callback support:

(lib.Stage = function(canvas) {
	createjs.Stage.call(this, canvas);
}).prototype = p = new createjs.Stage();

p.setAutoPlay = function(autoPlay) {
	this.tickEnabled = autoPlay;
}
p.play = function() { this.tickEnabled = true; this.getChildAt(0).gotoAndPlay(this.getTimelinePosition()) }
p.stop = function(ms) { if(ms) this.seek(ms); this.tickEnabled = false; }
p.seek = function(ms) { this.tickEnabled = true; this.getChildAt(0).gotoAndStop(lib.properties.fps * ms / 1000); }
p.getDuration = function() { return this.getChildAt(0).totalFrames / lib.properties.fps * 1000; }

p.getTimelinePosition = function() { return this.getChildAt(0).currentFrame / lib.properties.fps * 1000; }

an.bootcompsLoaded = an.bootcompsLoaded || [];
if(!an.bootstrapListeners) {
	an.bootstrapListeners=[];
}

an.bootstrapCallback=function(fnCallback) {
	an.bootstrapListeners.push(fnCallback);
	if(an.bootcompsLoaded.length > 0) {
		for(var i=0; i<an.bootcompsLoaded.length; ++i) {
			fnCallback(an.bootcompsLoaded[i]);
		}
	}
};

an.compositions = an.compositions || {};
an.compositions['6DEFC84FD411479E841AF2F7606C5481'] = {
	getStage: function() { return exportRoot.getStage(); },
	getLibrary: function() { return lib; },
	getSpriteSheet: function() { return ss; },
	getImages: function() { return img; }
};

an.compositionLoaded = function(id) {
	an.bootcompsLoaded.push(id);
	for(var j=0; j<an.bootstrapListeners.length; j++) {
		an.bootstrapListeners[j](id);
	}
}

an.getComposition = function(id) {
	return an.compositions[id];
}



})(createjs = createjs||{}, AdobeAn = AdobeAn||{});
var createjs, AdobeAn;
</script>{"id":2192,"date":"2012-02-27T15:52:00","date_gmt":"2012-02-27T15:52:00","guid":{"rendered":"https:\/\/www.kseal.com\/common-problems\/engine-block-repair\/"},"modified":"2026-01-28T16:12:17","modified_gmt":"2026-01-28T16:12:17","slug":"engine-block","status":"publish","type":"page","link":"https:\/\/www.kseal.com\/ie\/expert-advice\/engine-problems\/engine-block","title":{"rendered":"What is an engine block? Signs of a cracked engine block and how to repair"},"content":{"rendered":"<h2><b>What is an engine block?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The engine block, also known as the cylinder block, is the key component of an internal combustion engine, where the power to drive the vehicle is generated by igniting a fuel\/air mixture to produce an explosion.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5980\" src=\"https:\/\/www.kseal.com\/wp-content\/uploads\/2012\/02\/Engine-Block-e1500559875691.jpg\" alt=\"Engine Block\" width=\"600\" height=\"383\" \/><\/p>\n<h2><b>How does an engine block work?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The engine block performs several functions, including:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Assisting with the pumping of water from the radiator to the different parts of the engine to cool them down.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Housing pistons in several cylinders that move the vehicle\u2019s crankshaft.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Sealing in the lubricating oil via the oil pan attached to the bottom, and acting as the housing for the various valves, gaskets and seals that work together to keep the engine and the car as a whole running safely.<\/span><\/li>\n<\/ul>\n<h2><b>What causes a crack in the engine block?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Heat is the primary enemy of the engine block. If it overheats, the metal will become stressed and will eventually fail, leading to a crack in the engine block.<\/span> <span style=\"font-weight: 400;\">Discover a few of the main culprits below:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The primary culprit of a cracked engine block, often linked to coolant issues, is <\/span><b>excess heat<\/b><span style=\"font-weight: 400;\">. Overheated sections of the engine expand, while cooler areas do not. This places stress on the engine block, causing a crack in the engine to form.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Another issue leading to a cracked engine block and still related to excess heat is <\/span><b>water pump failure<\/b><span style=\"font-weight: 400;\">. The failure of a water pump disables proper coolant flow, leading to severe overheating.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Casting failure during injection <\/b><b>molding<\/b>\u00a0<span style=\"font-weight: 400;\">can also cause issues with the engine block. If the <\/span><span style=\"font-weight: 400;\">molding<\/span><span style=\"font-weight: 400;\">\u00a0results in thinner sections on the engine block metal, the application of heat to these thinner areas can lead to the formation of engine cracks.<\/span><\/li>\n<\/ul>\n<h2><b>Cracked engine block symptoms: How to identify signs of a cracked engine block<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">A cracked engine block can cause a range of problems. Ultimately, since the circulation system that cools the engine is comparatively fragile, a cracked engine block will lead to <\/span><a href=\"https:\/\/www.kseal.com\/ie\/expert-advice\/what-causes-coolant-to-leak\"><span style=\"font-weight: 400;\">coolant leaking<\/span><\/a><span style=\"font-weight: 400;\"> out of the area it is needed and leaving the engine to overheat. If left untreated, this will lead to engine failure and may result in the vehicle having to be written off.\u00a0<\/span><\/p>\n<p>Cracked engine block symptoms can include:<\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Discoloration<\/span><span style=\"font-weight: 400;\">\u00a0in car<\/span><span style=\"font-weight: 400;\"> oil and antifreeze mixing<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Leaking oil or coolant<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Engine overheating <\/span><span style=\"font-weight: 400;\">caused by leaking antifreeze<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Low engine compression <\/span><span style=\"font-weight: 400;\">and poor engine performance<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Frozen coolant in the car radiator<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Low levels of coolant<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Excessive engine smoke<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Visible crack in the block<\/span><\/li>\n<\/ul>\n<h2><b>How much will an engine block repair cost at a workshop?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">A<\/span><span style=\"font-weight: 400;\"> cracked<\/span><span style=\"font-weight: 400;\"> engine block will leave you stranded and, more often than not, facing a huge repair bill (<\/span><span style=\"font-weight: 400;\">at least <\/span><span style=\"font-weight: 400;\">$1,200<\/span><span style=\"font-weight: 400;\">, probably more).\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cracked engine block repair costs vary depending on the damage, the repair method and your vehicle. In some cases, it may be cheaper to replace the engine or the car entirely. But if the crack in the engine block isn\u2019t too severe, <\/span><a href=\"https:\/\/www.kseal.com\/ie\/products\"><span style=\"font-weight: 400;\">K-Seal<\/span><\/a><span style=\"font-weight: 400;\"> could fix the issue for a fraction of the cost.<\/span><\/p>\n<h2><b>Can K-Seal fix my cracked engine block?<\/b><\/h2>\n<p><a href=\"https:\/\/www.kseal.com\/ie\/expert-advice\/difference-k-seal-k-seal-hd\"><span style=\"font-weight: 400;\">K-Seal and K-Seal HD<\/span><\/a><span style=\"font-weight: 400;\"> will repair most engine block failures, including:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Engine coolant leaks<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cracked engine blocks<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Porous blocks<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Core plug or freeze plug failure<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">With a replacement block costing thousands, it\u2019s well worth trying to fix the problem with K-Seal before going down this route. K-Seal will seal the cracks in engine blocks that cause coolant leaks, to get you back on the road and save you a small fortune.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Want to get hold of a bottle to fix your engine block? <\/span><a href=\"https:\/\/www.kseal.com\/ie\/where-to-buy\"><span style=\"font-weight: 400;\">Use our simple stockist search<\/span><\/a> <span style=\"font-weight: 400;\">and get back on the road \u2013 fast.<\/span><\/p>\n<h2><b>Engine block sleeves and resleeving: What you need to know<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Engine block sleeves are used in both high performance motors, such as racing cars, and everyday vehicles to repair or restore <\/span><a href=\"https:\/\/www.kseal.com\/ie\/expert-advice\/engine-problems\/cylinder-head\"><span style=\"font-weight: 400;\">damaged cylinders<\/span><\/a><span style=\"font-weight: 400;\"> inside the engine block. These sleeves fit over the cylinder\u2019s original lining to bring it back to the correct circumference, keeping it in place to help the engine maintain proper compression and performance.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">They\u2019re typically used when cylinders are:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Excessively worn and tapered down<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Scored<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cracked<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">If the damage is more severe, particularly inside the cylinders, engine block resleeving may be required. This process involves removing the damaged lining and installing new sleeves to restore engine performance.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Key things to know about engine block resleeving:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Often used in high-performance or racing engines, but also suitable for everyday vehicles.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A highly technical job that should be done by professionals.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Helps extend the life of an engine that would otherwise need replacing.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">That said, if the crack is limited to an external area and causing a coolant leak, a product like <\/span><a href=\"https:\/\/www.kseal.com\/ie\/products\/k-seal\"><span style=\"font-weight: 400;\">K-Seal<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/www.kseal.com\/ie\/products\/k-seal-ultimate\"><span style=\"font-weight: 400;\">K-Seal Ultimate<\/span><\/a><span style=\"font-weight: 400;\"> or <\/span><a href=\"https:\/\/www.kseal.com\/ie\/products\/k-seal-hd\"><span style=\"font-weight: 400;\">K-Seal HD<\/span><\/a><span style=\"font-weight: 400;\"> may be able to seal it \u2014 saving you the cost and downtime of a full rebuild.<\/span><\/p>\n<h3><span style=\"font-weight: 600;\">Could Other Parts of My Engine Be Affected?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Although your engine block could be the source of your engine troubles, it might not be the only component you need to take a look at. Select an engine part in the interactive diagram below to explore your engine and the important components that keep everything ticking over.<\/span><\/p>\n<div class=\"schematic-desc\">Click on the engine components below for details<div class=\"tooltip-title\"><\/div><a href=\"javascript:void(0);\" class=\"phone-moreinfo\">More Info &raquo;<\/a><\/div><div id=\"smallWrap\" class=\"canvas-wrap\">\r\n\t<div id=\"animation_container\" style=\"background-color:rgba(255, 255, 255, 0.00); width:100% !important; height:auto !important\">\r\n\t\t<canvas id=\"canvas\" width=\"1200\" height=\"900\" style=\"position: absolute; display: block; background-color:rgba(255, 255, 255, 0.00);\"><\/canvas>\r\n\t\t<div id=\"dom_overlay_container\" style=\"pointer-events:none; overflow:hidden; width:100% !important; height:auto !important; position: absolute; left: 0px; top: 0px; display: block;\">\r\n\t\t<\/div>\r\n\t<\/div><\/div>  \r\n\n","protected":false},"excerpt":{"rendered":"<p>What is an engine block? The engine block, also known as the cylinder block, is the key component of an internal combustion engine, where the power to drive the vehicle is generated by igniting a fuel\/air mixture to produce an explosion. How does an engine block work? The engine block performs several functions, including: Assisting<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":169,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"acf":[],"_links":{"self":[{"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/pages\/2192"}],"collection":[{"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/comments?post=2192"}],"version-history":[{"count":20,"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/pages\/2192\/revisions"}],"predecessor-version":[{"id":20970,"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/pages\/2192\/revisions\/20970"}],"up":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/pages\/169"}],"wp:attachment":[{"href":"https:\/\/www.kseal.com\/ie\/wp-json\/wp\/v2\/media?parent=2192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}