create-lesa-app 0.0.1

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.
@@ -0,0 +1 @@
1
+ {"frames":[{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFFFFF"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["██","#FFFFFF"],["███","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFFFFF"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FFFFFF"],["██████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FFFFFF"],["█","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#ffffff"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#ffffff"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["████","#FFFFFF"],["███","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["███","#FB7185"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["█████","#FFFFFF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["╔══","#2DD4BF"],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["█","#FFFFFF"],["█","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["██","#FFFFFF"],["█████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#ffffff"],["█","#FFFFFF"],["█","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#ffffff"],["█","#FFFFFF"],["████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["████","#FFE4E6"],["███","#FFFFFF"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["█","#FB7185"],["█████","#FFFFFF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["████","#FFFFFF"],["██","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FFFFFF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["█","#FFE4E6"],["█","#FFFFFF"],["║","#2DD4BF"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["██","#FB7185"],["████","#FFFFFF"],["█","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█","#FDA4AF"],["████","#FFFFFF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["█","#FDA4AF"],["█","#FFFFFF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#ffffff"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["████","#FFFFFF"],["███","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["███","#FFFFFF"],["███","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["█","#FB7185"],["█","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["█","#FFFFFF"],["╔╝","#2DD4BF"],[" ",null],["█","#FFFFFF"],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["██████","#FB7185"],["█","#FFFFFF"],["╗","#2DD4BF"],["██","#FFFFFF"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["█","#FFFFFF"],["█","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["█","#FFFFFF"],["██████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["████","#FFE4E6"],["███","#FFFFFF"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["███","#FB7185"],["███","#FFFFFF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██","#FDA4AF"],["████","#FFFFFF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["██","#FB7185"],["████","#FFFFFF"],["█","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["█","#FDA4AF"],["███","#FFFFFF"],["███","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███","#FFFFFF"],["████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFFFFF"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["█","#FFFFFF"],["█","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["████","#FFFFFF"],["█","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFFFFF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["██████","#FB7185"],["█","#FFFFFF"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["█","#FFFFFF"],["█","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["██","#FFFFFF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FFFFFF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["████","#FFE4E6"],["███","#FFFFFF"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["█","#FB7185"],["█","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["█","#FB7185"],["█","#FFFFFF"],["╔╝","#2DD4BF"],[" ",null],["█","#FFFFFF"],["█","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["████","#FDA4AF"],["█","#FFFFFF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█","#FB7185"],["███","#FFFFFF"],["█","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["█","#FB7185"],["█","#FFFFFF"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["█","#FDA4AF"],["███","#FFFFFF"],["███","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FFFFFF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["█████","#FFFFFF"],["███","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["█","#FFFFFF"],["█","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["█████","#FDA4AF"],["██","#FFFFFF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FFFFFF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFFFFF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["██████","#FB7185"],["██","#FFFFFF"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["█","#FDA4AF"],["█","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":2000,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]}],"height":20,"width":51}
package/src/copy.ts ADDED
@@ -0,0 +1,81 @@
1
+ /**
2
+ * 로컬 템플릿 폴더 → 대상 디렉터리 복사.
3
+ *
4
+ * 템플릿 레포가 private 이라 tarball 을 쓸 수 없다(사유: 템플릿 `docs/cli.md`).
5
+ * 배포 방식이 정해지면 이 파일만 교체한다 — 다른 모듈은 `copyTemplate` 시그니처만 안다.
6
+ *
7
+ * **복사 대상 = git 이 추적하는 파일.** 제외 목록을 손으로 들고 있으면 템플릿에 새 gitignore
8
+ * 항목이 생길 때마다 놓친다(실제로 `.pnpm-store`·`expo-env.d.ts`·`npmlogin.log` 를 놓쳤다).
9
+ * `git ls-files` 는 산출물·로컬 상태를 정의상 제외한다.
10
+ */
11
+
12
+ import { execFile } from 'node:child_process';
13
+ import { access, cp, mkdir, readdir } from 'node:fs/promises';
14
+ import path from 'node:path';
15
+ import { promisify } from 'node:util';
16
+
17
+ const run = promisify(execFile);
18
+
19
+ export class CopyError extends Error {}
20
+
21
+ /** 템플릿으로 쓸 수 있는 폴더인지 — 잘못된 경로를 조용히 복사하는 것을 막는다. */
22
+ export async function assertTemplate(templateDir: string): Promise<void> {
23
+ for (const marker of ['env-candidates.ts', 'app.config.ts', 'package.json']) {
24
+ try {
25
+ await access(path.join(templateDir, marker));
26
+ } catch {
27
+ throw new CopyError(`Not a template directory (no ${marker}): ${templateDir}`);
28
+ }
29
+ }
30
+ }
31
+
32
+ /** 대상이 비어 있어야 한다. 기존 파일을 덮어쓰지 않는다. */
33
+ export async function assertEmptyTarget(targetDir: string): Promise<void> {
34
+ let entries: string[];
35
+ try {
36
+ entries = await readdir(targetDir);
37
+ } catch {
38
+ return; // 없으면 아래에서 만든다
39
+ }
40
+ if (entries.filter(name => name !== '.DS_Store').length > 0) {
41
+ throw new CopyError(`Target directory is not empty: ${targetDir}`);
42
+ }
43
+ }
44
+
45
+ /** git 이 추적하는 파일 목록. `-z` 로 공백·유니코드 파일명을 안전하게 받는다. */
46
+ async function trackedFiles(templateDir: string): Promise<string[]> {
47
+ try {
48
+ const { stdout } = await run('git', ['-C', templateDir, 'ls-files', '-z'], {
49
+ maxBuffer: 32 * 1024 * 1024,
50
+ });
51
+ const files = stdout.split('\0').filter(Boolean);
52
+ if (files.length === 0) throw new Error('empty');
53
+ return files;
54
+ } catch {
55
+ throw new CopyError(
56
+ `Could not list git-tracked files in the template: ${templateDir}\n` +
57
+ ` It must be a git repo — git decides what gets copied.`
58
+ );
59
+ }
60
+ }
61
+
62
+ export async function copyTemplate(
63
+ templateDir: string,
64
+ targetDir: string,
65
+ /** 진행률 — 216개쯤 되므로 진행 표시가 의미가 있다. */
66
+ onFile?: (copied: number, total: number) => void
67
+ ): Promise<void> {
68
+ await assertTemplate(templateDir);
69
+ await assertEmptyTarget(targetDir);
70
+
71
+ const files = await trackedFiles(templateDir);
72
+ await mkdir(targetDir, { recursive: true });
73
+
74
+ let copied = 0;
75
+ for (const rel of files) {
76
+ const to = path.join(targetDir, rel);
77
+ await mkdir(path.dirname(to), { recursive: true });
78
+ await cp(path.join(templateDir, rel), to);
79
+ onFile?.(++copied, files.length);
80
+ }
81
+ }
package/src/create.ts ADDED
@@ -0,0 +1,132 @@
1
+ /**
2
+ * 생성 오케스트레이션 — 복사 → 치환 → git init → 안내.
3
+ * 프롬프트(ink)와 분리해서 UI 없이도 테스트할 수 있게 둔다.
4
+ */
5
+
6
+ import { execFile } from 'node:child_process';
7
+ import { rm } from 'node:fs/promises';
8
+ import path from 'node:path';
9
+ import { promisify } from 'node:util';
10
+
11
+ import { applyEnvCandidates, applyEnvFile } from './apply.ts';
12
+ import { assertEmptyTarget, copyTemplate } from './copy.ts';
13
+ import { derive } from './derive.ts';
14
+ import { fetchTemplate } from './fetch-template.ts';
15
+
16
+ import type { AppInput } from './derive.ts';
17
+
18
+ const run = promisify(execFile);
19
+
20
+ /** 진행 표시용 단계 이름 — UI 가 이 순서대로 목록을 그린다. */
21
+ export const CREATE_STEPS = [
22
+ 'Get template files',
23
+ 'Apply env-candidates.ts',
24
+ 'Write .env',
25
+ 'Git init',
26
+ ] as const;
27
+
28
+ export type CreateProgress = {
29
+ /** `CREATE_STEPS` 안의 위치. */
30
+ index: number;
31
+ /** 그 단계의 세부 진행(원격 다운로드 등). */
32
+ note?: string;
33
+ /** 이 단계가 건너뛰어졌는지(예: Team ID 를 안 받으면 `.env` 를 안 만든다). */
34
+ skipped?: boolean;
35
+ /** 파일 복사처럼 셀 수 있는 단계의 진행률. */
36
+ done?: number;
37
+ total?: number;
38
+ };
39
+
40
+ export type CreateOptions = AppInput & {
41
+ /** 비어 있으면 GitHub 에서 tarball 을 받는다. */
42
+ templateDir: string;
43
+ targetDir: string;
44
+ /** 진행 상황. ink 쪽에서는 상태 업데이트로 바꿔 넘긴다. */
45
+ onStep?: (progress: CreateProgress) => void;
46
+ };
47
+
48
+ export type CreateResult = {
49
+ targetDir: string;
50
+ fields: ReturnType<typeof derive>;
51
+ nextSteps: string[];
52
+ /** 끝난 뒤 무엇이 됐는지 보여주는 영수증 — 생성이 300ms 라 진행 표시는 스쳐 지나간다. */
53
+ receipt: { fileCount: number; wroteEnvFile: boolean; source: 'local' | 'github' };
54
+ };
55
+
56
+ async function gitInit(dir: string): Promise<void> {
57
+ await run('git', ['-C', dir, 'init', '-q']);
58
+ await run('git', ['-C', dir, 'add', '-A']);
59
+ // 커밋 서명·author 가 없는 환경에서도 실패하지 않게 -c 로 넘긴다.
60
+ await run('git', [
61
+ '-C',
62
+ dir,
63
+ '-c',
64
+ 'user.name=create-lesa-app',
65
+ '-c',
66
+ 'user.email=noreply@localhost',
67
+ 'commit',
68
+ '-q',
69
+ '-m',
70
+ 'chore: initial commit from create-lesa-app',
71
+ ]);
72
+ }
73
+
74
+ /**
75
+ * 실패하면 만든 디렉터리를 지운다 — 반쯤 만들어진 상태를 남기지 않는다.
76
+ * 단 `targetDir` 이 원래 있었으면(비어 있었을 뿐) 지우지 않고 내용만 비운다.
77
+ */
78
+ export async function createApp(options: CreateOptions): Promise<CreateResult> {
79
+ const { appleTeamId, displayName, onStep, slug, targetDir, templateDir } = options;
80
+ const step = onStep ?? (() => undefined);
81
+ const fields = derive({ displayName, slug });
82
+
83
+ let copied = false;
84
+ let fileCount = 0;
85
+ try {
86
+ step({ index: 0 });
87
+ if (templateDir) {
88
+ await copyTemplate(templateDir, targetDir, (done, total) => {
89
+ fileCount = total;
90
+ step({ done, index: 0, total });
91
+ });
92
+ } else {
93
+ // 원격은 진행률을 알 수 없다 — 단계 메시지만 바꾼다.
94
+ await assertEmptyTarget(targetDir);
95
+ await fetchTemplate(targetDir, message => step({ index: 0, note: message }));
96
+ }
97
+ copied = true;
98
+
99
+ step({ index: 1 });
100
+ await applyEnvCandidates(targetDir, fields);
101
+
102
+ step({ index: 2, skipped: !appleTeamId });
103
+ if (appleTeamId) await applyEnvFile(targetDir, appleTeamId);
104
+
105
+ step({ index: 3 });
106
+ await gitInit(targetDir);
107
+ step({ index: CREATE_STEPS.length });
108
+ } catch (error) {
109
+ if (copied) {
110
+ await rm(targetDir, { force: true, recursive: true }).catch(() => undefined);
111
+ }
112
+ throw error;
113
+ }
114
+
115
+ const name = path.basename(targetDir);
116
+ return {
117
+ fields,
118
+ receipt: {
119
+ fileCount,
120
+ source: templateDir ? 'local' : 'github',
121
+ wroteEnvFile: Boolean(appleTeamId),
122
+ },
123
+ nextSteps: [
124
+ `cd ${name} && pnpm install`,
125
+ 'pnpm ios:development (or pnpm android:development)',
126
+ 'Replace the icon and splash in assets/ — README "Make it yours" §3',
127
+ 'Drop your config files into firebase/ to turn push on — docs/push.md',
128
+ 'grep -rn "TODO(앱)" src — the spots your project fills in',
129
+ ],
130
+ targetDir,
131
+ };
132
+ }
package/src/derive.ts ADDED
@@ -0,0 +1,66 @@
1
+ /**
2
+ * slug 하나에서 env-candidates.ts 의 전 필드를 파생한다. 순수 함수 — 여기가 유일한 논리다.
3
+ * 파생 규칙의 근거는 템플릿 `docs/cli.md` "파생 규칙".
4
+ */
5
+
6
+ export type AppInput = {
7
+ /** 영문 소문자 식별자. Xcode 프로젝트명·스킴·PRODUCT_NAME 이 여기서 나온다. */
8
+ slug: string;
9
+ /** 홈 화면에 보일 이름. 한글이면 채우고, 영문이면 빈 문자열(템플릿이 name 을 그대로 쓴다). */
10
+ displayName: string;
11
+ /** .env 의 APP_BUILD_ONLY_APPLE_TEAM_ID. 비우면 Xcode 자동 서명. */
12
+ appleTeamId: string;
13
+ };
14
+
15
+ export type PerEnv = { development: string; preview: string; production: string };
16
+
17
+ export type DerivedFields = {
18
+ name: string;
19
+ displayName: string;
20
+ slug: string;
21
+ scheme: PerEnv;
22
+ bundleId: PerEnv;
23
+ package: PerEnv;
24
+ };
25
+
26
+ export const SLUG_PATTERN = /^[a-z][a-z0-9-]*$/;
27
+
28
+ /** 입력 검증 — 통과하지 못하면 이유를 돌려준다(호출부가 다시 묻는다). */
29
+ export function validateSlug(slug: string): string | null {
30
+ if (!slug) return 'Enter a slug.';
31
+ if (!SLUG_PATTERN.test(slug)) {
32
+ return 'Start with a lowercase letter; use only lowercase letters, digits and hyphens.';
33
+ }
34
+ // reverse-domain 세그먼트로 들어가므로 하이픈으로 끝나면 `com.lesa-app-.development` 가 된다.
35
+ if (slug.endsWith('-')) return 'Cannot end with a hyphen.';
36
+ return null;
37
+ }
38
+
39
+ /**
40
+ * production 은 접미사가 없다 — 템플릿 자리표시(`write.your.bundlename`)와 같은 컨벤션.
41
+ * bundleId 충돌 검증은 하지 않는다(생성 후 env-candidates.ts 에서 바꾼다).
42
+ */
43
+ export function derive({ slug, displayName }: Omit<AppInput, 'appleTeamId'>): DerivedFields {
44
+ // Android package 는 하이픈을 못 쓴다(문자·숫자·밑줄만, 점으로 구분) — SDK 57 app config 문서.
45
+ // iOS bundleId 는 허용하지만 둘을 같게 두려고 같은 값을 쓴다. scheme 은 하이픈이 허용된다.
46
+ const reverseDomain = `com.${slug.replaceAll('-', '')}`;
47
+ const identifiers: PerEnv = {
48
+ development: `${reverseDomain}.development`,
49
+ preview: `${reverseDomain}.preview`,
50
+ production: reverseDomain,
51
+ };
52
+
53
+ return {
54
+ name: slug,
55
+ displayName,
56
+ slug,
57
+ scheme: {
58
+ development: `${slug}-dev`,
59
+ preview: `${slug}-preview`,
60
+ production: slug,
61
+ },
62
+ bundleId: identifiers,
63
+ // Android package 는 iOS bundleId 와 같다 (참조 앱 KR/JP 동일).
64
+ package: identifiers,
65
+ };
66
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 템플릿 tarball 다운로드 → 추출. 로컬 템플릿 폴더가 없을 때 쓴다.
3
+ *
4
+ * GitHub 의 `/archive/` 는 **그 ref 에서 git 이 추적하는 파일**을 담는다 — 로컬 경로의
5
+ * `git ls-files` 와 같은 집합이다. 그래서 두 경로의 결과가 같다.
6
+ *
7
+ * 태그에 고정한다. `master` 로 받으면 어제 만든 프로젝트와 오늘 만든 프로젝트가 달라진다.
8
+ */
9
+
10
+ import { execFile } from 'node:child_process';
11
+ import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
12
+ import { tmpdir } from 'node:os';
13
+ import path from 'node:path';
14
+ import { promisify } from 'node:util';
15
+
16
+ const run = promisify(execFile);
17
+
18
+ export const TEMPLATE_REPO = 'LESANF/react-native-template-lesa';
19
+ /** 템플릿을 릴리즈하면 이 값을 올린다. */
20
+ export const TEMPLATE_REF = 'v0.0.1';
21
+
22
+ export class FetchError extends Error {}
23
+
24
+ function archiveUrl(repo: string, ref: string): string {
25
+ const kind = /^v?\d+\.\d+\.\d+/.test(ref) ? 'tags' : 'heads';
26
+ return `https://codeload.github.com/${repo}/tar.gz/refs/${kind}/${ref}`;
27
+ }
28
+
29
+ /**
30
+ * tarball 을 받아 `targetDir` 에 푼다. 최상위 디렉터리(`repo-ref/`)는 벗긴다.
31
+ * `tar` 는 macOS·Linux 기본이고 Windows 10+ 에도 bsdtar 로 있다.
32
+ */
33
+ export async function fetchTemplate(
34
+ targetDir: string,
35
+ onStep?: (message: string) => void,
36
+ repo = TEMPLATE_REPO,
37
+ ref = TEMPLATE_REF
38
+ ): Promise<void> {
39
+ const url = archiveUrl(repo, ref);
40
+ onStep?.(`downloading ${repo}@${ref}`);
41
+
42
+ let body: ArrayBuffer;
43
+ try {
44
+ const response = await fetch(url, { redirect: 'follow' });
45
+ if (!response.ok) {
46
+ throw new FetchError(
47
+ response.status === 404
48
+ ? `Template not found: ${repo}@${ref}\n The repository may be private, or the ref does not exist.`
49
+ : `Download failed (HTTP ${response.status}): ${url}`
50
+ );
51
+ }
52
+ body = await response.arrayBuffer();
53
+ } catch (error) {
54
+ if (error instanceof FetchError) throw error;
55
+ throw new FetchError(
56
+ `Could not reach GitHub. Check your connection, or pass --template <path> to use a local copy.\n ${
57
+ error instanceof Error ? error.message : String(error)
58
+ }`
59
+ );
60
+ }
61
+
62
+ const work = await mkdtemp(path.join(tmpdir(), 'create-lesa-app-'));
63
+ const archive = path.join(work, 'template.tar.gz');
64
+ try {
65
+ await writeFile(archive, Buffer.from(body));
66
+ await mkdir(targetDir, { recursive: true });
67
+ onStep?.('extracting');
68
+ // --strip-components=1 이 `<repo>-<ref>/` 최상위를 벗긴다.
69
+ await run('tar', ['-xzf', archive, '-C', targetDir, '--strip-components=1']);
70
+ } catch (error) {
71
+ throw new FetchError(
72
+ `Could not extract the template archive. Is \`tar\` available?\n ${
73
+ error instanceof Error ? error.message : String(error)
74
+ }`
75
+ );
76
+ } finally {
77
+ await rm(work, { force: true, recursive: true }).catch(() => undefined);
78
+ }
79
+ }