sonolus.py 0.1.1__py3-none-any.whl → 0.1.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of sonolus.py might be problematic. Click here for more details.

@@ -1,7 +1,7 @@
1
1
  # fmt: off
2
2
  from typing import Self
3
3
 
4
- from sonolus.script.graphics import Quad
4
+ from sonolus.script.graphics import Quad, QuadLike
5
5
  from sonolus.script.math import cos, sin
6
6
  from sonolus.script.record import Record
7
7
  from sonolus.script.vec import Vec2
@@ -40,27 +40,23 @@ class Transform2d(Record):
40
40
  a20 = self.a00 * b20 + self.a10 * b21 + b20
41
41
  a21 = self.a01 * b20 + self.a11 * b21 + b21
42
42
  a22 = self.a02 * b20 + self.a12 * b21 + 1
43
- self.a00 = a00 / a22
44
- self.a01 = a01 / a22
45
- self.a02 = a02 / a22
46
- self.a10 = a10 / a22
47
- self.a11 = a11 / a22
48
- self.a12 = a12 / a22
49
- self.a20 = a20 / a22
50
- self.a21 = a21 / a22
51
- return self
43
+ return Transform2d(
44
+ a00 / a22, a01 / a22, a02 / a22,
45
+ a10 / a22, a11 / a22, a12 / a22,
46
+ a20 / a22, a21 / a22,
47
+ )
52
48
 
53
- def translate(self, x: float = 0, y: float = 0) -> Self:
49
+ def translate(self, translation: Vec2, /) -> Self:
54
50
  return self._compose(
55
- 1, 0, x,
56
- 0, 1, y,
51
+ 1, 0, translation.x,
52
+ 0, 1, translation.y,
57
53
  0, 0,
58
54
  )
59
55
 
60
- def scale(self, x: float = 1, y: float = 1) -> Self:
56
+ def scale(self, factor: Vec2, /) -> Self:
61
57
  return self._compose(
62
- x, 0, 0,
63
- 0, y, 0,
58
+ factor.x, 0, 0,
59
+ 0, factor.y, 0,
64
60
  0, 0,
65
61
  )
66
62
 
@@ -109,7 +105,7 @@ class Transform2d(Record):
109
105
  w = self.a20 * v.x + self.a21 * v.y + 1
110
106
  return Vec2(x / w, y / w)
111
107
 
112
- def transform_quad(self, quad: Quad) -> Quad:
108
+ def transform_quad(self, quad: QuadLike) -> Quad:
113
109
  return Quad(
114
110
  bl=self.transform_vec(quad.bl),
115
111
  br=self.transform_vec(quad.br),
sonolus/script/vec.py CHANGED
@@ -1,6 +1,6 @@
1
1
  from typing import Self
2
2
 
3
- from sonolus.script.math import atan2
3
+ from sonolus.script.math import atan2, cos, sin
4
4
  from sonolus.script.num import Num
5
5
  from sonolus.script.record import Record
6
6
 
@@ -9,6 +9,30 @@ class Vec2(Record):
9
9
  x: float
10
10
  y: float
11
11
 
12
+ @classmethod
13
+ def zero(cls) -> Self:
14
+ return cls(x=0, y=0)
15
+
16
+ @classmethod
17
+ def one(cls) -> Self:
18
+ return cls(x=1, y=1)
19
+
20
+ @classmethod
21
+ def up(cls) -> Self:
22
+ return cls(x=0, y=1)
23
+
24
+ @classmethod
25
+ def down(cls) -> Self:
26
+ return cls(x=0, y=-1)
27
+
28
+ @classmethod
29
+ def left(cls) -> Self:
30
+ return cls(x=-1, y=0)
31
+
32
+ @classmethod
33
+ def right(cls) -> Self:
34
+ return cls(x=1, y=0)
35
+
12
36
  @property
13
37
  def magnitude(self) -> Num:
14
38
  return (self.x**2 + self.y**2) ** 0.5
@@ -20,6 +44,12 @@ class Vec2(Record):
20
44
  def dot(self, other: Self) -> Num:
21
45
  return self.x * other.x + self.y * other.y
22
46
 
47
+ def rotate(self, angle: Num) -> Self:
48
+ return Vec2(
49
+ x=self.x * cos(angle) - self.y * sin(angle),
50
+ y=self.x * sin(angle) + self.y * cos(angle),
51
+ )
52
+
23
53
  @property
24
54
  def tuple(self) -> tuple[float, float]:
25
55
  return self.x, self.y
@@ -1,8 +1,7 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sonolus.py
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Sonolus engine development in Python
5
- License-File: LICENSE
6
5
  Requires-Python: >=3.13
7
6
  Description-Content-Type: text/markdown
8
7
 
@@ -8,7 +8,7 @@ sonolus/backend/finalize.py,sha256=4At9fA7zaZsrFSfz9uyYCZIFUb10u16o6d-3wfg2XLw,3
8
8
  sonolus/backend/flow.py,sha256=NtejFHC2LAmCwlYfyfnDZLnwvEyrVV_Dm4RGglBG6U0,3216
9
9
  sonolus/backend/interpret.py,sha256=EDpkv3ASzteDhYjTkzoriGYHYepcoHKZusrU_FX0DS4,14247
10
10
  sonolus/backend/ir.py,sha256=_D5CXsUxUX2VWkWU1z5ji8czrhTz0ieQ8L6VjtuxaKs,1994
11
- sonolus/backend/mode.py,sha256=LMrsMwZ4fe7idvXXI-D5-kBeUWMdFVw84JT_OZdHuQI,637
11
+ sonolus/backend/mode.py,sha256=H2sjHaEtBxslUGdqBW-9AT444DuR6B6IzVdcHRlz_BE,637
12
12
  sonolus/backend/node.py,sha256=BJqEaI_u8pdPNjgUZO9o8dGTn_vyo9x71AN5v4zJjdc,1039
13
13
  sonolus/backend/ops.py,sha256=k2YPLSDl4RagJ2Hyz91nZKlrWflMoXovCRjcwyhWmY0,10319
14
14
  sonolus/backend/optimize.py,sha256=qLOJ6XEZsOKOTQhzHWPNObsBKTHDHhVke9ZGmnukrhY,284
@@ -16,60 +16,60 @@ sonolus/backend/passes.py,sha256=3NiVnT0KQA1lVEuR9wzcGB6CccVe4A-C3D_JOnGsetI,137
16
16
  sonolus/backend/place.py,sha256=61mWyPQ6i59bmV9RtQfUy6mJE0pMAmFoL1W-MyY79ug,2536
17
17
  sonolus/backend/simplify.py,sha256=0SLsReWyxwpI2qyGn0JtQWyv3J-4DDyCkmiqP5ZvSV8,1122
18
18
  sonolus/backend/utils.py,sha256=AVYidUYSp5H8pbPKEzAZ0Ccorb3nYDU6zFcc6JBtuLs,1430
19
- sonolus/backend/visitor.py,sha256=y4_5GgOb54g0QrQRNV14b0lOpQtLDtku2iMBG5jNbKg,36420
19
+ sonolus/backend/visitor.py,sha256=XfqhPc421atro7RYDR7nrlETfRc8Uoi9l2feNO8o_FA,36515
20
20
  sonolus/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  sonolus/build/cli.py,sha256=8PSn8h-UmYGCjE2LAFU_5J3tMapKxCw09kzRTBomSFs,5545
22
22
  sonolus/build/collection.py,sha256=IsDgedsAJ-foHzQ4LnQ9zSVXSz5wVVt4sgqiUICBvCU,10573
23
- sonolus/build/compile.py,sha256=GPIT1gBoGvmTL-JA0hxnRzdr19nm9DdnXrQp6mMXkH0,3685
24
- sonolus/build/defaults.py,sha256=MDQuJUDRtCeNGbwn9ZgQAPiKJx7q-EH8hb7M6ToFcSU,718
25
- sonolus/build/engine.py,sha256=zJI-1UM_n_bFoXT1pajVFYWjh0Fp-BKeHrejT1iFPQc,4680
23
+ sonolus/build/compile.py,sha256=a1NjzvjFT2y6x9fL9kaiZgIus3egY8gk_WBr7EeSS68,3679
24
+ sonolus/build/engine.py,sha256=C0xKUikTKETg2SaPGQpcq4MBhPK-JAkbD1dTPvT47Y0,6732
26
25
  sonolus/build/level.py,sha256=Ko3XI3T8dpUmUOnxpAW27-1QCT2bkqXaW5GCiVKsfP0,546
27
26
  sonolus/build/node.py,sha256=3217uAzOz1KZ9VjOkcGO_Tdarvqwvl-F4sKPwx42QQ0,1205
28
27
  sonolus/build/project.py,sha256=x350tPcwKCYakdbrP796b545hVUaBwrzY0yEcQR7ut4,4023
29
28
  sonolus/script/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- sonolus/script/archetype.py,sha256=ktCJWh7bl3skzY-l8tF3Tmw7-G3SXR2wqCivb2zHkOo,23858
29
+ sonolus/script/archetype.py,sha256=q2WXhKuVGWnbBf9EjCRVhVOx6_N8nW1IV1AQaGVWurE,24812
31
30
  sonolus/script/array.py,sha256=ithYhBG69KTqooZlV7nVQXqrqKtgKL4KJKQ3ZzxTZwg,8914
32
- sonolus/script/bucket.py,sha256=LhqOPMJLN_OKsaVsLqgT0E0XSLAw5Tugr1jtHxb3aK0,5547
33
- sonolus/script/callbacks.py,sha256=UESpsFWuyk9EDBWrwStBakbjtIsGDE39myeTQsCWKMg,2444
34
- sonolus/script/comptime.py,sha256=qaUpaWWfZ3vwkZ43VjGK9hWb9sZepuDQHtGHdioos6U,4249
31
+ sonolus/script/bucket.py,sha256=HD1DbthZbqvU_7Iy5nw0_Ua3Fm00QIQkx019CHBp--I,5547
32
+ sonolus/script/callbacks.py,sha256=dkBudnZKM0oBXwMtNtVsusa8B_N_70mjCYi1zSUlnzg,2928
33
+ sonolus/script/comptime.py,sha256=hR-rF9GXHcWBWIs9IsSr2V5ZZmHGotyzwEJqDJJGj10,4692
35
34
  sonolus/script/containers.py,sha256=yl6PlX840Km4SQRPGqy95h9Ol32Z-dYEO3ZzJB14dKc,7093
36
- sonolus/script/debug.py,sha256=nivmdVyowjppxzRUjuIHG2fkTMrurlpFrxJ83L0e348,1969
37
- sonolus/script/effect.py,sha256=aoyIuN-oTKi190pZkjYKRgqBDJTiQDsSFUrLo8LJmbY,4141
38
- sonolus/script/engine.py,sha256=W53NTA0KrG8hPFljLx7upsh2ghME4zYxnMqPhXoOMB8,2776
39
- sonolus/script/globals.py,sha256=PCPPy1sHH6NO737MtOyXLUXF0DYiG-WSFSWhXRlRd_A,7609
40
- sonolus/script/graphics.py,sha256=D821LmnUwOaElg8cGFPHPA1qRTYPVYsKBPR-vUPtBc0,2851
41
- sonolus/script/icon.py,sha256=f-KJNpHGi804C5dA0G2MdvEYUmv7A01HqARUJlREEF0,1767
42
- sonolus/script/interval.py,sha256=yhCWAvuI2WrvC8wtx2MX7pnRY920AvPkZ_SXTC3LqVk,2783
43
- sonolus/script/iterator.py,sha256=tWdTWoV4pMZC74qCuWWNKV4n3yGFs1m4QRG3hY-VQok,5443
44
- sonolus/script/level.py,sha256=mKkH3aSwMmYZbyVp7-2nEWpLJhT_1PHsqy-3JK6UyGI,1188
35
+ sonolus/script/debug.py,sha256=WrfVFyQsirTu1q87_xhu3mPhFE1ZQXv9EbGCIhY4Hqs,1969
36
+ sonolus/script/effect.py,sha256=m_S--gubthQgoKHdMjZ4t4SAcjF72lxa614p9b1T7vE,4146
37
+ sonolus/script/engine.py,sha256=7BHzBJFYPxJYOIvR9k6X8FV1oQAGcLNBzqaz3O6v_8Y,4758
38
+ sonolus/script/globals.py,sha256=3lvPCy9bA_0dARkTy-xrpQUXTQfynojWWhveuRMdLyI,8666
39
+ sonolus/script/graphics.py,sha256=C82hg9cu7sgs0tuWeta7l_ki6pYhaKpnBBPGfwYXozY,3334
40
+ sonolus/script/instruction.py,sha256=lH3jHFamxLhvRPsw9E3sXSNa0X1nKsIw0sYzFv0SVrM,5549
41
+ sonolus/script/interval.py,sha256=KD3Rf8VGCTjVbt8aFUYRM46oJA3rpULhlZXYFhs-ECM,3194
42
+ sonolus/script/iterator.py,sha256=WlPmRGC2Xd1ugMIGDkBIkIQdLTpAOUrBTn11H7c_LSo,5513
43
+ sonolus/script/level.py,sha256=lcC6zHg3kp8Vm-pG96zASVPG16JeOp3ZR907snXdy18,1249
45
44
  sonolus/script/math.py,sha256=2HNKoIN6CV8J_1jsnxItXWQn8eUjlfvbPbMEav9li10,1636
46
- sonolus/script/num.py,sha256=dfg76xvMn21H0OJJkquajNayP78So-Ov3TWMImDtqDI,11695
47
- sonolus/script/options.py,sha256=BOwEX_KNzqvypD4X-EHSuCqF9aKdODH_MyGF-g_PDLQ,5702
48
- sonolus/script/particle.py,sha256=EjBqChV_S-Al-m-0A5QIuxW-vyh8CwQGyKMK8m1HOW8,7410
49
- sonolus/script/pointer.py,sha256=L4qnJumjYgdZ0rs6lg19MVZivk4Yz0gMGNMsYXvv-ac,1155
45
+ sonolus/script/num.py,sha256=RQv0VhX3nk69hh5sGsBaF_ZiNl9sr_xAnIt0Arjh_e4,12449
46
+ sonolus/script/options.py,sha256=qoY_IcwnchqUPaw9IE_-j1vNPC3j0yuGVUqitCdzSk0,5702
47
+ sonolus/script/particle.py,sha256=4ZLNymqORniHnczm3_yRPrVjy_tx4TXTpGO-BMfLmhg,7544
48
+ sonolus/script/pointer.py,sha256=bN4UzR7gwe3N_qJ0CXr9NLsuDKzgdkHJxKtOzNokAiE,1145
49
+ sonolus/script/print.py,sha256=s3yJ0jj9xxkkOg1PimO5PyIfD0WnSZkS8q9X8juSTTo,1645
50
50
  sonolus/script/project.py,sha256=7K3iwUdSXAQyEAwcZvtfxgv3M0IaUaXSroUBEj4dnuA,416
51
51
  sonolus/script/range.py,sha256=EgdEJYeoq2chD0xCJs2oZZhM_ubWHOzZZwvAZmXxQLs,1753
52
52
  sonolus/script/record.py,sha256=l4h4mubPevUAW4oKQpz-ZNXea9EbsbSv9je_KV5CIPE,10381
53
- sonolus/script/runtime.py,sha256=fXEGd7qD9vpofSlfjlIdzxO-RpPgy2p3zTLEDDuf6FU,14178
54
- sonolus/script/sprite.py,sha256=HuOWrWcU73L0rVStgBeLWfumAqlBGaGOwGRjH15LPag,13119
55
- sonolus/script/text.py,sha256=CYiqsyRgzCsCggOBp2RwGGT4QpGo15k1WZx6P5xuwyM,13121
53
+ sonolus/script/runtime.py,sha256=1eziaNIXGrtQIbi-Y5viV5lossCkkpRGVORFiO6UKBI,17020
54
+ sonolus/script/sprite.py,sha256=-tKIeOVkX1tIcAn0sgbuaURiFA_dKiHt3aDeDCgHY2Y,13322
55
+ sonolus/script/text.py,sha256=V2ijaTp9SJF-bThyZFn70M7wm6ZQrUtZv6uUprcZYBY,13396
56
56
  sonolus/script/timing.py,sha256=qSkoU7bVNaCFPUwpVUMr44xP75h2bapPoIHDsGEReWU,1070
57
- sonolus/script/transform.py,sha256=Oa0baFc1eBv0Rj6GxmpLCTiTW83-CQ0w1HIJwt-Y_e8,3203
57
+ sonolus/script/transform.py,sha256=9c6DKd8SF1KwVLU7Q2M4rOup8QGSuCVIA8UA9SOzx08,3148
58
58
  sonolus/script/ui.py,sha256=eOVqH-6BeRwMbe7ePQWjMIJEvrP1gKQMXhWt7v2OClo,4648
59
59
  sonolus/script/values.py,sha256=TyRxHjuvtXlQpKGyVRg0T8fJgXMboKY4TZxQ3lFR4bs,1261
60
- sonolus/script/vec.py,sha256=ipjKOxx5YCwbIjRMlVJlESiuRCE5zX1bYY32UGi88HY,1414
60
+ sonolus/script/vec.py,sha256=oOwTUOqAPsInoQzcoXm1eX7-o5ePTsYnmjJLbhqZ2_s,2086
61
61
  sonolus/script/internal/__init__.py,sha256=ZMWLy_WIuYQv0HRquCLoeCidiOpar4J2GojnhBSrxGs,141
62
- sonolus/script/internal/builtin_impls.py,sha256=PfxpcW1H8pmHsrsuOW70o4V3BZ9JuQxiAagZ23kdf2U,4171
62
+ sonolus/script/internal/builtin_impls.py,sha256=tKg_iZoeGCSAL667_V3euZrf0K0wc4nY9__8Q0AIwYM,4156
63
63
  sonolus/script/internal/context.py,sha256=r6Igx4rXT7_aBB04GJjJolDdCbyZX39qVKRl8vG_bjc,12650
64
64
  sonolus/script/internal/descriptor.py,sha256=mlgUVKS2R4Nt1gpDH-Q1YyJHuZDR5i6TcjiszfY-yzE,409
65
65
  sonolus/script/internal/error.py,sha256=ZNnsvQVQAnFKzcvsm6-sste2lo-tP5pPI8sD7XlAZWc,490
66
66
  sonolus/script/internal/generic.py,sha256=-rhFatYZLrDE3RFgDWu_Zto3funHXmMr3QuyxajaWKU,7356
67
67
  sonolus/script/internal/impl.py,sha256=tnIaQCmw0SlFpmnSJp2aEys9XVxoj0Vi8Yf6SP-oUAQ,2321
68
68
  sonolus/script/internal/introspection.py,sha256=9e_flldywaB5g1FdLnfLfQcL3s4nQ50E5iFlA-5FF_w,558
69
- sonolus/script/internal/native.py,sha256=Iib3iqt9OfSnuOUGa9L9jMNDNuApQDnZd0vNKOk52hE,1392
69
+ sonolus/script/internal/native.py,sha256=af2YokZLtt30Jipo2dAY9PU9Fajz-12VoFOrnCgxSvk,1391
70
70
  sonolus/script/internal/value.py,sha256=ftmxr228XRSt2KNsR8KsXMw7vDP1jdwKEMb1PE0bpCA,4214
71
- sonolus_py-0.1.1.dist-info/METADATA,sha256=_j0JWT-xpmus8h125yO13zTQWk3dSuETUgP0ZbrGejI,238
72
- sonolus_py-0.1.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
73
- sonolus_py-0.1.1.dist-info/entry_points.txt,sha256=oTYspY_b7SA8TptEMTDxh4-Aj-ZVPnYC9f1lqH6s9G4,54
74
- sonolus_py-0.1.1.dist-info/licenses/LICENSE,sha256=AhIgObMNjnAgjfJIea2c-0PDItKwP71hg4WFVAKh1ew,1088
75
- sonolus_py-0.1.1.dist-info/RECORD,,
71
+ sonolus_py-0.1.3.dist-info/METADATA,sha256=DQ-TskBD7EQZLQ26DYmrrvJ9Dg6VlfxWTd2529sd41U,216
72
+ sonolus_py-0.1.3.dist-info/WHEEL,sha256=3U_NnUcV_1B1kPkYaPzN-irRckL5VW_lytn0ytO_kRY,87
73
+ sonolus_py-0.1.3.dist-info/entry_points.txt,sha256=oTYspY_b7SA8TptEMTDxh4-Aj-ZVPnYC9f1lqH6s9G4,54
74
+ sonolus_py-0.1.3.dist-info/licenses/LICENSE,sha256=AhIgObMNjnAgjfJIea2c-0PDItKwP71hg4WFVAKh1ew,1088
75
+ sonolus_py-0.1.3.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.25.0
2
+ Generator: hatchling 1.26.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
sonolus/build/defaults.py DELETED
@@ -1,32 +0,0 @@
1
- EMPTY_ENGINE_PLAY_DATA = {
2
- "skin": {"sprites": []},
3
- "effect": {"clips": []},
4
- "particle": {"effects": []},
5
- "buckets": [],
6
- "archetypes": [],
7
- "nodes": [{"value": 0}],
8
- }
9
-
10
- EMPTY_ENGINE_WATCH_DATA = {
11
- "skin": {"sprites": []},
12
- "effect": {"clips": []},
13
- "particle": {"effects": []},
14
- "buckets": [],
15
- "archetypes": [],
16
- "updateSpawn": 0,
17
- "nodes": [{"value": 0}],
18
- }
19
-
20
- EMPTY_ENGINE_PREVIEW_DATA = {
21
- "skin": {"sprites": []},
22
- "archetypes": [],
23
- "nodes": [{"value": 0}],
24
- }
25
-
26
- EMPTY_ENGINE_TUTORIAL_DATA = {
27
- "skin": {"sprites": []},
28
- "effect": {"clips": []},
29
- "particle": {"effects": []},
30
- "instruction": {"texts": [], "icons": []},
31
- "nodes": [{"value": 0}],
32
- }
sonolus/script/icon.py DELETED
@@ -1,73 +0,0 @@
1
- from enum import StrEnum
2
-
3
-
4
- class StandardIcon(StrEnum):
5
- ADVANCED = "advanced"
6
- ANGLE_DOWN = "angleDown"
7
- ANGLE_LEFT = "angleLeft"
8
- ANGLE_RIGHT = "angleRight"
9
- ANGLES_DOWN = "anglesDown"
10
- ANGLES_LEFT = "anglesLeft"
11
- ANGLES_RIGHT = "anglesRight"
12
- ANGLES_UP = "anglesUp"
13
- ANGLE_UP = "angleUp"
14
- ARROW_DOWN = "arrowDown"
15
- ARROW_LEFT = "arrowLeft"
16
- ARROW_RIGHT = "arrowRight"
17
- ARROW_UP = "arrowUp"
18
- AWARD = "award"
19
- BACKGROUND = "background"
20
- BELL = "bell"
21
- BELL_SLASH = "bellSlash"
22
- BOOKMARK = "bookmark"
23
- BOOKMARK_HOLLOW = "bookmarkHollow"
24
- CHECK = "check"
25
- CLOCK = "clock"
26
- COMMENT = "comment"
27
- CROWN = "crown"
28
- DELETE = "delete"
29
- EDIT = "edit"
30
- EFFECT = "effect"
31
- ENGINE = "engine"
32
- ENVELOPE = "envelope"
33
- ENVELOPE_OPEN = "envelopeOpen"
34
- GLOBE = "globe"
35
- HEART = "heart"
36
- HEART_HOLLOW = "heartHollow"
37
- HIDE = "hide"
38
- INFORMATION = "information"
39
- LEVEL = "level"
40
- LOCK = "lock"
41
- MEDAL = "medal"
42
- MESSAGE = "message"
43
- MINUS = "minus"
44
- OPTIONS = "options"
45
- PARTICLE = "particle"
46
- PIN = "pin"
47
- PLAYER = "player"
48
- PLAYLIST = "playlist"
49
- PLUS = "plus"
50
- POST = "post"
51
- QUESTION = "question"
52
- RANKING = "ranking"
53
- REPLAY = "replay"
54
- REPLY = "reply"
55
- RESTORE = "restore"
56
- ROOM = "room"
57
- SEARCH = "search"
58
- SETTINGS = "settings"
59
- SHOW = "show"
60
- SHUFFLE = "shuffle"
61
- SKIN = "skin"
62
- STAR = "star"
63
- STAR_HALF = "starHalf"
64
- STAR_HOLLOW = "starHollow"
65
- STOPWATCH = "stopwatch"
66
- TAG = "tag"
67
- THUMBS_DOWN = "thumbsDown"
68
- THUMBS_DOWN_HOLLOW = "thumbsDownHollow"
69
- THUMBS_UP = "thumbsUp"
70
- THUMBS_UP_HOLLOW = "thumbsUpHollow"
71
- TROPHY = "trophy"
72
- UNLOCK = "unlock"
73
- X_MARK = "xMark"