"
+
+ def __add__(self, other):
+ self.leds.extend(other)
+ return self
+
+ def __bool__(self):
+ return self.dirty
+
+ def __getitem__(self, index):
+ return self.leds[index]
+
+ def __setitem__(self, index, value):
+ ivalue = self.leds[index]
+ if ivalue != value:
+ self.dirty = True
+ self.leds[index] = value
+
+ def __getattr__(self, name):
+ import word2num
+ name = int(word2num.word2num(name))
+ print(name)
+ if 0 <= name < len(self.leds):
+ return self.leds[name]
+
+
+
+a = Ring()
+print(a)
+b = Ring()
+b.leds[2] = 3
+
+print(a + b)
+
+b.active = True
+
+if b:
+ print("Bexist")
+
+c = [a, b, b, a, a]
+
+d = list(filter(lambda x: bool(x), c))
+
+print(d)
+
+for i, ring in enumerate(c):
+ ring[0] = i
+ print(ring)
+
+print(a, b)
+
+print(f"\u001b[32m{a}")
+print(f"\u001b[37ma")
+
+print(getattr(a, "twenty two"))
+
+# eval(f"getattr(a,\"{input()}\")")
+
+
+# a = r"wow this string is cursed; for example \n"
+
+
+# SEARCHDATA=r"""{ "q": "{QUERY}", "sortCriteria": "relevancy", "numberOfResults": "250", "sortCriteria": "@catalogitemwebdisplaypriority ascending", "searchHub": "products-only-search", "pipeline": "Site Search", "maximumAge": "900000", "tab": "products-search", "locale": "en", "aq": "(NOT @z95xtemplate==(ADB6CA4F03EF4F47B9AC9CE2BA53FF97,FE5DD82648C6436DB87A7C4210C7413B)) ((@syssource==\"website_001002_catalog_index-rg-nc-prod-sitecore-prod\" @catalogitemprimarycategorypublished==true)) ((@catalogitemregionavailable=Global) (@z95xlanguage==en))", "cq": "((@z95xlanguage==en) (@z95xlatestversion==1) (@source==\"Coveo_web_index - rg-nc-prod-sitecore-prod\")) OR (@source==(\"website_001002_catalog_index-rg-nc-prod-sitecore-prod\",\"website_001002_Category_index-rg-nc-prod-sitecore-prod\"))", "firstResult": "0" }, "categoryFacets": "[{\"field\":\"@catalogitemcategories\",\"path\":[],\"injectionDepth\":1000,\"maximumNumberOfValues\":6,\"delimitingCharacter\":\"|\"}]", "facetOptions": "{}", "groupBy": " [{\"field\":\"@contenttype\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[\"Products\"],\"queryOverride\":\"{QUERY}\",\"advancedQueryOverride\":\"(NOT @z95xtemplate==(ADB6CA4F03EF4F47B9AC9CE2BA53FF97,FE5DD82648C6436DB87A7C4210C7413B)) ((((((((@z95xpath=3324AF2D58F64C0FB725521052F679D2 @z95xid<>3324AF2D58F64C0FB725521052F679D2) ((@z95xpath=C292F3A37B3A4E6BAB345DF87ADDE516 @z95xid<>C292F3A37B3A4E6BAB345DF87ADDE516) @z95xtemplate==E4EFEB787BDC4B1A908EFC64D56CB2A4)) OR ((@z95xpath=723501A864754FEEB8AE377E4C710271 @z95xid<>723501A864754FEEB8AE377E4C710271) ((@z95xpath=600114EAB0E5407A84AAA9F0985B6575 @z95xid<>600114EAB0E5407A84AAA9F0985B6575) @z95xtemplate==2BE4FD6B3B2C49EBBD9E1F6C92238B05))) OR (@syssource==\\"website_001002_catalog_index-rg-nc-prod-sitecore-prod\\" @catalogitemprimarycategorypublished==true)) OR ((@z95xpath=3324AF2D58F64C0FB725521052F679D2 @z95xid<>3324AF2D58F64C0FB725521052F679D2) @z95xpath<>C292F3A37B3A4E6BAB345DF87ADDE516)) OR @syssource==\\"website_001002_Category_index-rg-nc-prod-sitecore-prod\\") NOT @z95xtemplate==(ADB6CA4F03EF4F47B9AC9CE2BA53FF97,FE5DD82648C6436DB87A7C4210C7413B))) ((@catalogitemregionavailable=Global) (@z95xlanguage==en) OR (@contenttype=(Blogs,Resources,Other)) (NOT @ez120xcludefromcoveo==1))\",\"constantQueryOverride\":\"((@z95xlanguage==en) (@z95xlatestversion==1) (@source==\\"Coveo_web_index - rg-nc-prod-sitecore-prod\\")) OR (@source==(\\"website_001002_catalog_index-rg-nc-prod-sitecore-prod\\",\\"website_001002_Category_index-rg-nc-prod-sitecore-prod\\"))\"},{\"field\":\"@catalogitembrand\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@catalogitemenvironment\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@catalogitemregionalavailability\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@prez45xtez120xt\",\"maximumNumberOfValues\":5,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@tags\",\"maximumNumberOfValues\":4,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetassettype\",\"maximumNumberOfValues\":3,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetbrand\",\"maximumNumberOfValues\":3,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetmarket\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetsolution\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetsearchcontentpagetype\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]}]" }"""
+
+# QUERY = "AAAAAAAAAAAA"
+
+# b = SEARCHDATA.replace(r"{QUERY}", QUERY)
+
+q = [i * 2 for i in range(10)]
+
+d = {a : b for a,b in enumerate(q)}
+
+print(q)
+
+print(d)
+
+def stalin_sort(a):
+ b = sum(a)
+ b /= len(a)
+ return [b for _ in range(len(a))]
+
+def mao_sort(a):
+ i = 0
+ while i < len(a) - 1:
+ if a[i+1] < a[i]:
+ del a[i]
+ else:
+ i += 1
+ return a
+
+print(stalin_sort(list(range(10))))
+print(mao_sort([1, 3, 2, 4, 5, 8, 7, 6, 9]))
+
+# i l
\ No newline at end of file
diff --git a/venv-setup.sh b/venv-setup.sh
index ad297b7..1232298 100755
--- a/venv-setup.sh
+++ b/venv-setup.sh
@@ -1,6 +1,7 @@
#!/bin/sh
+# change this to #!/bin/bash for windows
-python -m venv ./venv
+python3 -m venv ./venv
source ./venv/bin/activate
pip install --upgrade pip
\ No newline at end of file
diff --git a/websocket_test.html b/websocket_test.html
index 4cdca7a..c6489bc 100644
--- a/websocket_test.html
+++ b/websocket_test.html
@@ -1,15 +1,61 @@
+
WebSocket Test
+
+
+
+
+
WebSocket Test
-
+
+ Example JSON
+ { "type": "cable_map", "call": "request", "data": { } }
+ { "type": "log", "call": "send", "data": "123123" }
+
+ Messages/Logs
+
+
+
+
+
-
+
+