| 
					
				 | 
			
			
				@@ -1490,6 +1490,22 @@ referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.Package); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_sortedClasses'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('sortedClasses'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'classes', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(smalltalk.send(self, "_classes", []), "_inject_into_", [[], (function(acc, each){return ((($receiver = smalltalk.send(acc, "_isEmpty", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function($rec){smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);})(acc);})() : (function(){return ((($receiver = smalltalk.send(acc, "_includes_", [smalltalk.send(each, "_superclass", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function($rec){smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);})(acc);})() : (function(){return smalltalk.send([each], "__comma", [acc]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return (function($rec){smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);})(acc);}), (function(){return smalltalk.send([each], "__comma", [acc]);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return (function($rec){smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);})(acc);}), (function(){return ((($receiver = smalltalk.send(acc, "_includes_", [smalltalk.send(each, "_superclass", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function($rec){smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);})(acc);})() : (function(){return smalltalk.send([each], "__comma", [acc]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return (function($rec){smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);})(acc);}), (function(){return smalltalk.send([each], "__comma", [acc]);})]));})]));})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('sortedClasses%0A%09%22Answer%20all%20classes%20in%20the%20receiver%2C%20sorted%20by%20superclass/subclasses%22%0A%09%0A%09%5Eself%20classes%20inject%3A%20%23%28%29%20into%3A%20%5B%3Aacc%20%3Aeach%20%7C%20%0A%09%09acc%20isEmpty%20%0A%09%09%09ifTrue%3A%20%5Bacc%20add%3A%20each%3B%20yourself%5D%0A%09%09%09ifFalse%3A%20%5B%28acc%20includes%3A%20each%20superclass%29%0A%09%09%09%09ifTrue%3A%20%5Bacc%20add%3A%20each%3B%20yourself%5D%0A%09%09%09%09ifFalse%3A%20%5B%7Beach%7D%2C%20acc%5D%5D%5D'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["inject:into:", "classes", "ifTrue:ifFalse:", "isEmpty", "add:", "yourself", "includes:", "superclass", unescape("%2C")], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Package); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2159,22 +2175,6 @@ referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.Number); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_%5C'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('%5C'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNumber){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self % aNumber; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNumber"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape(''), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Number); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 unescape('_to_by_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3472,40 +3472,156 @@ referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.UndefinedObject.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('Random', smalltalk.Object, [], 'Kernel-Objects'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Random.comment=unescape('%60Random%60%20is%20a%20random%20number%20generator%20and%20is%20implemented%20as%20a%20trivial%20wrapper%20around%20javascript%20%60Math.random%28%29%60%20and%20is%20used%20like%20this%3A%0A%0A%09Random%20new%20next%0A%0AThis%20will%20return%20a%20float%20x%20where%20x%20%3C%201%20and%20x%20%3E%200.%20If%20you%20want%20a%20random%20integer%20from%201%20to%2010%20you%20can%20use%20%60%23atRandom%60%0A%0A%0910%20atRandom%0A%0A...and%20if%20you%20want%20a%20random%20number%20in%20a%20specific%20interval%20this%20also%20works%3A%0A%0A%09%283%20to%3A%207%29%20atRandom%0A%0A...but%20be%20aware%20that%20%60%23to%3A%60%20does%20not%20create%20an%20Interval%20as%20in%20other%20Smalltalk%20implementations%20but%20in%20fact%20an%20%60Array%60%20of%20numbers%2C%20so%20it%27s%20better%20to%20use%3A%0A%0A%095%20atRandom%20+%202%0A%0ASince%20%60%23atRandom%60%20is%20implemented%20in%20%60SequencableCollection%60%20you%20can%20easy%20pick%20an%20element%20at%20random%3A%0A%0A%09%23%28%27a%27%20%27b%27%20%27c%27%29%20atRandom%0A%0A...or%20perhaps%20a%20letter%20from%20a%20%60String%60%3A%0A%0A%09%27abc%27%20atRandom%0A%0ASince%20Amber%20does%20not%20have%20Characters%20this%20will%20return%20a%20%60String%60%20of%20length%201%20like%20for%20example%20%60%27b%27%60.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('JSObjectProxy', smalltalk.Object, ['jsObject'], 'Kernel-Objects'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy.comment=unescape('JSObjectProxy%20handles%20sending%20messages%20to%20JavaScript%20object%2C%20therefore%20accessing%20JavaScript%20objects%20from%20Amber%20is%20transparent.%0AJSOjbectProxy%20makes%20intensive%20use%20of%20%60%23doesNotUnderstand%3A%60.%0A%0A%23%23%20Examples%0A%0AJSObjectProxy%20objects%20are%20instanciated%20by%20Amber%20when%20a%20Smalltalk%20message%20is%20sent%20to%20a%20JavaScript%20object.%0A%0A%20%20%20%20window%20alert%3A%20%27hello%20world%27.%0A%20%20%20%20window%20inspect.%0A%20%20%20%20%28window%20jQuery%3A%20%27body%27%29%20append%3A%20%27hello%20world%27%0A%0ASmalltalk%20messages%20sends%20are%20converted%20to%20JavaScript%20function%20calls%20or%20object%20property%20access%20_%28in%20this%20order%29_.%20If%20n%20one%20of%20them%20match%2C%20a%20%60MessageNotUnderstood%60%20error%20will%20be%20thrown.%20%0A%0A%23%23%20Message%20conversion%20rules%0A%0A-%20%60someUser%20name%60%20becomes%20%20%60someUser.name%60%0A-%20%60someUser%20name%3A%20%27John%27%60%20becomes%20%60someUser%20name%20%3D%20%22John%22%60%0A-%20%60console%20log%3A%20%27hello%20world%27%60%20becomes%20%60console.log%28%27hello%20world%27%29%60%0A-%20%60%28window%20jQuery%3A%20%27foo%27%29%20css%3A%20%27background%27%20color%3A%20%27red%27%60%20becomes%20%60window.jQuery%28%27foo%27%29.css%28%27background%27%2C%20%27red%27%29%60%0A%0A__Note%3A__%20For%20keyword-based%20messages%2C%20only%20the%20first%20keyword%20is%20kept%3A%20%60window%20foo%3A%201%20bar%3A%202%60%20is%20equivalent%20to%20%60window%20foo%3A%201%20baz%3A%202%60.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_next'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_jsObject_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('next'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('jsObject%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aJSObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(self['@jsObject']=aJSObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aJSObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('jsObject%3A%20aJSObject%0A%09jsObject%20%3A%3D%20aJSObject'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_jsObject'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('jsObject'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return Math.random(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self['@jsObject']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('next%0A%09%3Creturn%20Math.random%28%29%3E'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('jsObject%0A%09%5EjsObject'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Random); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_next_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_printString'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('next%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('printString'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'proxy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(smalltalk.send(self, "_jsObject", []), "_toString", []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('printString%0A%09%5Eself%20jsObject%20toString'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["toString", "jsObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_inspectOn_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('inspectOn%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'proxy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInspector){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var variables=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(variables=smalltalk.send((smalltalk.Dictionary || Dictionary), "_new", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(variables, "_at_put_", [unescape("%23self"), smalltalk.send(self, "_jsObject", [])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(anInspector, "_setLabel_", [smalltalk.send(self, "_printString", [])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for(var i in self['@jsObject']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		variables._at_put_(i, self['@jsObject'][i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(anInspector, "_setVariables_", [variables]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInspector"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('inspectOn%3A%20anInspector%0A%09%7C%20variables%20%7C%0A%09variables%20%3A%3D%20Dictionary%20new.%0A%09variables%20at%3A%20%27%23self%27%20put%3A%20self%20jsObject.%0A%09anInspector%20setLabel%3A%20self%20printString.%0A%09%3Cfor%28var%20i%20in%20self%5B%27@jsObject%27%5D%29%20%7B%0A%09%09variables._at_put_%28i%2C%20self%5B%27@jsObject%27%5D%5Bi%5D%29%3B%0A%09%7D%3E.%0A%09anInspector%20setVariables%3A%20variables'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["new", "at:put:", "jsObject", "setLabel:", "printString", "setVariables:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["Dictionary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_doesNotUnderstand_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('doesNotUnderstand%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'proxy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aMessage){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var obj=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var selector=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var jsSelector=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var arguments=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(obj=smalltalk.send(self, "_jsObject", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(selector=smalltalk.send(aMessage, "_selector", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(jsSelector=smalltalk.send(selector, "_asJavaScriptSelector", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(arguments=smalltalk.send(aMessage, "_arguments", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if(obj[jsSelector] != undefined) {return smalltalk.send(obj, jsSelector, arguments)}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self, "_doesNotUnderstand_", [aMessage], smalltalk.Object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aMessage"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('doesNotUnderstand%3A%20aMessage%0A%09%7C%20obj%20selector%20jsSelector%20arguments%20%7C%0A%09obj%20%3A%3D%20self%20jsObject.%0A%09selector%20%3A%3D%20aMessage%20selector.%0A%09jsSelector%20%3A%3D%20selector%20asJavaScriptSelector.%0A%09arguments%20%3A%3D%20aMessage%20arguments.%0A%09%3Cif%28obj%5BjsSelector%5D%20%21%3D%20undefined%29%20%7Breturn%20smalltalk.send%28obj%2C%20jsSelector%2C%20arguments%29%7D%3E.%0A%09super%20doesNotUnderstand%3A%20aMessage'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["jsObject", "selector", "asJavaScriptSelector", "arguments", "doesNotUnderstand:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_at_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('at%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (anInteger){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aSymbol){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(smalltalk.send((1), "_to_", [anInteger]), "_collect_", [(function(each){return smalltalk.send(self, "_next", []);})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var attr=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(attr=smalltalk.send(aSymbol, "_asString", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self['@jsObject'][attr]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["anInteger"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('next%3A%20anInteger%0A%20%20%20%20%5E%281%20to%3A%20anInteger%29%20collect%3A%20%5B%3Aeach%20%7C%20self%20next%5D'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["collect:", "to:", "next"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aSymbol"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('at%3A%20aSymbol%0A%09%7C%20attr%20%7C%0A%09attr%20%3A%3D%20aSymbol%20asString.%0A%09%3Creturn%20self%5B%27@jsObject%27%5D%5Battr%5D%3E'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["asString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Random); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_at_put_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('at%3Aput%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aSymbol, anObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var attr=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(attr=smalltalk.send(aSymbol, "_asString", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+self['@jsObject'][attr] = anObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aSymbol", "anObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('at%3A%20aSymbol%20put%3A%20anObject%0A%09%7C%20attr%20%7C%0A%09attr%20%3A%3D%20aSymbol%20asString.%0A%09%3Cself%5B%27@jsObject%27%5D%5Battr%5D%20%3D%20anObject%3E'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["asString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_on_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('on%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'instance creation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aJSObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return (function($rec){smalltalk.send($rec, "_jsObject_", [aJSObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aJSObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('on%3A%20aJSObject%0A%09%5Eself%20new%0A%09%09jsObject%3A%20aJSObject%3B%0A%09%09yourself'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["jsObject:", "yourself", "new"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSObjectProxy.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addClass('Point', smalltalk.Object, ['x', 'y'], 'Kernel-Objects'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3704,155 +3820,39 @@ referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.Point.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('JSObjectProxy', smalltalk.Object, ['jsObject'], 'Kernel-Objects'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy.comment=unescape('JSObjectProxy%20handles%20sending%20messages%20to%20JavaScript%20object%2C%20therefore%20accessing%20JavaScript%20objects%20from%20Amber%20is%20transparent.%0AJSOjbectProxy%20makes%20intensive%20use%20of%20%60%23doesNotUnderstand%3A%60.%0A%0A%23%23%20Examples%0A%0AJSObjectProxy%20objects%20are%20instanciated%20by%20Amber%20when%20a%20Smalltalk%20message%20is%20sent%20to%20a%20JavaScript%20object.%0A%0A%20%20%20%20window%20alert%3A%20%27hello%20world%27.%0A%20%20%20%20window%20inspect.%0A%20%20%20%20%28window%20jQuery%3A%20%27body%27%29%20append%3A%20%27hello%20world%27%0A%0ASmalltalk%20messages%20sends%20are%20converted%20to%20JavaScript%20function%20calls%20or%20object%20property%20access%20_%28in%20this%20order%29_.%20If%20n%20one%20of%20them%20match%2C%20a%20%60MessageNotUnderstood%60%20error%20will%20be%20thrown.%20%0A%0A%23%23%20Message%20conversion%20rules%0A%0A-%20%60someUser%20name%60%20becomes%20%20%60someUser.name%60%0A-%20%60someUser%20name%3A%20%27John%27%60%20becomes%20%60someUser%20name%20%3D%20%22John%22%60%0A-%20%60console%20log%3A%20%27hello%20world%27%60%20becomes%20%60console.log%28%27hello%20world%27%29%60%0A-%20%60%28window%20jQuery%3A%20%27foo%27%29%20css%3A%20%27background%27%20color%3A%20%27red%27%60%20becomes%20%60window.jQuery%28%27foo%27%29.css%28%27background%27%2C%20%27red%27%29%60%0A%0A__Note%3A__%20For%20keyword-based%20messages%2C%20only%20the%20first%20keyword%20is%20kept%3A%20%60window%20foo%3A%201%20bar%3A%202%60%20is%20equivalent%20to%20%60window%20foo%3A%201%20baz%3A%202%60.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_jsObject_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('jsObject%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aJSObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(self['@jsObject']=aJSObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aJSObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('jsObject%3A%20aJSObject%0A%09jsObject%20%3A%3D%20aJSObject'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('Random', smalltalk.Object, [], 'Kernel-Objects'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Random.comment=unescape('%60Random%60%20is%20a%20random%20number%20generator%20and%20is%20implemented%20as%20a%20trivial%20wrapper%20around%20javascript%20%60Math.random%28%29%60%20and%20is%20used%20like%20this%3A%0A%0A%09Random%20new%20next%0A%0AThis%20will%20return%20a%20float%20x%20where%20x%20%3C%201%20and%20x%20%3E%200.%20If%20you%20want%20a%20random%20integer%20from%201%20to%2010%20you%20can%20use%20%60%23atRandom%60%0A%0A%0910%20atRandom%0A%0A...and%20if%20you%20want%20a%20random%20number%20in%20a%20specific%20interval%20this%20also%20works%3A%0A%0A%09%283%20to%3A%207%29%20atRandom%0A%0A...but%20be%20aware%20that%20%60%23to%3A%60%20does%20not%20create%20an%20Interval%20as%20in%20other%20Smalltalk%20implementations%20but%20in%20fact%20an%20%60Array%60%20of%20numbers%2C%20so%20it%27s%20better%20to%20use%3A%0A%0A%095%20atRandom%20+%202%0A%0ASince%20%60%23atRandom%60%20is%20implemented%20in%20%60SequencableCollection%60%20you%20can%20easy%20pick%20an%20element%20at%20random%3A%0A%0A%09%23%28%27a%27%20%27b%27%20%27c%27%29%20atRandom%0A%0A...or%20perhaps%20a%20letter%20from%20a%20%60String%60%3A%0A%0A%09%27abc%27%20atRandom%0A%0ASince%20Amber%20does%20not%20have%20Characters%20this%20will%20return%20a%20%60String%60%20of%20length%201%20like%20for%20example%20%60%27b%27%60.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_jsObject'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_next'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('jsObject'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('next'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self['@jsObject']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return Math.random(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('jsObject%0A%09%5EjsObject'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('next%0A%09%3Creturn%20Math.random%28%29%3E'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_printString'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('printString'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'proxy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(smalltalk.send(self, "_jsObject", []), "_toString", []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('printString%0A%09%5Eself%20jsObject%20toString'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["toString", "jsObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_inspectOn_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('inspectOn%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'proxy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (anInspector){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var variables=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(variables=smalltalk.send((smalltalk.Dictionary || Dictionary), "_new", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(variables, "_at_put_", [unescape("%23self"), smalltalk.send(self, "_jsObject", [])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(anInspector, "_setLabel_", [smalltalk.send(self, "_printString", [])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-for(var i in self['@jsObject']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		variables._at_put_(i, self['@jsObject'][i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(anInspector, "_setVariables_", [variables]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["anInspector"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('inspectOn%3A%20anInspector%0A%09%7C%20variables%20%7C%0A%09variables%20%3A%3D%20Dictionary%20new.%0A%09variables%20at%3A%20%27%23self%27%20put%3A%20self%20jsObject.%0A%09anInspector%20setLabel%3A%20self%20printString.%0A%09%3Cfor%28var%20i%20in%20self%5B%27@jsObject%27%5D%29%20%7B%0A%09%09variables._at_put_%28i%2C%20self%5B%27@jsObject%27%5D%5Bi%5D%29%3B%0A%09%7D%3E.%0A%09anInspector%20setVariables%3A%20variables'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["new", "at:put:", "jsObject", "setLabel:", "printString", "setVariables:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["Dictionary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_doesNotUnderstand_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('doesNotUnderstand%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'proxy', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aMessage){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var obj=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var selector=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var jsSelector=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var arguments=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(obj=smalltalk.send(self, "_jsObject", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(selector=smalltalk.send(aMessage, "_selector", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(jsSelector=smalltalk.send(selector, "_asJavaScriptSelector", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(arguments=smalltalk.send(aMessage, "_arguments", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if(obj[jsSelector] != undefined) {return smalltalk.send(obj, jsSelector, arguments)}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self, "_doesNotUnderstand_", [aMessage], smalltalk.Object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aMessage"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('doesNotUnderstand%3A%20aMessage%0A%09%7C%20obj%20selector%20jsSelector%20arguments%20%7C%0A%09obj%20%3A%3D%20self%20jsObject.%0A%09selector%20%3A%3D%20aMessage%20selector.%0A%09jsSelector%20%3A%3D%20selector%20asJavaScriptSelector.%0A%09arguments%20%3A%3D%20aMessage%20arguments.%0A%09%3Cif%28obj%5BjsSelector%5D%20%21%3D%20undefined%29%20%7Breturn%20smalltalk.send%28obj%2C%20jsSelector%2C%20arguments%29%7D%3E.%0A%09super%20doesNotUnderstand%3A%20aMessage'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["jsObject", "selector", "asJavaScriptSelector", "arguments", "doesNotUnderstand:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_at_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('at%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aSymbol){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var attr=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(attr=smalltalk.send(aSymbol, "_asString", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self['@jsObject'][attr]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aSymbol"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('at%3A%20aSymbol%0A%09%7C%20attr%20%7C%0A%09attr%20%3A%3D%20aSymbol%20asString.%0A%09%3Creturn%20self%5B%27@jsObject%27%5D%5Battr%5D%3E'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["asString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Random); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_at_put_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unescape('_next_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('at%3Aput%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: unescape('next%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aSymbol, anObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInteger){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var attr=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(attr=smalltalk.send(aSymbol, "_asString", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-self['@jsObject'][attr] = anObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(smalltalk.send((1), "_to_", [anInteger]), "_collect_", [(function(each){return smalltalk.send(self, "_next", []);})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aSymbol", "anObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('at%3A%20aSymbol%20put%3A%20anObject%0A%09%7C%20attr%20%7C%0A%09attr%20%3A%3D%20aSymbol%20asString.%0A%09%3Cself%5B%27@jsObject%27%5D%5Battr%5D%20%3D%20anObject%3E'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["asString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInteger"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: unescape('next%3A%20anInteger%0A%20%20%20%20%5E%281%20to%3A%20anInteger%29%20collect%3A%20%5B%3Aeach%20%7C%20self%20next%5D'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["collect:", "to:", "next"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Random); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unescape('_on_'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: unescape('on%3A'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'instance creation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aJSObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return (function($rec){smalltalk.send($rec, "_jsObject_", [aJSObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aJSObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: unescape('on%3A%20aJSObject%0A%09%5Eself%20new%0A%09%09jsObject%3A%20aJSObject%3B%0A%09%09yourself'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["jsObject:", "yourself", "new"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.JSObjectProxy.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |