@visulima/is-ansi-color-supported 2.2.2 → 2.2.3

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## @visulima/is-ansi-color-supported [2.2.3](https://github.com/visulima/visulima/compare/@visulima/is-ansi-color-supported@2.2.2...@visulima/is-ansi-color-supported@2.2.3) (2024-08-01)
2
+
3
+ ### Bug Fixes
4
+
5
+ * upgraded @visulima/packem ([dc0cb57](https://github.com/visulima/visulima/commit/dc0cb5701b30f3f81404346c909fd4daf891b894))
6
+
7
+ ### Styles
8
+
9
+ * cs fixes ([6f727ec](https://github.com/visulima/visulima/commit/6f727ec36437384883ca4b764d920cf03ffe44df))
10
+ * fixed found code style issue with eslint and prettier ([114e9c9](https://github.com/visulima/visulima/commit/114e9c9f23518cbfa3814af6cee868233431f312))
11
+
12
+ ### Miscellaneous Chores
13
+
14
+ * changed typescript version back to 5.4.5 ([55d28bb](https://github.com/visulima/visulima/commit/55d28bbdc103718d19f844034b38a0e8e5af798a))
15
+ * **is-ansi-color-supported:** remove old field in package.json ([d49b48d](https://github.com/visulima/visulima/commit/d49b48d0d7ffc3f8a397462c76d35f312acf855b))
16
+ * updated dev dependencies ([ac67ec1](https://github.com/visulima/visulima/commit/ac67ec1bcba16175d225958e318199f60b10d179))
17
+ * updated dev dependencies ([34df456](https://github.com/visulima/visulima/commit/34df4569f2fc074823a406c44a131c8fbae2b147))
18
+ * updated dev dependencies and sorted the package.json ([9571572](https://github.com/visulima/visulima/commit/95715725a8ed053ca24fd1405a55205c79342ecb))
19
+
1
20
  ## @visulima/is-ansi-color-supported [2.2.2](https://github.com/visulima/visulima/compare/@visulima/is-ansi-color-supported@2.2.1...@visulima/is-ansi-color-supported@2.2.2) (2024-06-13)
2
21
 
3
22
  ### Bug Fixes
@@ -1 +1 @@
1
- var s=Object.defineProperty;var o=(r,e)=>s(r,"name",{value:e,configurable:!0});import{S as i,a as t,b as a}from"./shared/is-ansi-color-supported.BOPU_k0i.mjs";import{c as v}from"./shared/is-ansi-color-supported.BOPU_k0i.mjs";var u=Object.defineProperty,p=o((r,e)=>u(r,"name",{value:e,configurable:!0}),"e");const n=p(()=>(()=>{if(typeof navigator<"u"){if(navigator.userAgentData&&navigator.userAgentData.brands.find(({b:r})=>r==="Chromium")?.version>93)return i;if(/\b(Chrome|Chromium)\//.test(navigator.userAgent))return t}return typeof process<"u"?(process.env.NEXT_RUNTIME??"").includes("edge")?t:a:a})(),"isColorSupported"),d=n,f=n;export{t as SPACE_16_COLORS,v as SPACE_256_COLORS,a as SPACE_MONO,i as SPACE_TRUE_COLORS,f as isStderrColorSupported,d as isStdoutColorSupported};
1
+ var n=Object.defineProperty;var o=(r,e)=>n(r,"name",{value:e,configurable:!0});const a=0,i=1,s=2,u=3;var C=Object.defineProperty,S=o((r,e)=>C(r,"name",{value:e,configurable:!0}),"e");const t=S(()=>(()=>{if(typeof navigator<"u"){if(navigator.userAgentData&&navigator.userAgentData.brands.find(({b:r})=>r==="Chromium")?.version>93)return 3;if(/\b(Chrome|Chromium)\//.test(navigator.userAgent))return 1}return typeof process<"u"&&(process.env.NEXT_RUNTIME??"").includes("edge")?1:0})(),"isColorSupported"),_=t,p=t;export{i as SPACE_16_COLORS,s as SPACE_256_COLORS,a as SPACE_MONO,u as SPACE_TRUE_COLORS,p as isStderrColorSupported,_ as isStdoutColorSupported};
@@ -1 +1 @@
1
- "use strict";var p=Object.defineProperty;var P=(S,t)=>p(S,"name",{value:t,configurable:!0});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./shared/is-ansi-color-supported.1A1Svxa5.cjs");var M=Object.defineProperty,E=P((S,t)=>M(S,"name",{value:t,configurable:!0}),"f");const L=E(S=>{const t=globalThis,i=t.Deno!=null,C=t.process??t.Deno??{},A=C.argv??C.args??[],R=E(O=>{const T=A.indexOf("--"),c=A.findIndex(a=>O.test(a));return c!==-1&&(T===-1||c<T)},"oneOfFlags");let r={};try{r=i?C.env.toObject():C.env??{}}catch{}const l="FORCE_COLOR",d=l in r,n=r[l]?String(r[l]):void 0,u=Object.prototype.toString.call(n).slice(8,-1)==="String";let o;if(n==="true"?o=e.SPACE_16_COLORS:n==="false"?o=e.SPACE_MONO:u&&n.length===0?o=e.SPACE_16_COLORS:u&&n.length>0&&(o=Math.min(Number.parseInt(n,10),3)),n!=="true"&&n!=="false"&&o!==void 0&&o<4)return o;if("NO_COLOR"in r||d&&o===0||R(/^-{1,2}(no-color|no-colors|color=false|color=never)$/))return e.SPACE_MONO;if(R(/^-{1,2}(color=256)$/))return e.SPACE_256_COLORS;if(R(/^-{1,2}(color=16m|color=full|color=truecolor)$/))return e.SPACE_TRUE_COLORS;if(R(/^-{1,2}(color|colors|color=true|color=always)$/))return e.SPACE_16_COLORS;const s=o||e.SPACE_MONO;if("TF_BUILD"in r&&"AGENT_NAME"in r)return e.SPACE_16_COLORS;if(r.TERM&&/-mono|dumb/i.test(r.TERM))return s;if((i?t.Deno.build.os:C.platform)==="win32")try{const O=(i?t.Deno.osRelease():C.os.release()).split(".");return Number(O[0])>=10&&Number(O[2])>=10586?Number(O[2])>=14931?e.SPACE_TRUE_COLORS:e.SPACE_256_COLORS:e.SPACE_16_COLORS}catch{}if("CI"in r)return"GITHUB_ACTIONS"in r||"GITHUB_WORKFLOW"in r||"GITEA_ACTIONS"in r?e.SPACE_TRUE_COLORS:["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE","GITLAB_CI"].some(O=>O in r)||r.CI_NAME==="codeship"?e.SPACE_16_COLORS:s;if(r.TERMINAL_EMULATOR?.includes("JediTerm"))return e.SPACE_TRUE_COLORS;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?e.SPACE_16_COLORS:e.SPACE_MONO;if(r.COLORTERM==="truecolor"||r.TERM==="xterm-kitty")return e.SPACE_TRUE_COLORS;if("TERM_PROGRAM"in r){const O=Number.parseInt((r.TERM_PROGRAM_VERSION??"").split(".")[0],10);if(r.TERM_PROGRAM==="iTerm.app")return O>=3?e.SPACE_TRUE_COLORS:e.SPACE_256_COLORS;if(r.TERM_PROGRAM==="Apple_Terminal")return e.SPACE_256_COLORS}if(/-256(color)?$/i.test(r.TERM))return e.SPACE_256_COLORS;let _=!1;return i?S==="out"?_=t.Deno.stdout.isTerminal():S==="err"&&(_=t.Deno.stderr.isTerminal()):"PM2_HOME"in r&&"pm_id"in r?_=!0:_=C["std"+S]&&"isTTY"in C["std"+S],_&&/^screen|^tmux|^xterm|^vt[1-5]\d\d|^ansi|color|mintty|rxvt|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?e.SPACE_16_COLORS:s},"isColorSupportedFactory"),f=E(()=>L("out"),"isStdoutColorSupported"),I=E(()=>L("err"),"isStderrColorSupported");exports.SPACE_16_COLORS=e.SPACE_16_COLORS;exports.SPACE_256_COLORS=e.SPACE_256_COLORS;exports.SPACE_MONO=e.SPACE_MONO;exports.SPACE_TRUE_COLORS=e.SPACE_TRUE_COLORS;exports.isStderrColorSupported=I;exports.isStdoutColorSupported=f;
1
+ "use strict";var L=Object.defineProperty;var A=(i,e)=>L(i,"name",{value:e,configurable:!0});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const R=0,t=1,O=2,u=3;var N=Object.defineProperty,S=A((i,e)=>N(i,"name",{value:e,configurable:!0}),"f");const M=S(i=>{const e=globalThis,T=e.Deno!=null,l=e.process??e.Deno??{},_=l.argv??l.args??[],E=S(n=>{const p=_.indexOf("--"),f=_.findIndex(m=>n.test(m));return f!==-1&&(p===-1||f<p)},"oneOfFlags");let r={};try{r=T?l.env.toObject():l.env??{}}catch{}const C="FORCE_COLOR",I=C in r,s=r[C]?String(r[C]):void 0,a=Object.prototype.toString.call(s).slice(8,-1)==="String";let o;if(s==="true"?o=t:s==="false"?o=R:a&&s.length===0?o=t:a&&s.length>0&&(o=Math.min(Number.parseInt(s,10),3)),s!=="true"&&s!=="false"&&o!==void 0&&o<4)return o;if("NO_COLOR"in r||I&&o===0||E(/^-{1,2}(no-color|no-colors|color=false|color=never)$/))return R;if(E(/^-{1,2}(color=256)$/))return O;if(E(/^-{1,2}(color=16m|color=full|color=truecolor)$/))return u;if(E(/^-{1,2}(color|colors|color=true|color=always)$/))return t;const d=o||R;if("TF_BUILD"in r&&"AGENT_NAME"in r)return t;if(r.TERM&&/-mono|dumb/i.test(r.TERM))return d;if((T?e.Deno.build.os:l.platform)==="win32")try{const n=(T?e.Deno.osRelease():l.os.release()).split(".");return Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?u:O:t}catch{}if("CI"in r)return"GITHUB_ACTIONS"in r||"GITHUB_WORKFLOW"in r||"GITEA_ACTIONS"in r?u:["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE","GITLAB_CI"].some(n=>n in r)||r.CI_NAME==="codeship"?t:d;if(r.TERMINAL_EMULATOR?.includes("JediTerm"))return u;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?t:R;if(r.COLORTERM==="truecolor"||r.TERM==="xterm-kitty")return u;if("TERM_PROGRAM"in r){const n=Number.parseInt((r.TERM_PROGRAM_VERSION??"").split(".")[0],10);if(r.TERM_PROGRAM==="iTerm.app")return n>=3?u:O;if(r.TERM_PROGRAM==="Apple_Terminal")return O}if(/-256(color)?$/i.test(r.TERM))return O;let c=!1;return T?i==="out"?c=e.Deno.stdout.isTerminal():i==="err"&&(c=e.Deno.stderr.isTerminal()):"PM2_HOME"in r&&"pm_id"in r?c=!0:c=l["std"+i]&&"isTTY"in l["std"+i],c&&/^screen|^tmux|^xterm|^vt[1-5]\d\d|^ansi|color|mintty|rxvt|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?t:d},"isColorSupportedFactory"),P=S(()=>M("out"),"isStdoutColorSupported"),b=S(()=>M("err"),"isStderrColorSupported");exports.SPACE_16_COLORS=t;exports.SPACE_256_COLORS=O;exports.SPACE_MONO=R;exports.SPACE_TRUE_COLORS=u;exports.isStderrColorSupported=b;exports.isStdoutColorSupported=P;
@@ -1 +1 @@
1
- var N=Object.defineProperty;var I=(i,e)=>N(i,"name",{value:e,configurable:!0});import{a as n,b as a,c as R,S as u}from"./shared/is-ansi-color-supported.BOPU_k0i.mjs";var L=Object.defineProperty,E=I((i,e)=>L(i,"name",{value:e,configurable:!0}),"f");const m=E(i=>{const e=globalThis,O=e.Deno!=null,s=e.process??e.Deno??{},C=s.argv??s.args??[],T=E(o=>{const p=C.indexOf("--"),S=C.findIndex(A=>o.test(A));return S!==-1&&(p===-1||S<p)},"oneOfFlags");let r={};try{r=O?s.env.toObject():s.env??{}}catch{}const d="FORCE_COLOR",M=d in r,l=r[d]?String(r[d]):void 0,_=Object.prototype.toString.call(l).slice(8,-1)==="String";let t;if(l==="true"?t=n:l==="false"?t=a:_&&l.length===0?t=n:_&&l.length>0&&(t=Math.min(Number.parseInt(l,10),3)),l!=="true"&&l!=="false"&&t!==void 0&&t<4)return t;if("NO_COLOR"in r||M&&t===0||T(/^-{1,2}(no-color|no-colors|color=false|color=never)$/))return a;if(T(/^-{1,2}(color=256)$/))return R;if(T(/^-{1,2}(color=16m|color=full|color=truecolor)$/))return u;if(T(/^-{1,2}(color|colors|color=true|color=always)$/))return n;const f=t||a;if("TF_BUILD"in r&&"AGENT_NAME"in r)return n;if(r.TERM&&/-mono|dumb/i.test(r.TERM))return f;if((O?e.Deno.build.os:s.platform)==="win32")try{const o=(O?e.Deno.osRelease():s.os.release()).split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?u:R:n}catch{}if("CI"in r)return"GITHUB_ACTIONS"in r||"GITHUB_WORKFLOW"in r||"GITEA_ACTIONS"in r?u:["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE","GITLAB_CI"].some(o=>o in r)||r.CI_NAME==="codeship"?n:f;if(r.TERMINAL_EMULATOR?.includes("JediTerm"))return u;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?n:a;if(r.COLORTERM==="truecolor")return u;if(r.TERM==="xterm-kitty")return u;if("TERM_PROGRAM"in r){const o=Number.parseInt((r.TERM_PROGRAM_VERSION??"").split(".")[0],10);if(r.TERM_PROGRAM==="iTerm.app")return o>=3?u:R;if(r.TERM_PROGRAM==="Apple_Terminal")return R}if(/-256(color)?$/i.test(r.TERM))return R;let c=!1;return O?i==="out"?c=e.Deno.stdout.isTerminal():i==="err"&&(c=e.Deno.stderr.isTerminal()):"PM2_HOME"in r&&"pm_id"in r?c=!0:c=s["std"+i]&&"isTTY"in s["std"+i],c&&/^screen|^tmux|^xterm|^vt[1-5]\d\d|^ansi|color|mintty|rxvt|cygwin|linux/i.test(r.TERM)?n:"COLORTERM"in r?n:f},"isColorSupportedFactory"),g=E(()=>m("out"),"isStdoutColorSupported"),v=E(()=>m("err"),"isStderrColorSupported");export{n as SPACE_16_COLORS,R as SPACE_256_COLORS,a as SPACE_MONO,u as SPACE_TRUE_COLORS,v as isStderrColorSupported,g as isStdoutColorSupported};
1
+ var a=Object.defineProperty;var c=(O,e)=>a(O,"name",{value:e,configurable:!0});const p=0,I=1,m=2,N=3;var M=Object.defineProperty,R=c((O,e)=>M(O,"name",{value:e,configurable:!0}),"f");const L=R(O=>{const e=globalThis,i=e.Deno!=null,n=e.process??e.Deno??{},s=n.argv??n.args??[],S=R(o=>{const T=s.indexOf("--"),u=s.findIndex(d=>o.test(d));return u!==-1&&(T===-1||u<T)},"oneOfFlags");let r={};try{r=i?n.env.toObject():n.env??{}}catch{}const E="FORCE_COLOR",P=E in r,C=r[E]?String(r[E]):void 0,A=Object.prototype.toString.call(C).slice(8,-1)==="String";let t;if(C==="true"?t=1:C==="false"?t=0:A&&C.length===0?t=1:A&&C.length>0&&(t=Math.min(Number.parseInt(C,10),3)),C!=="true"&&C!=="false"&&t!==void 0&&t<4)return t;if("NO_COLOR"in r||P&&t===0||S(/^-{1,2}(no-color|no-colors|color=false|color=never)$/))return 0;if(S(/^-{1,2}(color=256)$/))return 2;if(S(/^-{1,2}(color=16m|color=full|color=truecolor)$/))return 3;if(S(/^-{1,2}(color|colors|color=true|color=always)$/))return 1;const l=t||0;if("TF_BUILD"in r&&"AGENT_NAME"in r)return 1;if(r.TERM&&/-mono|dumb/i.test(r.TERM))return l;if((i?e.Deno.build.os:n.platform)==="win32")try{const o=(i?e.Deno.osRelease():n.os.release()).split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}catch{}if("CI"in r)return"GITHUB_ACTIONS"in r||"GITHUB_WORKFLOW"in r||"GITEA_ACTIONS"in r?3:["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE","GITLAB_CI"].some(o=>o in r)||r.CI_NAME==="codeship"?1:l;if(r.TERMINAL_EMULATOR?.includes("JediTerm"))return 3;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if(r.COLORTERM==="truecolor"||r.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in r){const o=Number.parseInt((r.TERM_PROGRAM_VERSION??"").split(".")[0],10);if(r.TERM_PROGRAM==="iTerm.app")return o>=3?3:2;if(r.TERM_PROGRAM==="Apple_Terminal")return 2}if(/-256(color)?$/i.test(r.TERM))return 2;let _=!1;return i?O==="out"?_=e.Deno.stdout.isTerminal():O==="err"&&(_=e.Deno.stderr.isTerminal()):"PM2_HOME"in r&&"pm_id"in r?_=!0:_=n["std"+O]&&"isTTY"in n["std"+O],_&&/^screen|^tmux|^xterm|^vt[1-5]\d\d|^ansi|color|mintty|rxvt|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:l},"isColorSupportedFactory"),U=R(()=>L("out"),"isStdoutColorSupported"),b=R(()=>L("err"),"isStderrColorSupported");export{I as SPACE_16_COLORS,m as SPACE_256_COLORS,p as SPACE_MONO,N as SPACE_TRUE_COLORS,b as isStderrColorSupported,U as isStdoutColorSupported};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/is-ansi-color-supported",
3
- "version": "2.2.2",
3
+ "version": "2.2.3",
4
4
  "description": "Detect whether a terminal or browser supports ansi colors.",
5
5
  "keywords": [
6
6
  "anolilab",
@@ -84,30 +84,29 @@
84
84
  "@anolilab/prettier-config": "^5.0.14",
85
85
  "@anolilab/semantic-release-pnpm": "^1.1.3",
86
86
  "@anolilab/semantic-release-preset": "^9.0.0",
87
- "@babel/core": "^7.24.7",
88
- "@rushstack/eslint-plugin-security": "^0.8.1",
87
+ "@babel/core": "^7.25.2",
88
+ "@rushstack/eslint-plugin-security": "^0.8.2",
89
89
  "@secretlint/secretlint-rule-preset-recommend": "^8.2.4",
90
- "@types/micromatch": "^4.0.7",
91
90
  "@types/node": "18.19.15",
92
- "@visulima/packem": "^1.0.0-alpha.41",
93
- "@vitest/coverage-v8": "^1.6.0",
94
- "@vitest/ui": "^1.6.0",
91
+ "@visulima/packem": "^1.0.0-alpha.60",
92
+ "@vitest/coverage-v8": "^2.0.5",
93
+ "@vitest/ui": "^2.0.5",
95
94
  "conventional-changelog-conventionalcommits": "8.0.0",
96
95
  "cross-env": "^7.0.3",
97
- "esbuild": "^0.21.5",
98
- "eslint": "^8.57.0",
96
+ "esbuild": "0.23.0",
97
+ "eslint": "8.57.0",
99
98
  "eslint-plugin-deprecation": "^3.0.0",
100
99
  "eslint-plugin-etc": "^2.0.3",
101
100
  "eslint-plugin-import": "npm:eslint-plugin-i@^2.29.1",
102
101
  "eslint-plugin-mdx": "^3.1.5",
103
102
  "eslint-plugin-vitest": "^0.4.1",
104
103
  "eslint-plugin-vitest-globals": "^1.5.0",
105
- "prettier": "^3.3.2",
106
- "rimraf": "^5.0.7",
104
+ "prettier": "^3.3.3",
105
+ "rimraf": "5.0.9",
107
106
  "secretlint": "8.2.4",
108
107
  "semantic-release": "24.0.0",
109
- "typescript": "^5.4.5",
110
- "vitest": "^1.6.0"
108
+ "typescript": "5.4.5",
109
+ "vitest": "^2.0.5"
111
110
  },
112
111
  "engines": {
113
112
  "node": ">=18.* <=22.*"
@@ -133,10 +132,6 @@
133
132
  "info_on_disabling_etc_no_deprecated": false
134
133
  }
135
134
  },
136
- "sources": [
137
- "src/is-color-supported.browser.ts",
138
- "src/is-color-supported.server.ts"
139
- ],
140
135
  "scripts": {
141
136
  "build": "cross-env NODE_ENV=development packem build",
142
137
  "build:prod": "cross-env NODE_ENV=production packem build",
@@ -1 +0,0 @@
1
- "use strict";var C=Object.defineProperty;var t=(e,o)=>C(e,"name",{value:o,configurable:!0});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./shared/is-ansi-color-supported.1A1Svxa5.cjs");var O=Object.defineProperty,i=t((e,o)=>O(e,"name",{value:o,configurable:!0}),"e");const S=i(()=>(()=>{if(typeof navigator<"u"){if(navigator.userAgentData&&navigator.userAgentData.brands.find(({b:e})=>e==="Chromium")?.version>93)return r.SPACE_TRUE_COLORS;if(/\b(Chrome|Chromium)\//.test(navigator.userAgent))return r.SPACE_16_COLORS}return typeof process<"u"&&(process.env.NEXT_RUNTIME??"").includes("edge")?r.SPACE_16_COLORS:r.SPACE_MONO})(),"isColorSupported"),u=S,n=S;exports.SPACE_16_COLORS=r.SPACE_16_COLORS;exports.SPACE_256_COLORS=r.SPACE_256_COLORS;exports.SPACE_MONO=r.SPACE_MONO;exports.SPACE_TRUE_COLORS=r.SPACE_TRUE_COLORS;exports.isStderrColorSupported=n;exports.isStdoutColorSupported=u;
@@ -1 +0,0 @@
1
- "use strict";exports.SPACE_16_COLORS=1;exports.SPACE_256_COLORS=2;exports.SPACE_MONO=0;exports.SPACE_TRUE_COLORS=3;
@@ -1 +0,0 @@
1
- const O=0,S=1,C=2,_=3;export{_ as S,S as a,O as b,C as c};