@simahfud/pine-to-kline 0.1.1 → 0.1.2

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.
Files changed (117) hide show
  1. package/dist/index.d.ts +696 -21
  2. package/dist/pine-to-kline.js +17 -14
  3. package/dist/pine-to-kline.js.map +1 -1
  4. package/dist/pine-to-kline.umd.js +1 -1
  5. package/dist/pine-to-kline.umd.js.map +1 -1
  6. package/package.json +1 -1
  7. package/dist/PineInterpreter.d.ts +0 -19
  8. package/dist/PineInterpreter.d.ts.map +0 -1
  9. package/dist/PineInterpreter.js +0 -89
  10. package/dist/PineInterpreter.js.map +0 -1
  11. package/dist/adapter/FigureMapper.d.ts +0 -8
  12. package/dist/adapter/FigureMapper.d.ts.map +0 -1
  13. package/dist/adapter/FigureMapper.js +0 -22
  14. package/dist/adapter/FigureMapper.js.map +0 -1
  15. package/dist/adapter/KlineAdapter.d.ts +0 -11
  16. package/dist/adapter/KlineAdapter.d.ts.map +0 -1
  17. package/dist/adapter/KlineAdapter.js +0 -88
  18. package/dist/adapter/KlineAdapter.js.map +0 -1
  19. package/dist/adapter/StyleMapper.d.ts +0 -10
  20. package/dist/adapter/StyleMapper.d.ts.map +0 -1
  21. package/dist/adapter/StyleMapper.js +0 -28
  22. package/dist/adapter/StyleMapper.js.map +0 -1
  23. package/dist/builtins/color/constants.d.ts +0 -7
  24. package/dist/builtins/color/constants.d.ts.map +0 -1
  25. package/dist/builtins/color/constants.js +0 -25
  26. package/dist/builtins/color/constants.js.map +0 -1
  27. package/dist/builtins/color/functions.d.ts +0 -21
  28. package/dist/builtins/color/functions.d.ts.map +0 -1
  29. package/dist/builtins/color/functions.js +0 -52
  30. package/dist/builtins/color/functions.js.map +0 -1
  31. package/dist/builtins/index.d.ts +0 -15
  32. package/dist/builtins/index.d.ts.map +0 -1
  33. package/dist/builtins/index.js +0 -32
  34. package/dist/builtins/index.js.map +0 -1
  35. package/dist/builtins/input/functions.d.ts +0 -28
  36. package/dist/builtins/input/functions.d.ts.map +0 -1
  37. package/dist/builtins/input/functions.js +0 -114
  38. package/dist/builtins/input/functions.js.map +0 -1
  39. package/dist/builtins/math/functions.d.ts +0 -9
  40. package/dist/builtins/math/functions.d.ts.map +0 -1
  41. package/dist/builtins/math/functions.js +0 -57
  42. package/dist/builtins/math/functions.js.map +0 -1
  43. package/dist/builtins/ta/crossover.d.ts +0 -18
  44. package/dist/builtins/ta/crossover.d.ts.map +0 -1
  45. package/dist/builtins/ta/crossover.js +0 -59
  46. package/dist/builtins/ta/crossover.js.map +0 -1
  47. package/dist/builtins/ta/index.d.ts +0 -12
  48. package/dist/builtins/ta/index.d.ts.map +0 -1
  49. package/dist/builtins/ta/index.js +0 -61
  50. package/dist/builtins/ta/index.js.map +0 -1
  51. package/dist/builtins/ta/momentum.d.ts +0 -22
  52. package/dist/builtins/ta/momentum.d.ts.map +0 -1
  53. package/dist/builtins/ta/momentum.js +0 -81
  54. package/dist/builtins/ta/momentum.js.map +0 -1
  55. package/dist/builtins/ta/moving-averages.d.ts +0 -24
  56. package/dist/builtins/ta/moving-averages.d.ts.map +0 -1
  57. package/dist/builtins/ta/moving-averages.js +0 -108
  58. package/dist/builtins/ta/moving-averages.js.map +0 -1
  59. package/dist/builtins/ta/utility.d.ts +0 -28
  60. package/dist/builtins/ta/utility.d.ts.map +0 -1
  61. package/dist/builtins/ta/utility.js +0 -156
  62. package/dist/builtins/ta/utility.js.map +0 -1
  63. package/dist/builtins/ta/volatility.d.ts +0 -21
  64. package/dist/builtins/ta/volatility.d.ts.map +0 -1
  65. package/dist/builtins/ta/volatility.js +0 -71
  66. package/dist/builtins/ta/volatility.js.map +0 -1
  67. package/dist/index.d.ts.map +0 -1
  68. package/dist/index.js +0 -24
  69. package/dist/index.js.map +0 -1
  70. package/dist/lexer/Lexer.d.ts +0 -40
  71. package/dist/lexer/Lexer.d.ts.map +0 -1
  72. package/dist/lexer/Lexer.js +0 -383
  73. package/dist/lexer/Lexer.js.map +0 -1
  74. package/dist/lexer/Token.d.ts +0 -16
  75. package/dist/lexer/Token.d.ts.map +0 -1
  76. package/dist/lexer/Token.js +0 -26
  77. package/dist/lexer/Token.js.map +0 -1
  78. package/dist/lexer/TokenType.d.ts +0 -74
  79. package/dist/lexer/TokenType.d.ts.map +0 -1
  80. package/dist/lexer/TokenType.js +0 -111
  81. package/dist/lexer/TokenType.js.map +0 -1
  82. package/dist/parser/Parser.d.ts +0 -55
  83. package/dist/parser/Parser.d.ts.map +0 -1
  84. package/dist/parser/Parser.js +0 -569
  85. package/dist/parser/Parser.js.map +0 -1
  86. package/dist/parser/nodes/index.d.ts +0 -215
  87. package/dist/parser/nodes/index.d.ts.map +0 -1
  88. package/dist/parser/nodes/index.js +0 -7
  89. package/dist/parser/nodes/index.js.map +0 -1
  90. package/dist/plugin/KlineChartProPlugin.d.ts +0 -43
  91. package/dist/plugin/KlineChartProPlugin.d.ts.map +0 -1
  92. package/dist/plugin/KlineChartProPlugin.js +0 -44
  93. package/dist/plugin/KlineChartProPlugin.js.map +0 -1
  94. package/dist/runtime/BarContext.d.ts +0 -23
  95. package/dist/runtime/BarContext.d.ts.map +0 -1
  96. package/dist/runtime/BarContext.js +0 -41
  97. package/dist/runtime/BarContext.js.map +0 -1
  98. package/dist/runtime/PineRuntime.d.ts +0 -51
  99. package/dist/runtime/PineRuntime.d.ts.map +0 -1
  100. package/dist/runtime/PineRuntime.js +0 -471
  101. package/dist/runtime/PineRuntime.js.map +0 -1
  102. package/dist/runtime/SeriesEmulator.d.ts +0 -21
  103. package/dist/runtime/SeriesEmulator.d.ts.map +0 -1
  104. package/dist/runtime/SeriesEmulator.js +0 -32
  105. package/dist/runtime/SeriesEmulator.js.map +0 -1
  106. package/dist/runtime/VarPersistence.d.ts +0 -20
  107. package/dist/runtime/VarPersistence.d.ts.map +0 -1
  108. package/dist/runtime/VarPersistence.js +0 -28
  109. package/dist/runtime/VarPersistence.js.map +0 -1
  110. package/dist/types.d.ts +0 -97
  111. package/dist/types.d.ts.map +0 -1
  112. package/dist/types.js +0 -6
  113. package/dist/types.js.map +0 -1
  114. package/dist/utils/errors.d.ts +0 -24
  115. package/dist/utils/errors.d.ts.map +0 -1
  116. package/dist/utils/errors.js +0 -46
  117. package/dist/utils/errors.js.map +0 -1
@@ -1,114 +0,0 @@
1
- /**
2
- * pine-to-kline — Input Functions
3
- * Handles input.int(), input.float(), input.bool(), etc.
4
- * These extract metadata for KlineChart calcParams.
5
- * @license Apache-2.0
6
- */
7
- let inputCounter = 0;
8
- export function resetInputCounter() {
9
- inputCounter = 0;
10
- }
11
- /** input.int(defval, title?, ...) */
12
- export function inputInt(defval, title, options) {
13
- return {
14
- meta: {
15
- id: `input_${inputCounter++}`,
16
- type: 'int',
17
- title: title ?? null,
18
- defaultValue: defval,
19
- minval: options?.minval,
20
- maxval: options?.maxval,
21
- step: options?.step ?? 1,
22
- },
23
- value: defval
24
- };
25
- }
26
- /** input.float(defval, title?, ...) */
27
- export function inputFloat(defval, title, options) {
28
- return {
29
- meta: {
30
- id: `input_${inputCounter++}`,
31
- type: 'float',
32
- title: title ?? null,
33
- defaultValue: defval,
34
- minval: options?.minval,
35
- maxval: options?.maxval,
36
- step: options?.step ?? 0.1,
37
- },
38
- value: defval
39
- };
40
- }
41
- /** input.bool(defval, title?) */
42
- export function inputBool(defval, title) {
43
- return {
44
- meta: {
45
- id: `input_${inputCounter++}`,
46
- type: 'bool',
47
- title: title ?? null,
48
- defaultValue: defval,
49
- },
50
- value: defval
51
- };
52
- }
53
- /** input.string(defval, title?, options?) */
54
- export function inputString(defval, title, options) {
55
- return {
56
- meta: {
57
- id: `input_${inputCounter++}`,
58
- type: 'string',
59
- title: title ?? null,
60
- defaultValue: defval,
61
- options,
62
- },
63
- value: defval
64
- };
65
- }
66
- /** input.color(defval, title?) */
67
- export function inputColor(defval, title) {
68
- return {
69
- meta: {
70
- id: `input_${inputCounter++}`,
71
- type: 'color',
72
- title: title ?? null,
73
- defaultValue: defval,
74
- },
75
- value: defval
76
- };
77
- }
78
- /** input.source(defval, title?) — typically resolves to 'close' */
79
- export function inputSource(defval, title) {
80
- return {
81
- meta: {
82
- id: `input_${inputCounter++}`,
83
- type: 'source',
84
- title: title ?? null,
85
- defaultValue: defval,
86
- },
87
- value: defval
88
- };
89
- }
90
- /** input() — generic input (Pine v5 legacy) */
91
- export function inputGeneric(defval, title) {
92
- const type = typeof defval === 'number'
93
- ? (Number.isInteger(defval) ? 'int' : 'float')
94
- : typeof defval === 'boolean' ? 'bool' : 'string';
95
- return {
96
- meta: {
97
- id: `input_${inputCounter++}`,
98
- type: type,
99
- title: title ?? null,
100
- defaultValue: defval,
101
- },
102
- value: defval
103
- };
104
- }
105
- export const INPUT_REGISTRY = {
106
- 'input': inputGeneric,
107
- 'input.int': inputInt,
108
- 'input.float': inputFloat,
109
- 'input.bool': inputBool,
110
- 'input.string': inputString,
111
- 'input.color': inputColor,
112
- 'input.source': inputSource,
113
- };
114
- //# sourceMappingURL=functions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/builtins/input/functions.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * pine-to-kline — Math Namespace Functions
3
- * Wraps JavaScript Math.* to match Pine's math.* namespace
4
- * @license Apache-2.0
5
- */
6
- /** Math function registry for runtime resolution */
7
- export declare const MATH_REGISTRY: Record<string, Function>;
8
- export declare const MATH_CONSTANTS: Record<string, number>;
9
- //# sourceMappingURL=functions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/builtins/math/functions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oDAAoD;AACpD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAqClD,CAAA;AAGD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAA"}
@@ -1,57 +0,0 @@
1
- /**
2
- * pine-to-kline — Math Namespace Functions
3
- * Wraps JavaScript Math.* to match Pine's math.* namespace
4
- * @license Apache-2.0
5
- */
6
- /** Math function registry for runtime resolution */
7
- export const MATH_REGISTRY = {
8
- 'math.abs': (x) => Math.abs(x),
9
- 'math.ceil': (x) => Math.ceil(x),
10
- 'math.floor': (x) => Math.floor(x),
11
- 'math.round': (x, precision) => {
12
- if (precision === undefined)
13
- return Math.round(x);
14
- const factor = Math.pow(10, precision);
15
- return Math.round(x * factor) / factor;
16
- },
17
- 'math.log': (x) => Math.log(x),
18
- 'math.log10': (x) => Math.log10(x),
19
- 'math.pow': (base, exp) => Math.pow(base, exp),
20
- 'math.sqrt': (x) => Math.sqrt(x),
21
- 'math.exp': (x) => Math.exp(x),
22
- 'math.max': (...args) => Math.max(...args),
23
- 'math.min': (...args) => Math.min(...args),
24
- 'math.sign': (x) => Math.sign(x),
25
- 'math.avg': (...args) => args.reduce((a, b) => a + b, 0) / args.length,
26
- 'math.sum': (source, length) => {
27
- const result = [];
28
- for (let i = 0; i < source.length; i++) {
29
- if (i < length - 1) {
30
- result.push(NaN);
31
- continue;
32
- }
33
- let sum = 0;
34
- for (let j = i - length + 1; j <= i; j++)
35
- sum += source[j];
36
- result.push(sum);
37
- }
38
- return result;
39
- },
40
- 'math.sin': (x) => Math.sin(x),
41
- 'math.cos': (x) => Math.cos(x),
42
- 'math.tan': (x) => Math.tan(x),
43
- 'math.asin': (x) => Math.asin(x),
44
- 'math.acos': (x) => Math.acos(x),
45
- 'math.atan': (x) => Math.atan(x),
46
- 'math.random': () => Math.random(),
47
- 'math.todegrees': (rad) => rad * (180 / Math.PI),
48
- 'math.toradians': (deg) => deg * (Math.PI / 180),
49
- };
50
- // Also export Pine math constants
51
- export const MATH_CONSTANTS = {
52
- 'math.pi': Math.PI,
53
- 'math.e': Math.E,
54
- 'math.phi': 1.618033988749895,
55
- 'math.rphi': 0.618033988749895,
56
- };
57
- //# sourceMappingURL=functions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/builtins/math/functions.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * pine-to-kline — Crossover Functions
3
- * Implements: crossover, crossunder, cross
4
- * @license Apache-2.0
5
- */
6
- /** ta.crossover(a, b) — a crosses above b */
7
- export declare function crossover(a: number[], b: number[]): boolean[];
8
- /** ta.crossunder(a, b) — a crosses below b */
9
- export declare function crossunder(a: number[], b: number[]): boolean[];
10
- /** ta.cross(a, b) — either crossover or crossunder */
11
- export declare function cross(a: number[], b: number[]): boolean[];
12
- /** ta.change() — difference from previous bar */
13
- export declare function change(source: number[], length?: number): number[];
14
- /** ta.rising() — true if source has been rising for `length` bars */
15
- export declare function rising(source: number[], length: number): boolean[];
16
- /** ta.falling() — true if source has been falling for `length` bars */
17
- export declare function falling(source: number[], length: number): boolean[];
18
- //# sourceMappingURL=crossover.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crossover.d.ts","sourceRoot":"","sources":["../../../src/builtins/ta/crossover.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAK7D;AAED,8CAA8C;AAC9C,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAK9D;AAED,sDAAsD;AACtD,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAMzD;AAED,iDAAiD;AACjD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,SAAI,GAAG,MAAM,EAAE,CAE7D;AAED,qEAAqE;AACrE,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAQlE;AAED,uEAAuE;AACvE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAQnE"}
@@ -1,59 +0,0 @@
1
- /**
2
- * pine-to-kline — Crossover Functions
3
- * Implements: crossover, crossunder, cross
4
- * @license Apache-2.0
5
- */
6
- /** ta.crossover(a, b) — a crosses above b */
7
- export function crossover(a, b) {
8
- return a.map((v, i) => {
9
- if (i === 0)
10
- return false;
11
- return a[i - 1] <= b[i - 1] && v > b[i];
12
- });
13
- }
14
- /** ta.crossunder(a, b) — a crosses below b */
15
- export function crossunder(a, b) {
16
- return a.map((v, i) => {
17
- if (i === 0)
18
- return false;
19
- return a[i - 1] >= b[i - 1] && v < b[i];
20
- });
21
- }
22
- /** ta.cross(a, b) — either crossover or crossunder */
23
- export function cross(a, b) {
24
- return a.map((_, i) => {
25
- if (i === 0)
26
- return false;
27
- return (a[i - 1] <= b[i - 1] && a[i] > b[i]) ||
28
- (a[i - 1] >= b[i - 1] && a[i] < b[i]);
29
- });
30
- }
31
- /** ta.change() — difference from previous bar */
32
- export function change(source, length = 1) {
33
- return source.map((v, i) => i < length ? NaN : v - source[i - length]);
34
- }
35
- /** ta.rising() — true if source has been rising for `length` bars */
36
- export function rising(source, length) {
37
- return source.map((_, i) => {
38
- if (i < length)
39
- return false;
40
- for (let j = i - length + 1; j <= i; j++) {
41
- if (source[j] <= source[j - 1])
42
- return false;
43
- }
44
- return true;
45
- });
46
- }
47
- /** ta.falling() — true if source has been falling for `length` bars */
48
- export function falling(source, length) {
49
- return source.map((_, i) => {
50
- if (i < length)
51
- return false;
52
- for (let j = i - length + 1; j <= i; j++) {
53
- if (source[j] >= source[j - 1])
54
- return false;
55
- }
56
- return true;
57
- });
58
- }
59
- //# sourceMappingURL=crossover.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crossover.js","sourceRoot":"","sources":["../../../src/builtins/ta/crossover.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * pine-to-kline — TA Namespace Barrel Export
3
- * @license Apache-2.0
4
- */
5
- export * as ma from './moving-averages';
6
- export * as momentum from './momentum';
7
- export * as volatility from './volatility';
8
- export * as crossover from './crossover';
9
- export * as utility from './utility';
10
- /** Registry map: 'ta.sma' → implementation function */
11
- export declare const TA_REGISTRY: Record<string, Function>;
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builtins/ta/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AASpC,uDAAuD;AACvD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA+ChD,CAAA"}
@@ -1,61 +0,0 @@
1
- /**
2
- * pine-to-kline — TA Namespace Barrel Export
3
- * @license Apache-2.0
4
- */
5
- export * as ma from './moving-averages';
6
- export * as momentum from './momentum';
7
- export * as volatility from './volatility';
8
- export * as crossover from './crossover';
9
- export * as utility from './utility';
10
- // Re-export flat for runtime resolution
11
- import * as _ma from './moving-averages';
12
- import * as _mom from './momentum';
13
- import * as _vol from './volatility';
14
- import * as _cross from './crossover';
15
- import * as _util from './utility';
16
- /** Registry map: 'ta.sma' → implementation function */
17
- export const TA_REGISTRY = {
18
- // Moving averages
19
- 'ta.sma': _ma.sma,
20
- 'ta.ema': _ma.ema,
21
- 'ta.rma': _ma.rma,
22
- 'ta.wma': _ma.wma,
23
- 'ta.hma': _ma.hma,
24
- 'ta.vwma': _ma.vwma,
25
- 'ta.swma': _ma.swma,
26
- 'ta.dema': _ma.dema,
27
- 'ta.tema': _ma.tema,
28
- // Momentum
29
- 'ta.rsi': _mom.rsi,
30
- 'ta.macd': _mom.macd,
31
- 'ta.stoch': _mom.stoch,
32
- 'ta.cci': _mom.cci,
33
- 'ta.mom': _mom.mom,
34
- 'ta.roc': _mom.roc,
35
- // Volatility
36
- 'ta.atr': _vol.atr,
37
- 'ta.bb': _vol.bb,
38
- 'ta.kc': _vol.kc,
39
- 'ta.donchian': _vol.donchian,
40
- 'ta.tr': _vol.tr,
41
- // Crossover
42
- 'ta.crossover': _cross.crossover,
43
- 'ta.crossunder': _cross.crossunder,
44
- 'ta.cross': _cross.cross,
45
- 'ta.change': _cross.change,
46
- 'ta.rising': _cross.rising,
47
- 'ta.falling': _cross.falling,
48
- // Utility
49
- 'ta.highest': _util.highest,
50
- 'ta.lowest': _util.lowest,
51
- 'ta.highestbars': _util.highestbars,
52
- 'ta.lowestbars': _util.lowestbars,
53
- 'ta.barssince': _util.barssince,
54
- 'ta.valuewhen': _util.valuewhen,
55
- 'ta.pivothigh': _util.pivothigh,
56
- 'ta.pivotlow': _util.pivotlow,
57
- 'ta.cum': _util.cum,
58
- 'ta.stdev': _util.stdev,
59
- 'ta.percentrank': _util.percentrank,
60
- };
61
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/builtins/ta/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AAEpC,wCAAwC;AACxC,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAA;AACxC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAClC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAA;AACpC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,WAAW,CAAA;AAElC,uDAAuD;AACvD,MAAM,CAAC,MAAM,WAAW,GAA6B;IACnD,kBAAkB;IAClB,QAAQ,EAAI,GAAG,CAAC,GAAG;IACnB,QAAQ,EAAI,GAAG,CAAC,GAAG;IACnB,QAAQ,EAAI,GAAG,CAAC,GAAG;IACnB,QAAQ,EAAI,GAAG,CAAC,GAAG;IACnB,QAAQ,EAAI,GAAG,CAAC,GAAG;IACnB,SAAS,EAAG,GAAG,CAAC,IAAI;IACpB,SAAS,EAAG,GAAG,CAAC,IAAI;IACpB,SAAS,EAAG,GAAG,CAAC,IAAI;IACpB,SAAS,EAAG,GAAG,CAAC,IAAI;IAEpB,WAAW;IACX,QAAQ,EAAI,IAAI,CAAC,GAAG;IACpB,SAAS,EAAG,IAAI,CAAC,IAAI;IACrB,UAAU,EAAE,IAAI,CAAC,KAAK;IACtB,QAAQ,EAAI,IAAI,CAAC,GAAG;IACpB,QAAQ,EAAI,IAAI,CAAC,GAAG;IACpB,QAAQ,EAAI,IAAI,CAAC,GAAG;IAEpB,aAAa;IACb,QAAQ,EAAO,IAAI,CAAC,GAAG;IACvB,OAAO,EAAQ,IAAI,CAAC,EAAE;IACtB,OAAO,EAAQ,IAAI,CAAC,EAAE;IACtB,aAAa,EAAE,IAAI,CAAC,QAAQ;IAC5B,OAAO,EAAQ,IAAI,CAAC,EAAE;IAEtB,YAAY;IACZ,cAAc,EAAG,MAAM,CAAC,SAAS;IACjC,eAAe,EAAE,MAAM,CAAC,UAAU;IAClC,UAAU,EAAO,MAAM,CAAC,KAAK;IAC7B,WAAW,EAAM,MAAM,CAAC,MAAM;IAC9B,WAAW,EAAM,MAAM,CAAC,MAAM;IAC9B,YAAY,EAAK,MAAM,CAAC,OAAO;IAE/B,UAAU;IACV,YAAY,EAAM,KAAK,CAAC,OAAO;IAC/B,WAAW,EAAO,KAAK,CAAC,MAAM;IAC9B,gBAAgB,EAAE,KAAK,CAAC,WAAW;IACnC,eAAe,EAAG,KAAK,CAAC,UAAU;IAClC,cAAc,EAAI,KAAK,CAAC,SAAS;IACjC,cAAc,EAAI,KAAK,CAAC,SAAS;IACjC,cAAc,EAAI,KAAK,CAAC,SAAS;IACjC,aAAa,EAAK,KAAK,CAAC,QAAQ;IAChC,QAAQ,EAAU,KAAK,CAAC,GAAG;IAC3B,UAAU,EAAQ,KAAK,CAAC,KAAK;IAC7B,gBAAgB,EAAE,KAAK,CAAC,WAAW;CACpC,CAAA"}
@@ -1,22 +0,0 @@
1
- /**
2
- * pine-to-kline — Momentum Indicators
3
- * Implements: rsi, macd, stoch, cci, mom, roc
4
- * @license Apache-2.0
5
- */
6
- /** ta.rsi() — Relative Strength Index (Wilder's method) */
7
- export declare function rsi(source: number[], length: number): number[];
8
- /** ta.macd() — MACD with signal and histogram */
9
- export declare function macd(source: number[], fastLen?: number, slowLen?: number, signalLen?: number): {
10
- macd: number[];
11
- signal: number[];
12
- hist: number[];
13
- };
14
- /** ta.stoch() — Stochastic %K */
15
- export declare function stoch(close: number[], high: number[], low: number[], length: number): number[];
16
- /** ta.cci() — Commodity Channel Index */
17
- export declare function cci(source: number[], length: number): number[];
18
- /** ta.mom() — Momentum */
19
- export declare function mom(source: number[], length: number): number[];
20
- /** ta.roc() — Rate of Change */
21
- export declare function roc(source: number[], length: number): number[];
22
- //# sourceMappingURL=momentum.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"momentum.d.ts","sourceRoot":"","sources":["../../../src/builtins/ta/momentum.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,2DAA2D;AAC3D,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAe9D;AAED,iDAAiD;AACjD,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,SAAK,EACZ,OAAO,SAAK,EACZ,SAAS,SAAI,GACZ;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAOtD;AAED,iCAAiC;AACjC,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EAAE,EACb,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAWV;AAED,yCAAyC;AACzC,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAY9D;AAED,0BAA0B;AAC1B,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9D;AAED,gCAAgC;AAChC,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAM9D"}
@@ -1,81 +0,0 @@
1
- /**
2
- * pine-to-kline — Momentum Indicators
3
- * Implements: rsi, macd, stoch, cci, mom, roc
4
- * @license Apache-2.0
5
- */
6
- import { rma, ema, sma } from './moving-averages';
7
- /** ta.rsi() — Relative Strength Index (Wilder's method) */
8
- export function rsi(source, length) {
9
- const gains = [0];
10
- const losses = [0];
11
- for (let i = 1; i < source.length; i++) {
12
- const diff = source[i] - source[i - 1];
13
- gains.push(diff > 0 ? diff : 0);
14
- losses.push(diff < 0 ? Math.abs(diff) : 0);
15
- }
16
- const avgGains = rma(gains, length);
17
- const avgLoss = rma(losses, length);
18
- return source.map((_, i) => {
19
- if (isNaN(avgGains[i]) || isNaN(avgLoss[i]))
20
- return NaN;
21
- if (avgLoss[i] === 0)
22
- return 100;
23
- return 100 - (100 / (1 + avgGains[i] / avgLoss[i]));
24
- });
25
- }
26
- /** ta.macd() — MACD with signal and histogram */
27
- export function macd(source, fastLen = 12, slowLen = 26, signalLen = 9) {
28
- const fast = ema(source, fastLen);
29
- const slow = ema(source, slowLen);
30
- const macdLine = fast.map((v, i) => v - slow[i]);
31
- const signalLine = ema(macdLine, signalLen);
32
- const hist = macdLine.map((v, i) => v - signalLine[i]);
33
- return { macd: macdLine, signal: signalLine, hist };
34
- }
35
- /** ta.stoch() — Stochastic %K */
36
- export function stoch(close, high, low, length) {
37
- return close.map((_, i) => {
38
- if (i < length - 1)
39
- return NaN;
40
- let highest = -Infinity, lowest = Infinity;
41
- for (let j = i - length + 1; j <= i; j++) {
42
- if (high[j] > highest)
43
- highest = high[j];
44
- if (low[j] < lowest)
45
- lowest = low[j];
46
- }
47
- if (highest === lowest)
48
- return 0;
49
- return ((close[i] - lowest) / (highest - lowest)) * 100;
50
- });
51
- }
52
- /** ta.cci() — Commodity Channel Index */
53
- export function cci(source, length) {
54
- const smaVals = sma(source, length);
55
- return source.map((_, i) => {
56
- if (i < length - 1)
57
- return NaN;
58
- let meanDev = 0;
59
- for (let j = i - length + 1; j <= i; j++) {
60
- meanDev += Math.abs(source[j] - smaVals[i]);
61
- }
62
- meanDev /= length;
63
- if (meanDev === 0)
64
- return 0;
65
- return (source[i] - smaVals[i]) / (0.015 * meanDev);
66
- });
67
- }
68
- /** ta.mom() — Momentum */
69
- export function mom(source, length) {
70
- return source.map((v, i) => i < length ? NaN : v - source[i - length]);
71
- }
72
- /** ta.roc() — Rate of Change */
73
- export function roc(source, length) {
74
- return source.map((v, i) => {
75
- if (i < length)
76
- return NaN;
77
- const prev = source[i - length];
78
- return prev === 0 ? 0 : ((v - prev) / prev) * 100;
79
- });
80
- }
81
- //# sourceMappingURL=momentum.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"momentum.js","sourceRoot":"","sources":["../../../src/builtins/ta/momentum.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * pine-to-kline — Moving Average Functions
3
- * Implements: sma, ema, rma, wma, hma, vwma, swma, dema, tema
4
- * @license Apache-2.0
5
- */
6
- /** ta.sma() — Simple Moving Average */
7
- export declare function sma(source: number[], length: number): number[];
8
- /** ta.ema() — Exponential Moving Average */
9
- export declare function ema(source: number[], length: number): number[];
10
- /** ta.rma() — Wilder's Running Moving Average (used in RSI, ATR) */
11
- export declare function rma(source: number[], length: number): number[];
12
- /** ta.wma() — Weighted Moving Average */
13
- export declare function wma(source: number[], length: number): number[];
14
- /** ta.hma() — Hull Moving Average */
15
- export declare function hma(source: number[], length: number): number[];
16
- /** ta.vwma() — Volume Weighted Moving Average */
17
- export declare function vwma(source: number[], volume: number[], length: number): number[];
18
- /** ta.swma() — Symmetrically Weighted Moving Average (fixed length=4) */
19
- export declare function swma(source: number[]): number[];
20
- /** ta.dema() — Double Exponential Moving Average */
21
- export declare function dema(source: number[], length: number): number[];
22
- /** ta.tema() — Triple Exponential Moving Average */
23
- export declare function tema(source: number[], length: number): number[];
24
- //# sourceMappingURL=moving-averages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"moving-averages.d.ts","sourceRoot":"","sources":["../../../src/builtins/ta/moving-averages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uCAAuC;AACvC,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAO9D;AAED,4CAA4C;AAC5C,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ9D;AAED,oEAAoE;AACpE,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAc9D;AAED,yCAAyC;AACzC,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAU9D;AAED,qCAAqC;AACrC,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAO9D;AAED,iDAAiD;AACjD,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAUjF;AAED,yEAAyE;AACzE,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAM/C;AAED,oDAAoD;AACpD,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAI/D;AAED,oDAAoD;AACpD,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/D"}
@@ -1,108 +0,0 @@
1
- /**
2
- * pine-to-kline — Moving Average Functions
3
- * Implements: sma, ema, rma, wma, hma, vwma, swma, dema, tema
4
- * @license Apache-2.0
5
- */
6
- /** ta.sma() — Simple Moving Average */
7
- export function sma(source, length) {
8
- return source.map((_, i) => {
9
- if (i < length - 1)
10
- return NaN;
11
- let sum = 0;
12
- for (let j = i - length + 1; j <= i; j++)
13
- sum += source[j];
14
- return sum / length;
15
- });
16
- }
17
- /** ta.ema() — Exponential Moving Average */
18
- export function ema(source, length) {
19
- const k = 2 / (length + 1);
20
- const out = [];
21
- for (let i = 0; i < source.length; i++) {
22
- if (i === 0) {
23
- out.push(source[i]);
24
- continue;
25
- }
26
- out.push(source[i] * k + out[i - 1] * (1 - k));
27
- }
28
- return out;
29
- }
30
- /** ta.rma() — Wilder's Running Moving Average (used in RSI, ATR) */
31
- export function rma(source, length) {
32
- const alpha = 1 / length;
33
- const out = [];
34
- for (let i = 0; i < source.length; i++) {
35
- if (i < length - 1) {
36
- out.push(NaN);
37
- continue;
38
- }
39
- if (i === length - 1) {
40
- let sum = 0;
41
- for (let j = 0; j < length; j++)
42
- sum += source[j];
43
- out.push(sum / length);
44
- }
45
- else {
46
- out.push(alpha * source[i] + (1 - alpha) * out[i - 1]);
47
- }
48
- }
49
- return out;
50
- }
51
- /** ta.wma() — Weighted Moving Average */
52
- export function wma(source, length) {
53
- const denom = (length * (length + 1)) / 2;
54
- return source.map((_, i) => {
55
- if (i < length - 1)
56
- return NaN;
57
- let sum = 0;
58
- for (let j = 0; j < length; j++) {
59
- sum += source[i - j] * (length - j);
60
- }
61
- return sum / denom;
62
- });
63
- }
64
- /** ta.hma() — Hull Moving Average */
65
- export function hma(source, length) {
66
- const halfLen = Math.floor(length / 2);
67
- const sqrtLen = Math.round(Math.sqrt(length));
68
- const wma1 = wma(source, halfLen);
69
- const wma2 = wma(source, length);
70
- const diff = wma1.map((v, i) => 2 * v - wma2[i]);
71
- return wma(diff, sqrtLen);
72
- }
73
- /** ta.vwma() — Volume Weighted Moving Average */
74
- export function vwma(source, volume, length) {
75
- return source.map((_, i) => {
76
- if (i < length - 1)
77
- return NaN;
78
- let sumPV = 0, sumV = 0;
79
- for (let j = i - length + 1; j <= i; j++) {
80
- sumPV += source[j] * volume[j];
81
- sumV += volume[j];
82
- }
83
- return sumV === 0 ? NaN : sumPV / sumV;
84
- });
85
- }
86
- /** ta.swma() — Symmetrically Weighted Moving Average (fixed length=4) */
87
- export function swma(source) {
88
- return source.map((_, i) => {
89
- if (i < 3)
90
- return NaN;
91
- return source[i] * (1 / 6) + source[i - 1] * (2 / 6) +
92
- source[i - 2] * (2 / 6) + source[i - 3] * (1 / 6);
93
- });
94
- }
95
- /** ta.dema() — Double Exponential Moving Average */
96
- export function dema(source, length) {
97
- const ema1 = ema(source, length);
98
- const ema2 = ema(ema1, length);
99
- return ema1.map((v, i) => 2 * v - ema2[i]);
100
- }
101
- /** ta.tema() — Triple Exponential Moving Average */
102
- export function tema(source, length) {
103
- const ema1 = ema(source, length);
104
- const ema2 = ema(ema1, length);
105
- const ema3 = ema(ema2, length);
106
- return ema1.map((v, i) => 3 * v - 3 * ema2[i] + ema3[i]);
107
- }
108
- //# sourceMappingURL=moving-averages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"moving-averages.js","sourceRoot":"","sources":["../../../src/builtins/ta/moving-averages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uCAAuC;AACvC,MAAM,UAAU,GAAG,CAAC,MAAgB,EAAE,MAAc;IAClD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1D,OAAO,GAAG,GAAG,MAAM,CAAA;IACrB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,GAAG,CAAC,MAAgB,EAAE,MAAc;IAClD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1B,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC9C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,GAAG,CAAC,MAAgB,EAAE,MAAc;IAClD,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAA;IACxB,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;gBAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;YACjD,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,GAAG,CAAC,MAAgB,EAAE,MAAc;IAClD,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACzC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,GAAG,GAAG,KAAK,CAAA;IACpB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,GAAG,CAAC,MAAgB,EAAE,MAAc;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC3B,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,IAAI,CAAC,MAAgB,EAAE,MAAgB,EAAE,MAAc;IACrE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;QAC9B,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YAC9B,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,IAAI,CAAC,MAAgB;IACnC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;QACrB,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,IAAI,CAAC,MAAgB,EAAE,MAAc;IACnD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,IAAI,CAAC,MAAgB,EAAE,MAAc;IACnD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1D,CAAC"}