diff --git a/config/software/designs.json b/config/software/designs.json
index 89864732146..d4939d442f0 100644
--- a/config/software/designs.json
+++ b/config/software/designs.json
@@ -340,6 +340,20 @@
"curvedSeam"
]
},
+ "gozer": {
+ "code": "Wouter Van Wageningen",
+ "description": "A FreeSewing pattern for a ghost costume",
+ "design": "Wouter Van Wageningen",
+ "difficulty": 1,
+ "lab": true,
+ "org": true,
+ "tags": [
+ "costumes"
+ ],
+ "techniques": [
+ "hem"
+ ]
+ },
"hi": {
"code": "Wouter Van Wageningen",
"description": "A FreeSewing pattern for a shark plush toy",
@@ -836,7 +850,7 @@
"bottoms",
"trousers"
],
- "techniques": []
+ "techniques": ["curvedSeam", "hem", "weltPocket"]
},
"yuri": {
"code": "Hellgy",
diff --git a/designs/gozer/CHANGELOG.md b/designs/gozer/CHANGELOG.md
new file mode 100644
index 00000000000..75e9b067844
--- /dev/null
+++ b/designs/gozer/CHANGELOG.md
@@ -0,0 +1,17 @@
+# Change log for: @freesewing/gozer
+
+
+## 3.0.0 (2022-09-30)
+
+### Changed
+
+ - All FreeSewing pacakges are now ESM only.
+ - All FreeSewing pacakges now use named exports.
+ - Dropped support for NodeJS 14. NodeJS 18 (LTS/hydrogen) or more recent is now required.
+
+
+This is the **initial release**, and the start of this change log.
+
+> Prior to version 2, FreeSewing was not a JavaScript project.
+> As such, that history is out of scope for this change log.
+
diff --git a/designs/gozer/README.md b/designs/gozer/README.md
new file mode 100644
index 00000000000..de44fcfc4ac
--- /dev/null
+++ b/designs/gozer/README.md
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+# @freesewing/gozer
+
+A FreeSewing pattern for a ghost costume
+
+
+
+
+## What am I looking at? 🤔
+
+This repository is the FreeSewing *monorepo* holding all FreeSewing's websites, documentation, designs, plugins, and other NPM packages.
+
+This folder holds: @freesewing/gozer
+
+If you're not entirely sure what to do or how to start, type this command:
+
+```
+npm run tips
+```
+
+> If you don't want to set up a dev environment, you can run it in your browser:
+>
+> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
+>
+> We recommend that you fork our repository and then
+> put `gitpod.io/# to start up a browser-based dev environment of your own.
+
+## About FreeSewing 💀
+
+Where the world of makers and developers collide, that's where you'll find FreeSewing.
+
+If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
+sewing patterns adapted to your measurements.
+
+If you're a developer, the FreeSewing documentation lives at [freesewing.dev](https://freesewing.dev/).
+The FreeSewing [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
+for parametric design of sewing patterns. But FreeSewing also provides a range
+of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
+functionality of the platform.
+
+If you have NodeJS installed, you can try it right now by running:
+
+```bash
+npx create-freesewing-pattern
+```
+
+Getting started guides are available for:
+- [Linux](https://freesewing.dev/tutorials/getting-started-linux/)
+- [MacOS](https://freesewing.dev/tutorials/getting-started-mac/)
+- [Windows](https://freesewing.dev/tutorials/getting-started-windows/)
+
+The [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) will
+show you how to create your first parametric design.
+
+## Support FreeSewing: Become a patron 🥰
+
+FreeSewing is an open source project maintained by Joost De Cock and financially supported by the FreeSewing patrons.
+
+If you feel FreeSewing is worthwhile, and you can spend a few coind without
+hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
+
+## Links 👩💻
+
+**Official channels**
+
+ - 💻 Makers website: [FreeSewing.org](https://freesewing.org)
+ - 💻 Developers website: [FreeSewing.dev](https://freesewing.dev)
+ - ✅ [Support](https://github.com/freesewing/freesewing/issues/new/choose),
+ [Issues](https://github.com/freesewing/freesewing/issues) &
+ [Discussions](https://github.com/freesewing/freesewing/discussions) on
+ [GitHub](https://github.com/freesewing/freesewing)
+
+**Social media**
+
+ - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
+ - 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
+
+**Places the FreeSewing community hangs out**
+
+ - 💬 [Discord](https://discord.freesewing.org/)
+ - 💬 [Facebook](https://www.facebook.com/groups/627769821272714/)
+ - 💬 [Reddit](https://www.reddit.com/r/freesewing/)
+
+## License: MIT 🤓
+
+© [Joost De Cock](https://github.com/joostdecock).
+See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
+
+## Where to get help 🤯
+
+For [Support](https://github.com/freesewing/freesewing/issues/new/choose),
+please use the [Issues](https://github.com/freesewing/freesewing/issues) &
+[Discussions](https://github.com/freesewing/freesewing/discussions) on
+[GitHub](https://github.com/freesewing/freesewing).
+
diff --git a/designs/gozer/build.mjs b/designs/gozer/build.mjs
new file mode 100644
index 00000000000..99ace216bc8
--- /dev/null
+++ b/designs/gozer/build.mjs
@@ -0,0 +1,35 @@
+/* This script will build the package with esbuild */
+import esbuild from 'esbuild'
+import pkg from './package.json' assert { type: 'json' }
+
+// Create banner based on package info
+const banner = `/**
+ * ${pkg.name} | v${pkg.version}
+ * ${pkg.description}
+ * (c) ${new Date().getFullYear()} ${pkg.author}
+ * @license ${pkg.license}
+ */`
+
+// Shared esbuild options
+const options = {
+ banner: { js: banner },
+ bundle: true,
+ entryPoints: ['src/index.mjs'],
+ format: 'esm',
+ outfile: 'dist/index.mjs',
+ external: ['@freesewing'],
+ metafile: process.env.VERBOSE ? true : false,
+ minify: process.env.NO_MINIFY ? false : true,
+ sourcemap: true,
+}
+
+// Let esbuild generate the build
+const build = async () => {
+ const result = await esbuild.build(options).catch(() => process.exit(1))
+
+ if (process.env.VERBOSE) {
+ const info = await esbuild.analyzeMetafile(result.metafile)
+ console.log(info)
+ }
+}
+build()
diff --git a/designs/gozer/data.mjs b/designs/gozer/data.mjs
new file mode 100644
index 00000000000..9aeca4b6d73
--- /dev/null
+++ b/designs/gozer/data.mjs
@@ -0,0 +1,4 @@
+// This file is auto-generated | All changes you make will be overwritten.
+export const name = '@freesewing/gozer'
+export const version = '3.0.0'
+export const data = { name, version }
diff --git a/designs/gozer/i18n/de.json b/designs/gozer/i18n/de.json
new file mode 100644
index 00000000000..51ffe6da861
--- /dev/null
+++ b/designs/gozer/i18n/de.json
@@ -0,0 +1,7 @@
+{
+ "t": "Gozer",
+ "d": "A FreeSewing pattern that needs a description",
+ "p": { },
+ "s": { },
+ "o": { }
+}
diff --git a/designs/gozer/i18n/en.json b/designs/gozer/i18n/en.json
new file mode 100644
index 00000000000..246e78dbffa
--- /dev/null
+++ b/designs/gozer/i18n/en.json
@@ -0,0 +1,9 @@
+{
+ "t": "Gozer",
+ "d": "A FreeSewing pattern for a Halloween costume",
+ "p": {
+ "ghost": "ghost"
+ },
+ "s": { },
+ "o": { }
+}
diff --git a/designs/gozer/i18n/es.json b/designs/gozer/i18n/es.json
new file mode 100644
index 00000000000..51ffe6da861
--- /dev/null
+++ b/designs/gozer/i18n/es.json
@@ -0,0 +1,7 @@
+{
+ "t": "Gozer",
+ "d": "A FreeSewing pattern that needs a description",
+ "p": { },
+ "s": { },
+ "o": { }
+}
diff --git a/designs/gozer/i18n/fr.json b/designs/gozer/i18n/fr.json
new file mode 100644
index 00000000000..51ffe6da861
--- /dev/null
+++ b/designs/gozer/i18n/fr.json
@@ -0,0 +1,7 @@
+{
+ "t": "Gozer",
+ "d": "A FreeSewing pattern that needs a description",
+ "p": { },
+ "s": { },
+ "o": { }
+}
diff --git a/designs/gozer/i18n/index.mjs b/designs/gozer/i18n/index.mjs
new file mode 100644
index 00000000000..36aac928b67
--- /dev/null
+++ b/designs/gozer/i18n/index.mjs
@@ -0,0 +1,8 @@
+import en from './en.json' assert { type: 'json' }
+import de from './de.json' assert { type: 'json' }
+import es from './es.json' assert { type: 'json' }
+import fr from './fr.json' assert { type: 'json' }
+import nl from './nl.json' assert { type: 'json' }
+import uk from './uk.json' assert { type: 'json' }
+
+export const i18n = { en, de, es, fr, nl, uk }
diff --git a/designs/gozer/i18n/nl.json b/designs/gozer/i18n/nl.json
new file mode 100644
index 00000000000..51ffe6da861
--- /dev/null
+++ b/designs/gozer/i18n/nl.json
@@ -0,0 +1,7 @@
+{
+ "t": "Gozer",
+ "d": "A FreeSewing pattern that needs a description",
+ "p": { },
+ "s": { },
+ "o": { }
+}
diff --git a/designs/gozer/i18n/uk.json b/designs/gozer/i18n/uk.json
new file mode 100644
index 00000000000..51ffe6da861
--- /dev/null
+++ b/designs/gozer/i18n/uk.json
@@ -0,0 +1,7 @@
+{
+ "t": "Gozer",
+ "d": "A FreeSewing pattern that needs a description",
+ "p": { },
+ "s": { },
+ "o": { }
+}
diff --git a/designs/gozer/package.json b/designs/gozer/package.json
new file mode 100644
index 00000000000..e958cacc86e
--- /dev/null
+++ b/designs/gozer/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "@freesewing/gozer",
+ "version": "3.0.0",
+ "description": "A FreeSewing pattern for a ghost costume",
+ "author": "Joost De Cock (https://github.com/joostdecock)",
+ "homepage": "https://freesewing.org/",
+ "repository": "github:freesewing/freesewing",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/freesewing/freesewing/issues"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://freesewing.org/patrons/join"
+ },
+ "keywords": [
+ "freesewing",
+ "design",
+ "diy",
+ "fashion",
+ "made to measure",
+ "parametric design",
+ "pattern",
+ "sewing",
+ "sewing pattern"
+ ],
+ "type": "module",
+ "module": "dist/index.mjs",
+ "exports": {
+ ".": {
+ "internal": "./src/index.mjs",
+ "default": "./dist/index.mjs"
+ }
+ },
+ "scripts": {
+ "build": "node build.mjs",
+ "build:all": "yarn build",
+ "clean": "rimraf dist",
+ "mbuild": "NO_MINIFY=1 node build.mjs",
+ "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
+ "test": "npx mocha tests/*.test.mjs",
+ "vbuild": "VERBOSE=1 node build.mjs",
+ "lab": "cd ../../sites/lab && yarn start",
+ "tips": "node ../../scripts/help.mjs",
+ "lint": "npx eslint 'src/**' 'tests/*.mjs'",
+ "prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
+ "testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
+ "wbuild": "node build.mjs",
+ "wbuild:all": "yarn wbuild"
+ },
+ "peerDependencies": {
+ "@freesewing/core": "3.0.0"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "mocha": "10.2.0",
+ "chai": "4.3.10",
+ "@freesewing/models": "3.0.0",
+ "@freesewing/plugin-timing": "3.0.0"
+ },
+ "files": [
+ "dist/*",
+ "README.md"
+ ],
+ "publishConfig": {
+ "access": "public",
+ "tag": "latest"
+ },
+ "engines": {
+ "node": "18",
+ "npm": "9"
+ }
+}
diff --git a/designs/gozer/src/ghost.mjs b/designs/gozer/src/ghost.mjs
new file mode 100644
index 00000000000..91b79e98149
--- /dev/null
+++ b/designs/gozer/src/ghost.mjs
@@ -0,0 +1,55 @@
+export const ghost = {
+ name: 'gozer.ghost',
+ measurements: ['hpsToWaistBack', 'waistToFloor', 'head'],
+ draft: ({ measurements, Point, points, Snippet, snippets, sa, macro, part }) => {
+ const eyeSize = measurements.head * 0.0416
+ const size =
+ measurements.hpsToWaistBack + measurements.waistToFloor + measurements.head / Math.PI
+
+ points.middle = new Point(0, 0).addCircle(size, 'fabric')
+
+ points.eyeLine = points.middle.shift(270, measurements.head / Math.PI / 2)
+ points.eyeLeft = points.eyeLine.shift(180, measurements.head * 0.13)
+ points.eyeRight = points.eyeLine.shift(0, measurements.head * 0.13)
+ points.left = new Point(-1 * size, 0)
+ points.right = new Point(size, 0)
+
+ points.eyeLeft.addCircle(eyeSize)
+ points.eyeRight.addCircle(eyeSize)
+
+ points.title = points.middle.shift(270, size * 0.65)
+ macro('title', {
+ nr: 1,
+ at: points.title,
+ title: 'Gozer',
+ align: 'center',
+ })
+ points.logo = points.middle.shift(270, size * 0.5)
+ snippets.logo = new Snippet('logo', points.logo)
+
+ if (sa) {
+ points.sa = new Point(0, 0).addCircle(size + sa, 'fabric sa')
+ }
+
+ macro('hd', {
+ from: points.left,
+ to: points.right,
+ id: 'width',
+ y: points.right.y,
+ })
+ macro('hd', {
+ from: points.eyeLeft,
+ to: points.middle,
+ id: 'eye',
+ y: points.eyeLeft.y,
+ })
+ macro('vd', {
+ from: points.eyeLeft,
+ to: points.middle,
+ id: 'eye',
+ x: points.eyeLeft.x,
+ })
+
+ return part
+ },
+}
diff --git a/designs/gozer/src/index.mjs b/designs/gozer/src/index.mjs
new file mode 100644
index 00000000000..e7eaddaa418
--- /dev/null
+++ b/designs/gozer/src/index.mjs
@@ -0,0 +1,16 @@
+//
+
+import { Design } from '@freesewing/core'
+import { i18n } from '../i18n/index.mjs'
+import { data } from '../data.mjs'
+// Parts
+import { ghost } from './ghost.mjs'
+
+// Create new design
+const Gozer = new Design({
+ data,
+ parts: [ghost],
+})
+
+// Named exports
+export { ghost, i18n, Gozer }
diff --git a/designs/gozer/tests/shared.test.mjs b/designs/gozer/tests/shared.test.mjs
new file mode 100644
index 00000000000..7d3887720d8
--- /dev/null
+++ b/designs/gozer/tests/shared.test.mjs
@@ -0,0 +1,20 @@
+// This file is auto-generated | Any changes you make will be overwritten.
+import { Gozer, i18n } from '../src/index.mjs'
+
+// Shared tests
+import { testPatternConfig } from '../../../tests/designs/config.mjs'
+import { testPatternI18n } from '../../../tests/designs/i18n.mjs'
+import { testPatternDrafting } from '../../../tests/designs/drafting.mjs'
+import { testPatternSampling } from '../../../tests/designs/sampling.mjs'
+
+// Test config
+testPatternConfig(Gozer)
+
+// Test translation
+testPatternI18n(Gozer, i18n)
+
+// Test drafting - Change the second parameter to `true` to log errors
+testPatternDrafting(Gozer, false)
+
+// Test sampling - Change the second parameter to `true` to log errors
+testPatternSampling(Gozer, false)
diff --git a/designs/waralee/i18n/en.json b/designs/waralee/i18n/en.json
index 46c7e2cc1f0..1d6b9cde8b5 100644
--- a/designs/waralee/i18n/en.json
+++ b/designs/waralee/i18n/en.json
@@ -4,26 +4,65 @@
"p": {
"backPocket": "Back pocket",
"cutout": "Cutout",
- "facings": "Facings",
- "mini": "Mini",
+ "facingBack": "Back Pocket Facing",
+ "facingFront": "Front Pocket Facing",
+ "mini": "Mini version",
"pants": "Pants",
- "pantsProto": "FIXME: Give this part a name",
+ "pantsProto": "Pants prototype",
"pocket": "Pocket",
"strapBack": "Strap back",
"strapFront": "Strap front",
"waistbandBack": "Waistband back",
"waistbandFront": "Waistband front"
},
- "s": {},
+ "s": {
+ "thisIsNotAPart": "This is not a real part",
+ "doNotCutFromFabric": "Do not cut this from the fabric",
+ "useMeasurementsToCutFromFabric": "Use these measurements to cut the shape from the fabric",
+ "cutBackPocket.t": "The back pocket is not shown",
+ "cutBackPocket.d": "The **back pocket** is made of two rectangles of fabric {{{ width }}} wide and {{{ length }}} long.",
+ "cutFacingback.t": "The back pocket facing is not shown",
+ "cutFacingback.d": "The **back pocket facing** is made of a rectangle of fabric {{{ width }}} wide and {{{ length }}} long.",
+ "cutFacingfront.t": "The front pocket facing is not shown",
+ "cutFacingfront.d": "The **front pocket facing** is made of a rectangle of fabric {{{ width }}} wide and {{{ length }}} long.",
+ "cutwaistbandBack.t": "The back waist band is not shown",
+ "cutwaistbandBack.d": "The **back waist band** is made of two strips of fabric {{{ width }}} wide and {{{ length }}} long.",
+ "cutwaistbandFront.t": "The front waist band is not shown",
+ "cutwaistbandFront.d": "The **front waist band** is made of two strips of fabric {{{ width }}} wide and {{{ length }}} long.",
+ "cutstrapBack.t": "The back strap is not shown",
+ "cutstrapBack.d": "The **back strap** is made of two strips of fabric {{{ width }}} wide and {{{ length }}} long.",
+ "cutstrapFront.t": "The front strap is not shown",
+ "cutstrapFront.d": "The **front strap** is made of two strips of fabric {{{ width }}} wide and {{{ length }}} long.",
+ "showPants.t": "The full pants are shown",
+ "showPants.d": "The **full pants** are shown. This takes up a lot of paper to print. Consider hiding this part, and a minimized version will show with the dimensions.",
+ "hidePants.t": "The full pants are not shown",
+ "hidePants.d": "The **full pants** are not shown. Instead a minimized version is show with the dimensions, allowing you cut this directly from the fabric. This saves considerably on the required paper to print this pattern."
+ },
"o": {
"backPocket": {
"t": "Back pocket",
"d": "Whether to include a back pocket or not"
},
+ "backPocketYes": {
+ "t": "Back pocket",
+ "d": "The back pocket is included"
+ },
+ "backPocketNo": {
+ "t": "No Back pocket",
+ "d": "The pattern is drawn without a back pocket"
+ },
"frontPocket": {
"t": "Front pocket",
"d": "Whether to include a front pocket or not"
},
+ "frontPocketYes": {
+ "t": "Front pocket",
+ "d": "The front pocket is included"
+ },
+ "frontPocketNo": {
+ "t": "No Front pocket",
+ "d": "The pattern is drawn without a front pocket"
+ },
"hemWidth": {
"t": "Hem size",
"d": "Size of the hem at the bottom of the pants"
@@ -64,33 +103,61 @@
"t": "Waist Overlap",
"d": "This dicates how much you want the leg flaps to overlap at the waist. A setting of 0 would have them meet at the side seam, and a setting of 100 makes them meet at the front/back."
},
- "legShortening": {
- "t": "Leg Shortening",
- "d": "This dictates how long the pants will be. It is a factor of the inseam measurement. The larger the value, the more that will be taken off the length."
+ "legSize": {
+ "t": "Leg Size",
+ "d": "This dictates how long the pants will be. It is a factor of the inseam measurement. The larger the value, the longer the pants."
},
"backRaise": {
"t": "Back Raise",
"d": "This setting raises the waist in the back. Our waist does not sit horizontally, but is angled up at the back. This seting allows you to raise this in the back if you need it for a good fit."
},
"fitWaist": {
- "t": "FIXME: Give this option a name",
- "d": "FIXME: Give this option a description"
+ "t": "Fit the garment to the waist",
+ "d": "Traditionally, wrap pants are not fitted to the waist, and just use the flexibility of the fabric to adjust."
+ },
+ "fitWaistNo": {
+ "t": "Do not fit the garment to the waist",
+ "d": "The traditional wrap pants."
+ },
+ "fitWaistYes": {
+ "t": "Fit the garment to the waist",
+ "d": "Adjust the crotch cutout to make the waist fit better."
},
"frontPocketStyle": {
- "t": "FIXME: Give this option a name",
- "d": "FIXME: Give this option a description"
+ "t": "Front pocket style",
+ "d": "A welt pocket, or a pocket hidden in the waistband."
+ },
+ "frontPocketStyle.welt": {
+ "t": "Welt style Front pocket",
+ "d": "The front pocket will be a welt pocket, slanted, and hidden by the overlap."
+ },
+ "frontPocketStyle.waistband": {
+ "t": "Waistband Front pocket",
+ "d": "The front pocket will be hidden in the seam of the waistband."
},
"knotInFront": {
- "t": "FIXME: Give this option a name",
- "d": "FIXME: Give this option a description"
+ "t": "Place the knot in the front",
+ "d": "The knot of the wrap straps can be placed in the front or back."
+ },
+ "knotInFrontNo": {
+ "t": "Knot in the back",
+ "d": "The knot of the wrap straps will be in the back."
+ },
+ "knotInFrontYes": {
+ "t": "Knot in the front",
+ "d": "The knot of the wrap straps will be in the front."
},
"separateWaistband": {
- "t": "FIXME: Give this option a name",
- "d": "FIXME: Give this option a description"
+ "t": "Create a separate waistband",
+ "d": "Create a separate waistband, or have a hem the size of the waistband."
},
- "showMini": {
- "t": "FIXME: Give this option a name",
- "d": "FIXME: Give this option a description"
+ "separateWaistbandNo": {
+ "t": "No separate waistband",
+ "d": "The waistband is created by a folded hem."
+ },
+ "separateWaistbandYes": {
+ "t": "Separate waistband",
+ "d": "The waistband is a separate piece, and sewn onto the pants."
}
}
}
diff --git a/designs/waralee/src/backpocket.mjs b/designs/waralee/src/backpocket.mjs
index bc34ed6615c..5070c8b1973 100644
--- a/designs/waralee/src/backpocket.mjs
+++ b/designs/waralee/src/backpocket.mjs
@@ -1,54 +1,83 @@
import { pantsProto } from './pantsproto.mjs'
-function waraleeBackPocket({
- options,
- measurements,
- Point,
- Path,
- points,
- paths,
- Snippet,
- snippets,
- complete,
- paperless,
- macro,
- sa,
- part,
-}) {
- if (false == options.backPocket) {
- return part
- }
+export const backPocket = {
+ name: 'waralee.backPocket',
+ after: pantsProto,
+ draft: ({
+ options,
+ measurements,
+ Point,
+ Path,
+ points,
+ paths,
+ Snippet,
+ snippets,
+ macro,
+ sa,
+ store,
+ expand,
+ units,
+ part,
+ }) => {
+ if (false == options.backPocket) {
+ return part.hide()
+ }
+ const pocketDepth = options.backPocketDepth * measurements.crotchDepth
- let pocketDepth = options.backPocketDepth
+ if (!expand) {
+ // Expand is off, do not draw the part but flag this to the user
+ store.flag.note({
+ msg: `waralee:cutBackPocket`,
+ replace: {
+ width: units(options.backPocketSize * measurements.crotchDepth),
+ length: units(pocketDepth + options.backPocketVerticalOffset * measurements.crotchDepth),
+ },
+ suggest: {
+ text: 'flag:show',
+ icon: 'expand',
+ update: {
+ settings: ['expand', 1],
+ },
+ },
+ })
+ // Also hint about expand
+ store.flag.preset('expand')
- points.topLeft = new Point(0, 0)
- points.bottomLeft = points.topLeft.shift(
- 270,
- pocketDepth /*+ 30*/ * 2 +
- options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/
- )
+ return part.hide()
+ }
- points.topRight = points.topLeft.shift(
- 0,
- options.backPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/ /*+ 24*/
- )
- points.bottomRight = points.topRight.shift(
- 270,
- pocketDepth /*+ 30*/ * 2 +
- options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/
- )
+ points.topLeft = new Point(0, 0)
+ points.bottomLeft = points.topLeft.shift(
+ 270,
+ pocketDepth + options.backPocketVerticalOffset * measurements.crotchDepth
+ )
- paths.seam = new Path()
- .move(points.topLeft)
- .line(points.bottomLeft)
- .line(points.bottomRight)
- .line(points.topRight)
- .line(points.topLeft)
- .close()
- .attr('class', 'fabric')
+ points.topRight = points.topLeft.shift(0, options.backPocketSize * measurements.crotchDepth)
+ points.bottomRight = points.topRight.shift(
+ 270,
+ pocketDepth + options.backPocketVerticalOffset * measurements.crotchDepth
+ )
+
+ paths.seamSA = new Path()
+ .move(points.bottomRight)
+ .line(points.topRight)
+ .line(points.topLeft)
+ .line(points.bottomLeft)
+ .hide()
+ paths.seam = new Path()
+ .move(points.bottomLeft)
+ .line(points.bottomRight)
+ .join(paths.seamSA)
+ .close()
+ .addClass('fabric')
+
+ macro('cutonfold', {
+ from: points.bottomLeft,
+ to: points.bottomRight,
+ })
+
+ store.cutlist.addCut({ cut: 2, from: 'lining' })
- // Complete?
- if (complete) {
points.title = points.topLeft.shift(270, 75).shift(0, 50)
macro('title', {
nr: 4,
@@ -58,16 +87,10 @@ function waraleeBackPocket({
points.logo = points.title.shift(270, 75)
snippets.logo = new Snippet('logo', points.logo)
- points.text = points.logo
- .shift(-90, 25)
- .attr('data-text', 'Waralee')
- .attr('data-text-class', 'center')
+ points.text = points.logo.shift(-90, 25).addText('Waralee', 'center')
- if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
- }
+ if (sa) paths.sa = paths.seamSA.close().offset(sa).addClass('fabric sa')
- // Paperless?
- if (paperless) {
macro('hd', {
id: 1,
from: points.topLeft,
@@ -80,13 +103,7 @@ function waraleeBackPocket({
to: points.bottomLeft,
x: points.topLeft.x + 15,
})
- }
- return part
-}
-
-export const backPocket = {
- name: 'waralee.backPocket',
- after: pantsProto,
- draft: waraleeBackPocket,
+ return part
+ },
}
diff --git a/designs/waralee/src/cutout.mjs b/designs/waralee/src/cutout.mjs
index b89c866e5e5..28c88d0348c 100644
--- a/designs/waralee/src/cutout.mjs
+++ b/designs/waralee/src/cutout.mjs
@@ -1,38 +1,26 @@
import { pantsProto } from './pantsproto.mjs'
-function waraleeCutout({
- options,
- Path,
- points,
- paths,
- Snippet,
- snippets,
- complete,
- sa,
- paperless,
- macro,
- part,
-}) {
- let separateWaistband = options.separateWaistband
- if ('waistband' == options.frontPocketStyle) {
- separateWaistband = true
- }
+export const cutout = {
+ name: 'waralee.cutout',
+ from: pantsProto,
+ draft: ({ options, Path, points, paths, Snippet, snippets, sa, macro, expand, part }) => {
+ if (expand) {
+ return part.hide()
+ }
- paths.seam = new Path()
- .move(points.mWaist1)
- .line(points.mWaist2)
- .line(separateWaistband ? points.bWaistSideSeam : points.bWaistSide)
- .join(paths.backTopCutOut)
- .join(paths.backBottomCutOut)
- .join(paths.frontBottomCutOut)
- .join(paths.frontTopCutOut)
- .close()
- .attr('class', 'fabric')
+ const separateWaistband = options.separateWaistband || 'waistband' == options.frontPocketStyle
- paths.cutout.hide()
+ paths.seam = new Path()
+ .move(points.mWaist1)
+ .line(points.mWaist2)
+ .line(separateWaistband ? points.bWaistSideSeam : points.bWaistSide)
+ .join(paths.backTopCutOut)
+ .join(paths.backBottomCutOut)
+ .join(paths.frontBottomCutOut)
+ .join(paths.frontTopCutOut)
+ .close()
+ .attr('class', 'fabric')
- // Complete?
- if (complete) {
points.title = points.mWaist.shift(270, 75)
macro('title', {
nr: 2,
@@ -54,10 +42,7 @@ function waraleeCutout({
paths.sa = paths.seamAlternate.offset(sa).attr('class', 'fabric sa')
}
- }
- // Paperless?
- if (paperless) {
macro('hd', {
id: 1,
from: points.fWaistSide,
@@ -82,13 +67,7 @@ function waraleeCutout({
to: points.mWaist1,
x: points.mWaist.x + 15,
})
- }
- return part.setHidden(!options.showMini)
-}
-
-export const cutout = {
- name: 'waralee.cutout',
- from: pantsProto,
- draft: waraleeCutout,
+ return part
+ },
}
diff --git a/designs/waralee/src/facings.mjs b/designs/waralee/src/facings.mjs
index 8ccf86c7caa..f7ce9e62f32 100644
--- a/designs/waralee/src/facings.mjs
+++ b/designs/waralee/src/facings.mjs
@@ -1,128 +1,112 @@
import { pantsProto } from './pantsproto.mjs'
-function waraleeFacings({
- options,
- measurements,
- Point,
- Path,
- points,
- paths,
- Snippet,
- snippets,
- complete,
- paperless,
- macro,
- sa,
- part,
-}) {
- let frontPocketSize =
- options.frontPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/
- let backPocketSize =
- options.backPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/
+function waraleeFacing(
+ type,
+ {
+ options,
+ measurements,
+ Point,
+ Path,
+ points,
+ paths,
+ Snippet,
+ snippets,
+ macro,
+ sa,
+ store,
+ expand,
+ units,
+ part,
+ }
+) {
+ const frontPocketSize = options.frontPocketSize * measurements.crotchDepth
+ const backPocketSize = options.backPocketSize * measurements.crotchDepth
- points.frontTL = new Point(0, 0)
- points.frontTR = points.frontTL.shift(0, frontPocketSize + sa + sa)
- points.frontBL = points.frontTL.shift(270, frontPocketSize / 2)
- points.frontBR = points.frontTR.shift(270, frontPocketSize / 2)
-
- points.backTL = points.frontBL.shift(270, 50)
- points.backTR = points.backTL.shift(0, backPocketSize + sa + sa)
- points.backBL = points.backTL.shift(270, backPocketSize / 2)
- points.backBR = points.backTR.shift(270, backPocketSize / 2)
-
- paths.frontSeam = new Path()
- .move(points.frontTL)
- .line(points.frontBL)
- .line(points.frontBR)
- .line(points.frontTR)
- .line(points.frontTL)
- .close()
- .attr('class', 'fabric')
- .setHidden(!(options.frontPocket && 'welt' == options.frontPocketStyle))
-
- paths.backSeam = new Path()
- .move(points.backTL)
- .line(points.backBL)
- .line(points.backBR)
- .line(points.backTR)
- .line(points.backTL)
- .close()
- .attr('class', 'fabric')
- .setHidden(!options.backPocket)
-
- // Complete?
- if (complete) {
- if (options.frontPocket && 'welt' == options.frontPocketStyle) {
- points.frontTitle = points.frontTL.shift(270, 30).shift(0, 40)
- macro('title', {
- nr: 5,
- at: points.frontTitle.shift(0, 30),
- title: 'frontFacing',
- prefix: 'front',
- scale: 0.6,
- })
-
- points.frontLogo = points.frontTitle.shift(270, 0)
- snippets.frontLogo = new Snippet('logo', points.frontLogo).attr('data-scale', 0.3)
- points.frontText = points.frontLogo
- .shift(-90, 15)
- .attr('data-text', 'Waralee')
- .attr('data-text-class', 'center')
+ if (type == 'front') {
+ if (!options.frontPocket || 'welt' != options.frontPocketStyle) {
+ return part.hide()
}
- if (options.backPocket) {
- points.backTitle = points.backTL.shift(270, 30).shift(0, 40)
- macro('title', {
- nr: 6,
- at: points.backTitle.shift(0, 30),
- title: 'backFacing',
- prefix: 'back',
- scale: 0.6,
- })
- points.backLogo = points.backTitle.shift(270, 0)
- snippets.backLogo = new Snippet('logo', points.backLogo).attr('data-scale', 0.3)
- points.backText = points.backLogo
- .shift(-90, 15)
- .attr('data-text', 'Waralee')
- .attr('data-text-class', 'center')
+ } else {
+ if (!options.backPocket) {
+ return part.hide()
}
}
- // Paperless?
- if (paperless) {
- if (options.frontPocket && 'welt' == options.frontPocketStyle) {
- macro('hd', {
- id: 1,
- from: points.frontTL,
- to: points.frontTR,
- y: points.frontTL.y + 15,
- })
- macro('vd', {
- id: 2,
- from: points.frontTL,
- to: points.frontBL,
- x: points.frontTL.x + 15,
- })
- }
- if (options.backPocket) {
- macro('hd', {
- id: 3,
- from: points.backTL,
- to: points.backTR,
- y: points.backTL.y + 15,
- })
- macro('vd', {
- id: 4,
- from: points.backTL,
- to: points.backBL,
- x: points.backTL.x + 15,
- })
- }
+
+ const width = (type == 'front' ? frontPocketSize : backPocketSize) + sa + sa
+ const height = (type == 'front' ? frontPocketSize : backPocketSize) / 2
+
+ if (!expand) {
+ // Expand is off, do not draw the part but flag this to the user
+ store.flag.note({
+ msg: `waralee:cutFacing` + type,
+ replace: {
+ width: units(width),
+ length: units(height),
+ },
+ suggest: {
+ text: 'flag:show',
+ icon: 'expand',
+ update: {
+ settings: ['expand', 1],
+ },
+ },
+ })
+ // Also hint about expand
+ store.flag.preset('expand')
+
+ return part.hide()
}
+ points.tl = new Point(0, 0)
+ points.tr = points.tl.shift(0, width)
+ points.bl = points.tl.shift(270, height)
+ points.br = points.tr.shift(270, height)
+
+ paths.seamSeam = new Path()
+ .move(points.tl)
+ .line(points.bl)
+ .line(points.br)
+ .line(points.tr)
+ .line(points.tl)
+ .close()
+ .addClass('fabric')
+
+ store.cutlist.addCut({ cut: type == 'front' ? 4 : 2, from: 'fabric' })
+
+ points.title = points.tl.shift(270, 30).shift(0, 40)
+ macro('title', {
+ nr: type == 'front' ? 5 : 6,
+ at: points.title.shift(0, 30),
+ title: type + 'Facing',
+ scale: 0.6,
+ })
+
+ points.logo = points.title.shift(270, 0)
+ snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.3)
+
+ macro('hd', {
+ id: 1,
+ from: points.tl,
+ to: points.tr,
+ y: points.tl.y + 15,
+ })
+ macro('vd', {
+ id: 2,
+ from: points.tl,
+ to: points.bl,
+ x: points.tl.x + 15,
+ })
+
return part
}
-export const facings = {
- name: 'waralee.facings',
+export const facingFront = {
+ name: 'waralee.facingFront',
after: pantsProto,
- draft: waraleeFacings,
+ draft: (part) => waraleeFacing('front', part),
+}
+export const facingBack = {
+ name: 'waralee.facingBack',
+ after: pantsProto,
+ draft: (part) => waraleeFacing('back', part),
}
diff --git a/designs/waralee/src/index.mjs b/designs/waralee/src/index.mjs
index 34b4867de59..f0254229a8c 100644
--- a/designs/waralee/src/index.mjs
+++ b/designs/waralee/src/index.mjs
@@ -5,7 +5,7 @@ import { pants } from './pants.mjs'
import { cutout } from './cutout.mjs'
import { pocket } from './pocket.mjs'
import { backPocket } from './backpocket.mjs'
-import { facings } from './facings.mjs'
+import { facingFront, facingBack } from './facings.mjs'
import { mini } from './mini.mjs'
import { waistbandFront, waistbandBack, strapFront, strapBack } from './waistband.mjs'
// Re-export skeleton parts so peope can re-use them
@@ -19,7 +19,8 @@ const Waralee = new Design({
cutout,
pocket,
backPocket,
- facings,
+ facingFront,
+ facingBack,
mini,
waistbandFront,
waistbandBack,
@@ -34,7 +35,8 @@ export {
cutout,
pocket,
backPocket,
- facings,
+ facingFront,
+ facingBack,
mini,
waistbandFront,
waistbandBack,
diff --git a/designs/waralee/src/mini.mjs b/designs/waralee/src/mini.mjs
index e1524d8bfc6..ee9a2ca3dd9 100644
--- a/designs/waralee/src/mini.mjs
+++ b/designs/waralee/src/mini.mjs
@@ -4,44 +4,44 @@ import { pantsProto } from './pantsproto.mjs'
// To keep you from printing it completely, you could print this part in paperless mode
// and only have a single sheet with all the dimensions on it.
-function waraleeMini({ options, Path, points, paths, complete, sa, macro, store, part }) {
- let mini = options.minimizer
- let separateWaistband = options.separateWaistband
- if ('waistband' == options.frontPocketStyle) {
- separateWaistband = true
- }
+export const mini = {
+ name: 'waralee.mini',
+ from: pantsProto,
+ draft: ({ options, Path, points, paths, sa, macro, store, expand, part }) => {
+ if (expand) {
+ return part.hide()
+ }
- for (var p in points) {
- points[p].x = points[p].x / mini
- points[p].y = points[p].y / mini
- }
+ const mini = points.bWaistBackOverlapSeam.dist(points.fWaistFrontOverlapSeam) / 150
+ const separateWaistband = options.separateWaistband || 'waistband' == options.frontPocketStyle
- paths.waistFoldBack = paths.waistBack
- .offset((-1 * store.get('waistBand')) / mini)
- .attr('class', 'fabric stroke-sm')
- paths.waistFoldFront = paths.waistFront
- .offset((-1 * store.get('waistBand')) / mini)
- .attr('class', 'fabric stroke-sm')
+ for (const p in points) {
+ points[p].x = points[p].x / mini
+ points[p].y = points[p].y / mini
+ }
- paths.frontFold = paths.front
- .offset((-1 * store.get('hem')) / mini)
- .attr('class', 'fabric stroke-sm')
- paths.legFold = paths.leg.offset((-1 * store.get('hem')) / mini).attr('class', 'fabric stroke-sm')
- paths.backFold = paths.back
- .offset((-1 * store.get('hem')) / mini)
- .attr('class', 'fabric stroke-sm')
+ paths.waistFoldBack = paths.waistBack
+ .offset((-1 * store.get('waistBand')) / mini)
+ .addClass('fabric stroke-sm')
+ paths.waistFoldFront = paths.waistFront
+ .offset((-1 * store.get('waistBand')) / mini)
+ .addClass('fabric stroke-sm')
- paths.cutOut = new Path()
- .move(separateWaistband ? points.bWaistSideSeam : points.bWaistSide)
- .line(points.mWaist2)
- .line(points.mWaist1)
- .line(separateWaistband ? points.fWaistSideSeam : points.fWaistSide)
- .attr('class', 'help')
+ paths.frontFold = paths.front
+ .offset((-1 * store.get('hem')) / mini)
+ .addClass('fabric stroke-sm')
+ paths.legFold = paths.leg.offset((-1 * store.get('hem')) / mini).addClass('fabric stroke-sm')
+ paths.backFold = paths.back.offset((-1 * store.get('hem')) / mini).addClass('fabric stroke-sm')
- paths.seam.unhide()
+ paths.cutOut = new Path()
+ .move(separateWaistband ? points.bWaistSideSeam : points.bWaistSide)
+ .line(points.mWaist2)
+ .line(points.mWaist1)
+ .line(separateWaistband ? points.fWaistSideSeam : points.fWaistSide)
+ .addClass('help')
+
+ paths.seam.unhide()
- // Complete?
- if (complete) {
macro('scalebox', { at: points.mLeg.shift(-90, 35) })
if (options.frontPocket && 'welt' == options.frontPocketStyle) {
@@ -52,28 +52,25 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
}
if (sa) {
- paths.sa = paths.seam.offset(sa / mini).attr('class', 'fabric sa')
+ paths.sa = paths.seam.offset(sa / mini).addClass('fabric sa')
}
points.pText1 = points.mHip
.shiftFractionTowards(points.mLeg, 0.5)
- .attr('data-text', 'thisIsNotAPart')
- .attr('data-text-class', 'center')
+ .addText('waralee:thisIsNotAPart', 'center')
points.pText2 = points.mHip
.shiftFractionTowards(points.mLeg, 0.6)
- .attr('data-text', 'doNotCutFromFabric')
- .attr('data-text-class', 'center')
+ .addText('waralee:doNotCutFromFabric', 'center')
points.pText3 = points.mHip
.shiftFractionTowards(points.mLeg, 0.7)
- .attr('data-text', 'useMeasurementsToCutFromFabric')
- .attr('data-text-class', 'center')
+ .addText('waralee:useMeasurementsToCutFromFabric', 'center')
- let fWaistSide = separateWaistband ? points.fWaistSideSeam : points.fWaistSide
- let fWaistFrontOverlap = separateWaistband
+ const fWaistSide = separateWaistband ? points.fWaistSideSeam : points.fWaistSide
+ const fWaistFrontOverlap = separateWaistband
? points.fWaistFrontOverlapSeam
: points.fWaistFrontOverlap
- let bWaistSide = separateWaistband ? points.bWaistSideSeam : points.bWaistSide
- let bWaistBackOverlap = separateWaistband
+ const bWaistSide = separateWaistband ? points.bWaistSideSeam : points.bWaistSide
+ const bWaistBackOverlap = separateWaistband
? points.bWaistBackOverlapSeam
: points.bWaistBackOverlap
@@ -83,6 +80,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: fWaistSide,
y: fWaistSide.y + 10,
text: part.units(fWaistSide.dist(points.fWaistFrontOverlap) * mini),
+ force: true,
})
macro('hd', {
id: 2,
@@ -90,6 +88,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: points.bLegBackOverlap,
y: points.bLegBackOverlap.y - 10,
text: part.units(points.fLegFrontOverlap.dist(points.bLegBackOverlap) * mini),
+ force: true,
})
macro('hd', {
id: 3,
@@ -97,6 +96,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: points.bWaistBackOverlap,
y: points.bWaistBackOverlap.y + 20,
text: part.units(points.bWaistBackOverlap.dist(points.bWaistBack) * mini),
+ force: true,
})
macro('hd', {
id: 4,
@@ -104,6 +104,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: points.mHip,
y: points.mHip.y + 10,
text: part.units((points.mHip.x - points.fWaistFrontOverlap.x) * mini),
+ force: true,
})
macro('vd', {
id: 5,
@@ -111,6 +112,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: points.fLegFrontOverlap,
x: points.fLegFrontOverlap.x + 10,
text: part.units(fWaistFrontOverlap.dist(points.fLegFrontOverlap) * mini),
+ force: true,
})
macro('vd', {
id: 6,
@@ -118,6 +120,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: bWaistBackOverlap,
x: points.bLegBackOverlap.x - 10,
text: part.units(bWaistBackOverlap.dist(points.bLegBackOverlap) * mini),
+ force: true,
})
macro('vd', {
id: 7,
@@ -125,6 +128,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: bWaistSide,
x: bWaistSide.x + 10,
text: part.units((points.bLegBackOverlap.y - bWaistSide.y) * mini),
+ force: true,
})
if (options.frontPocket && 'welt' == options.frontPocketStyle) {
@@ -134,6 +138,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: points.frontPocketBottom2,
y: points.frontPocketBottom2.y + 20,
text: part.units((points.frontPocketBottom2.x - fWaistFrontOverlap.x) * mini),
+ force: true,
})
macro('vd', {
id: 9,
@@ -141,6 +146,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: points.frontPocketBottom2,
x: points.frontPocketBottom2.x + 20,
text: part.units((points.frontPocketBottom2.y - fWaistFrontOverlap.y) * mini),
+ force: true,
})
}
@@ -151,6 +157,7 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: bWaistBackOverlap,
y: bWaistBackOverlap.y + 40,
text: part.units((bWaistBackOverlap.x - points.backPocketRight.x) * mini),
+ force: true,
})
macro('vd', {
id: 11,
@@ -158,15 +165,9 @@ function waraleeMini({ options, Path, points, paths, complete, sa, macro, store,
to: points.backPocketRight,
x: points.backPocketRight.x,
text: part.units((points.backPocketRight.y - bWaistBackOverlap.y) * mini),
+ force: true,
})
}
- }
-
- return part.setHidden(!options.showMini)
-}
-
-export const mini = {
- name: 'waralee.mini',
- from: pantsProto,
- draft: waraleeMini,
+ return part
+ },
}
diff --git a/designs/waralee/src/options.mjs b/designs/waralee/src/options.mjs
deleted file mode 100644
index 437459ffe31..00000000000
--- a/designs/waralee/src/options.mjs
+++ /dev/null
@@ -1,36 +0,0 @@
-// Fit
-export const backRaise = { pct: 10, min: 0, max: 25, menu: 'fit' }
-export const waistRaise = { pct: 0, min: -20, max: 40, menu: 'fit' }
-// Style
-export const hemWidth = { pct: 1.75, min: 1, max: 2.5, menu: 'style' }
-export const legShortening = { pct: 25, min: -10, max: 50, menu: 'style' }
-export const waistOverlap = { pct: 50, min: 10, max: 100, menu: 'style' }
-export const frontPocket = { bool: true, menu: 'style' }
-export const backPocket = { bool: true, menu: 'style' }
-export const waistbandWidth = { pct: 3.5, min: 2, max: 5, menu: 'style' }
-// Advanced
-export const crotchFront = { pct: 30, min: 10, max: 70, menu: 'advanced' }
-export const crotchBack = { pct: 45, min: 10, max: 70, menu: 'advanced' }
-export const crotchFactorFrontHor = { pct: 90, min: 10, max: 100, menu: 'advanced' }
-export const crotchFactorFrontVer = { pct: 30, min: 10, max: 70, menu: 'advanced' }
-export const crotchFactorBackHor = { pct: 90, min: 10, max: 100, menu: 'advanced' }
-export const crotchFactorBackVer = { pct: 60, min: 20, max: 90, menu: 'advanced' }
-// Static values
-export const minimizer = 4
-export const frontPocketVerticalOffset = 0.07
-export const frontPocketHorizontalOffset = 0.18
-export const frontPocketSize = 0.45
-export const frontPocketDepthFactor = 1.6
-export const backPocketDepth = 140
-export const backPocketVerticalOffset = 0.2
-export const backPocketHorizontalOffset = 0.045
-export const backPocketSize = 0.45
-// Added later
-export const frontWaistAdjustment = 0.163
-export const backWaistAdjustment = 0.3
-export const crotchEase = 1.08
-export const frontPocketStyle = { dflt: 'welt', list: ['welt', 'waistband'], menu: 'style' }
-export const showMini = { bool: true, menu: 'options' }
-export const fitWaist = { bool: true, menu: 'fit' }
-export const separateWaistband = { bool: false, menu: 'style' }
-export const knotInFront = { bool: true, menu: 'style' }
diff --git a/designs/waralee/src/pants.mjs b/designs/waralee/src/pants.mjs
index 4f7f0b5dcc4..83c9a116216 100644
--- a/designs/waralee/src/pants.mjs
+++ b/designs/waralee/src/pants.mjs
@@ -1,44 +1,54 @@
import { pantsProto } from './pantsproto.mjs'
-function waraleePants({
- options,
- points,
- Path,
- paths,
- Snippet,
- snippets,
- complete,
- sa,
- paperless,
- macro,
- store,
- part,
-}) {
- let separateWaistband = options.separateWaistband
- if ('waistband' == options.frontPocketStyle) {
- separateWaistband = true
- }
+export const pants = {
+ name: 'waralee.pants',
+ from: pantsProto,
+ draft: ({ options, points, Path, paths, Snippet, snippets, sa, macro, store, expand, part }) => {
+ const separateWaistband = options.separateWaistband || 'waistband' == options.frontPocketStyle
- if (false == separateWaistband) {
- paths.waistFoldBack = new Path()
- .move(points.bWaistSideHem)
- .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBackHem)
- .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlapHem)
- .attr('class', 'fabric stroke-sm')
- paths.waistFoldFront = new Path()
- .move(points.fWaistSideHem)
- .line(points.fWaistFrontOverlapHem)
- .attr('class', 'fabric stroke-sm')
- }
+ if (expand) {
+ // Expand is on, do not draw the part but flag this to the user
+ store.flag.note({
+ msg: `waralee:showPants`,
+ suggest: {
+ text: 'flag:hide',
+ icon: 'expand',
+ update: {
+ settings: ['expand', 0],
+ },
+ },
+ })
+ } else {
+ // Expand is off, do not draw the part but flag this to the user
+ store.flag.note({
+ msg: `waralee:hidePants`,
+ })
+ // Also hint about expand
+ store.flag.preset('expand')
- paths.frontFold = paths.front.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm')
- paths.legFold = paths.leg.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm')
- paths.backFold = paths.back.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm')
+ return part.hide()
+ }
- paths.seam.unhide()
+ if (false == separateWaistband) {
+ paths.waistFoldBack = new Path()
+ .move(points.bWaistSideHem)
+ .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBackHem)
+ .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlapHem)
+ .addClass('fabric stroke-sm')
+ paths.waistFoldFront = new Path()
+ .move(points.fWaistSideHem)
+ .line(points.fWaistFrontOverlapHem)
+ .addClass('fabric stroke-sm')
+ }
+
+ paths.frontFold = paths.front.offset(-1 * store.get('hem')).addClass('fabric stroke-sm')
+ paths.legFold = paths.leg.offset(-1 * store.get('hem')).addClass('fabric stroke-sm')
+ paths.backFold = paths.back.offset(-1 * store.get('hem')).addClass('fabric stroke-sm')
+
+ paths.seam.unhide()
+
+ store.cutlist.addCut({ cut: 2, from: 'fabric' })
- // Complete?
- if (complete) {
points.title = points.fWaistFront.shift(270, 400)
macro('title', {
nr: 1,
@@ -47,23 +57,20 @@ function waraleePants({
})
points.logo = points.title.shift(270, 75)
-
snippets.logo = new Snippet('logo', points.logo)
macro('scalebox', { at: points.mHip.shift(-90, 70) })
- if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
- }
+ if (sa) paths.sa = paths.seam.offset(sa).addClass('fabric sa')
- if (options.frontPocket && 'welt' == options.frontPocketStyle) {
- paths.frontPocket.unhide()
- }
- if (options.backPocket) {
- paths.backPocket.unhide()
- }
+ if (options.frontPocket && 'welt' == options.frontPocketStyle) {
+ paths.frontPocket.unhide()
+ paths.frontPocketSeam.unhide()
+ }
+ if (options.backPocket) {
+ paths.backPocket.unhide()
+ }
- // Paperless?
- if (paperless) {
let fWaistSide = separateWaistband ? points.fWaistSideSeam : points.fWaistSide
let bWaistSide = separateWaistband ? points.bWaistSideSeam : points.bWaistSide
macro('hd', {
@@ -114,6 +121,7 @@ function waraleePants({
to: points.bLegBackOverlap,
x: points.bLegBackOverlap.x - 30,
})
+
if (false == separateWaistband) {
macro('vd', {
id: 8,
@@ -121,68 +129,62 @@ function waraleePants({
to: points.fWaistSideHem,
x: points.fWaistSide.x + 10,
})
+
+ if (options.frontPocket && 'welt' == options.frontPocketStyle) {
+ macro('vd', {
+ id: 9,
+ from: fWaistSide,
+ to: points.frontPocketTop,
+ x: points.frontPocketTop.x,
+ })
+ macro('vd', {
+ id: 10,
+ from: fWaistSide,
+ to: points.frontPocketBottom,
+ x: points.frontPocketBottom.x,
+ })
+ macro('hd', {
+ id: 11,
+ from: points.frontPocketTop,
+ to: fWaistSide,
+ y: points.frontPocketTop.y,
+ })
+ macro('hd', {
+ id: 12,
+ from: points.frontPocketBottom,
+ to: fWaistSide,
+ y: points.frontPocketBottom.y,
+ })
+ }
+
+ if (options.backPocket) {
+ macro('vd', {
+ id: 13,
+ from: bWaistSide,
+ to: points.backPocketLeft,
+ x: points.backPocketLeft.x,
+ })
+ macro('vd', {
+ id: 14,
+ from: bWaistSide,
+ to: points.backPocketRight,
+ x: points.backPocketRight.x,
+ })
+ macro('hd', {
+ id: 15,
+ from: bWaistSide,
+ to: points.backPocketLeft,
+ y: points.backPocketLeft.y,
+ })
+ macro('hd', {
+ id: 16,
+ from: bWaistSide,
+ to: points.backPocketRight,
+ y: points.backPocketRight.y,
+ })
+ }
}
- if (options.frontPocket && 'welt' == options.frontPocketStyle) {
- macro('vd', {
- id: 9,
- from: fWaistSide,
- to: points.frontPocketTop,
- x: points.frontPocketTop.x,
- })
- macro('vd', {
- id: 10,
- from: fWaistSide,
- to: points.frontPocketBottom,
- x: points.frontPocketBottom.x,
- })
- macro('hd', {
- id: 11,
- from: points.frontPocketTop,
- to: fWaistSide,
- y: points.frontPocketTop.y,
- })
- macro('hd', {
- id: 12,
- from: points.frontPocketBottom,
- to: fWaistSide,
- y: points.frontPocketBottom.y,
- })
- }
-
- if (options.backPocket) {
- macro('vd', {
- id: 13,
- from: bWaistSide,
- to: points.backPocketLeft,
- x: points.backPocketLeft.x,
- })
- macro('vd', {
- id: 14,
- from: bWaistSide,
- to: points.backPocketRight,
- x: points.backPocketRight.x,
- })
- macro('hd', {
- id: 15,
- from: bWaistSide,
- to: points.backPocketLeft,
- y: points.backPocketLeft.y,
- })
- macro('hd', {
- id: 16,
- from: bWaistSide,
- to: points.backPocketRight,
- y: points.backPocketRight.y,
- })
- }
- }
-
- return part.setHidden(options.showMini != false)
-}
-
-export const pants = {
- name: 'waralee.pants',
- from: pantsProto,
- draft: waraleePants,
+ return part
+ },
}
diff --git a/designs/waralee/src/pantsproto.mjs b/designs/waralee/src/pantsproto.mjs
index d99283795ab..f8e6e56b219 100644
--- a/designs/waralee/src/pantsproto.mjs
+++ b/designs/waralee/src/pantsproto.mjs
@@ -1,310 +1,70 @@
-import * as options from './options.mjs'
+import { pctBasedOn } from '@freesewing/core'
-function waraleePantsProto({ options, measurements, Point, Path, points, paths, store, part }) {
- let seatDepth =
- measurements.crotchDepth /* - measurements.waistToHips */ *
- (1 + options.waistRaise) *
- options.crotchEase
- let circumference = measurements.seat
- let waist =
- typeof measurements.waist == 'undefined' || false == options.fitWaist
- ? measurements.seat
- : measurements.waist
- let waistBack =
- typeof measurements.waistBack == 'undefined' || false == options.fitWaist
- ? waist / 2
- : measurements.waistBack
-
- let separateWaistband = options.separateWaistband
- if ('waistband' == options.frontPocketStyle) {
- separateWaistband = true
- }
-
- if (circumference < waist) {
- circumference = waist
- }
-
- let circumference4 = circumference / 4
- let hem = measurements.inseam * options.hemWidth
- let waistBand = measurements.inseam * options.waistbandWidth
- store.set('waistBand', waistBand)
- store.set('hem', hem)
-
- points.mWaist = new Point(0, 0)
-
- points.mHip = points.mWaist.shift(270, seatDepth)
-
- points.fWaistSide = points.mWaist
- .shift(180, options.crotchFront * circumference4)
- .shift(90, waistBand)
- points.fWaistCrotchCP = points.fWaistSide.shift(
- 270,
- seatDepth * options.crotchFactorFrontVer + waistBand
- )
- points.fHipCrotchCP = points.mHip.shift(
- 180,
- options.crotchFront * circumference4 * options.crotchFactorFrontHor
- )
-
- points.fHipSide = points.mHip.shift(180, options.crotchFront * circumference4)
-
- points.bWaistSide = points.mWaist
- .shift(0, options.crotchBack * circumference4)
- .shift(90, waistBand)
- .shift(90, options.backRaise * seatDepth)
- points.bWaistCrotchCP = points.bWaistSide.shift(270, seatDepth * options.crotchFactorBackVer)
- points.bHipCrotchCP = points.mHip.shift(
- 0,
- options.crotchBack * circumference4 * options.crotchFactorBackHor
- )
-
- points.bHipSide = points.mHip.shift(0, options.crotchBack * circumference4)
-
- points.fCutOutHip = new Path()
- .move(points.fWaistSide)
- .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)
- .shiftAlong(measurements.waistToHips + waistBand)
- points.bCutOutHip = new Path()
- .move(points.bWaistSide)
- .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)
- .shiftAlong(measurements.waistToHips + waistBand + options.backRaise * seatDepth)
-
- let waistSeatDifferenceBack = measurements.seat / 2 - waistBack
- let waistSeatDifferenceFront = measurements.seat / 2 - (waist - waistBack)
-
- points.bWaistAdjusted = points.bWaistSide.shift(
- 0,
- waistSeatDifferenceBack * options.backWaistAdjustment
- )
- points.fWaistAdjusted = points.fWaistSide.shift(
- 180,
- waistSeatDifferenceFront * options.frontWaistAdjustment
- )
-
- points.mLeg = points.mHip.shift(270, measurements.inseam * (1 - options.legShortening))
- points.fLegSide = points.mLeg.shift(180, options.crotchFront * circumference4)
- points.bLegSide = points.mLeg.shift(0, options.crotchBack * circumference4)
-
- points.fWaistFront = points.fWaistSide.shift(180, circumference4)
- points.fWaistFrontOverlap = points.fWaistFront.shift(180, options.waistOverlap * circumference4)
- points.fHipFront = points.fHipSide.shift(180, circumference4)
- points.fHipFrontOverlap = points.fHipFront.shift(180, options.waistOverlap * circumference4)
- points.fLegFront = points.fLegSide.shift(180, circumference4)
- points.fLegFrontOverlap = points.fLegFront.shift(180, options.waistOverlap * circumference4)
-
- // Calculate the distance we need to move horizontally to get to the point that will
- // diagonally be the distance we're looking for (circumference/4)
- let bHorDistance = Math.sqrt(
- circumference4 * circumference4 - options.backRaise * seatDepth * options.backRaise * seatDepth
- )
- // Create a point that is this distance from the side.
- points.bWaistBack = points.mWaist
- .shift(90, waistBand)
- .shift(0, options.crotchBack * circumference4 + bHorDistance)
-
- points.bWaistBackOverlap = points.bWaistBack.shift(0, options.waistOverlap * circumference4)
-
- points.bHipBack = points.bHipSide.shift(0, circumference4)
- points.bHipBackOverlap = points.bHipBack.shift(0, options.waistOverlap * circumference4)
- points.bLegBack = points.bLegSide.shift(0, circumference4)
- points.bLegBackOverlap = points.bLegBack.shift(0, options.waistOverlap * circumference4)
-
- points.bWaistSideTemp = points.bWaistSide.shift(0, 2) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line.
-
- let fPaths = new Path()
- .move(points.fWaistSide)
- .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)
- .split(points.fCutOutHip)
-
- let bPaths = new Path()
- .move(points.bWaistSide)
- .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)
- .split(points.bCutOutHip)
-
- fPaths[0].hide()
- fPaths[1].hide()
- bPaths[0].hide()
- bPaths[1].hide()
-
- points.fCutOutHipCp1 = fPaths[1].ops[1].cp1.shiftFractionTowards(points.fCutOutHip, 1.25)
- points.fCutOutHipCp2 = fPaths[1].ops[1].cp1.clone()
- points.mHipCp1 = fPaths[1].ops[1].cp2.clone()
- points.mHipCp2 = bPaths[1].ops[1].cp2.clone()
- points.bCutOutHipCp1 = bPaths[1].ops[1].cp1.clone()
- points.bCutOutHipCp2 = bPaths[1].ops[1].cp1.shiftFractionTowards(points.bCutOutHip, 1.25)
-
- paths.frontBottomCutOut = new Path()
- .move(points.mHip)
- .curve(points.mHipCp1, points.fCutOutHipCp2, points.fCutOutHip)
- .hide()
- paths.backBottomCutOut = new Path()
- .move(points.bCutOutHip)
- .curve(points.bCutOutHipCp1, points.mHipCp2, points.mHip)
- .hide()
-
- paths.frontTopCutOut = new Path()
- .move(points.fCutOutHip)
- .curve(points.fCutOutHipCp1, points.fWaistAdjusted, points.fWaistAdjusted)
- .hide()
- paths.backTopCutOut = new Path()
- .move(points.bWaistAdjusted)
- .curve(points.bWaistAdjusted, points.bCutOutHipCp2, points.bCutOutHip)
- .hide()
-
- points.fWaistSideHem = paths.frontTopCutOut.reverse().shiftAlong(waistBand)
- points.fWaistSideSeam = paths.frontTopCutOut.reverse().shiftAlong(waistBand * 2)
- points.fWaistSide = points.fWaistSideSeam.flipY(points.fWaistSideHem)
- points.bWaistSideHem = paths.backTopCutOut.shiftAlong(waistBand)
- points.bWaistSideSeam = paths.backTopCutOut.shiftAlong(waistBand * 2)
- points.bWaistSide = points.bWaistSideSeam.flipY(points.bWaistSideHem)
-
- points.fWaistFrontOverlapHem = points.fWaistFrontOverlap.shift(270, waistBand)
- points.bWaistBackHem = points.bWaistBack.shift(270, waistBand)
- points.bWaistBackOverlapHem = points.bWaistBackOverlap.shift(270, waistBand)
- points.fWaistFrontOverlapSeam = points.fWaistFrontOverlap.shift(270, waistBand * 2)
- points.bWaistBackSeam = points.bWaistBack.shift(270, waistBand * 2)
- points.bWaistBackOverlapSeam = points.bWaistBackOverlap.shift(270, waistBand * 2)
- points.fWaistSideCp2 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp2.clone()
-
- points.fWaistSideCp2 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp2.clone()
- points.fWaistHipCp1 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp1.clone()
- points.bWaistSideCp1 = paths.backTopCutOut.split(points.bWaistSideSeam)[1].ops[1].cp1.clone()
- points.bWaistHipCp2 = paths.backTopCutOut.split(points.bWaistSideSeam)[1].ops[1].cp2.clone()
-
- if (separateWaistband) {
- points.mWaist1 = new Point(points.mWaist.x, points.fWaistSideSeam.y)
- // points.mWaist = new Point(points.mWaist.x, points.fWaistSideSeam.y)
- } else {
- points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y)
- }
- if (separateWaistband) {
- points.mWaist2 = new Point(points.mWaist.x, points.bWaistSideSeam.y)
- } else {
- points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y)
- }
-
- paths.frontTopCutOut = new Path()
- .move(points.fCutOutHip)
- .curve(points.fCutOutHipCp1, points.fWaistSideCp2, points.fWaistSideSeam)
- .hide()
- if (false == separateWaistband) {
- paths.frontTopCutOut.line(points.fWaistSideHem)
- paths.frontTopCutOut.line(points.fWaistSide)
- }
- if (false == separateWaistband) {
- paths.backTopCutOut = new Path()
- .move(points.bWaistSide)
- .line(points.bWaistSideHem)
- .line(points.bWaistSideSeam)
- } else {
- paths.backTopCutOut = new Path().move(points.bWaistSideSeam)
- }
- paths.backTopCutOut.curve(points.bWaistSideCp1, points.bCutOutHipCp2, points.bCutOutHip).hide()
-
- paths.cutout = paths.backTopCutOut
- .join(paths.backBottomCutOut)
- .join(paths.frontBottomCutOut)
- .join(paths.frontTopCutOut)
- .hide()
-
- paths.waistBack = new Path()
- .move(separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap)
- .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBack)
- // .line(points.bWaistSideTemp) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line.
- .line(separateWaistband ? points.bWaistSideSeam : points.bWaistSide)
- .hide()
- paths.waistFront = new Path()
- .move(separateWaistband ? points.fWaistSideSeam : points.fWaistSide)
- .line(separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap)
- .hide()
- paths.front = new Path()
- .move(separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap)
- .line(points.fHipFrontOverlap)
- .line(points.fLegFrontOverlap)
- .hide()
- paths.back = new Path()
- .move(points.bLegBackOverlap)
- .line(points.bHipBackOverlap)
- .line(separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap)
- .hide()
- paths.leg = new Path().move(points.fLegFrontOverlap).line(points.bLegBackOverlap).hide()
-
- paths.seam = paths.waistFront
- .join(paths.front)
- .join(paths.leg)
- .join(paths.back)
- .join(paths.waistBack)
- .join(paths.cutout)
- .close()
- .attr('class', 'fabric')
- .hide()
-
- if (options.frontPocket) {
- points.frontPocketTop = points.fWaistSideSeam
- .shift(
- 270,
- options.frontPocketVerticalOffset *
- measurements.crotchDepth /*- measurements.waistToHips*/ +
- waistBand * (separateWaistband ? 1 : 2)
- )
- .shift(180, options.frontPocketHorizontalOffset * measurements.seat)
-
- points.frontPocketTop2 = points.frontPocketTop.shift(340, 12)
- points.frontPocketBottom = points.frontPocketTop.shift(
- 250,
- options.frontPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/
- )
- points.frontPocketBottom2 = points.frontPocketBottom.shift(340, 12)
-
- paths.frontPocket = new Path()
- .move(points.frontPocketTop)
- .line(points.frontPocketBottom)
- .line(points.frontPocketBottom2)
- .line(points.frontPocketTop2)
- .close()
- .attr('class', 'fabric')
- .hide()
- }
-
- if (options.backPocket) {
- points.backPocketRight = points.bWaistBack
- .shiftTowards(points.bWaistSide, options.backPocketHorizontalOffset * measurements.seat)
- .shift(
- 270,
- options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ +
- waistBand * (separateWaistband ? 1 : 2)
- )
- points.backPocketLeft = points.bWaistBack
- .shiftTowards(
- points.bWaistSide,
- options.backPocketHorizontalOffset * measurements.seat +
- options.backPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/
- )
- .shift(
- 270,
- options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ +
- waistBand * (separateWaistband ? 1 : 2)
- )
- points.backPocketRight2 = points.backPocketRight.shift(
- points.backPocketRight.angle(points.backPocketLeft) + 90,
- 12
- )
- points.backPocketLeft2 = points.backPocketLeft.shift(
- points.backPocketLeft.angle(points.backPocketRight) - 90,
- 12
- )
-
- paths.backPocket = new Path()
- .move(points.backPocketLeft)
- .line(points.backPocketLeft2)
- .line(points.backPocketRight2)
- .line(points.backPocketRight)
- .close()
- .attr('class', 'fabric')
- .hide()
- }
-
- return part.hide()
+export const options = {
+ // Fit
+ backRaise: {
+ pct: 10,
+ min: 0,
+ max: 25,
+ // eslint-disable-next-line no-unused-vars
+ toAbs: (value, { measurements, options }, mergedOptions) =>
+ value *
+ (measurements.crotchDepth * (1 + mergedOptions.waistRaise) * mergedOptions.crotchEase),
+ menu: 'fit',
+ },
+ waistRaise: {
+ pct: 0,
+ min: -20,
+ max: 40,
+ // eslint-disable-next-line no-unused-vars
+ toAbs: (value, { measurements, options }, mergedOptions) =>
+ measurements.crotchDepth * (1 + value),
+ menu: 'fit',
+ },
+ fitWaist: { bool: true, menu: 'fit' },
+ // Style
+ hemWidth: { pct: 1.75, min: 1, max: 2.5, ...pctBasedOn('inseam'), menu: 'style' },
+ legSize: { pct: 75, max: 90, min: 50, ...pctBasedOn('inseam'), menu: 'style' },
+ waistOverlap: {
+ pct: 50,
+ min: 10,
+ max: 100,
+ // eslint-disable-next-line no-unused-vars
+ toAbs: (value, { measurements, options }, mergedOptions) => {
+ const waist =
+ typeof measurements.waist == 'undefined' || false == mergedOptions.fitWaist
+ ? measurements.seat
+ : measurements.waist
+ return (measurements.seat > waist ? measurements.seat : waist) * value
+ },
+ menu: 'style',
+ },
+ frontPocket: { bool: true, menu: 'style' },
+ backPocket: { bool: true, menu: 'style' },
+ waistbandWidth: { pct: 3.5, min: 2, max: 5, ...pctBasedOn('inseam'), menu: 'style' },
+ frontPocketStyle: { dflt: 'welt', list: ['welt', 'waistband'], menu: 'style' },
+ separateWaistband: { bool: false, menu: 'style' },
+ knotInFront: { bool: true, menu: 'style' },
+ // Advanced
+ crotchFront: { pct: 30, min: 10, max: 70, menu: 'advanced' },
+ crotchBack: { pct: 45, min: 10, max: 70, menu: 'advanced' },
+ crotchFactorFrontHor: { pct: 90, min: 10, max: 100, menu: 'advanced' },
+ crotchFactorFrontVer: { pct: 30, min: 10, max: 70, menu: 'advanced' },
+ crotchFactorBackHor: { pct: 90, min: 10, max: 100, menu: 'advanced' },
+ crotchFactorBackVer: { pct: 60, min: 20, max: 90, menu: 'advanced' },
+ // Static values
+ backWaistAdjustment: 0.3,
+ frontPocketVerticalOffset: 0.07,
+ frontPocketHorizontalOffset: 0.18,
+ frontPocketSize: 0.45,
+ frontPocketWidthHeightRatio: 0.076,
+ frontPocketDepthFactor: 1.6,
+ frontWaistAdjustment: 0.163,
+ backPocketDepth: 0.5,
+ backPocketVerticalOffset: 0.2,
+ backPocketHorizontalOffset: 0.045,
+ backPocketSize: 0.45,
+ crotchEase: 1.08,
}
export const pantsProto = {
@@ -313,5 +73,362 @@ export const pantsProto = {
measurements: ['seat', 'inseam', 'crotchDepth', 'waistToHips'],
optionalMeasurements: ['waist', 'waistBack'],
options,
- draft: waraleePantsProto,
+ draft: ({ options, measurements, Point, Path, points, paths, store, part, utils }) => {
+ const seatDepth = measurements.crotchDepth * (1 + options.waistRaise) * options.crotchEase
+ const waist =
+ typeof measurements.waist == 'undefined' || false == options.fitWaist
+ ? measurements.seat
+ : measurements.waist
+ const circumference = measurements.seat > waist ? measurements.seat : waist
+ const waistBack =
+ typeof measurements.waistBack == 'undefined' || false == options.fitWaist
+ ? waist / 2
+ : measurements.waistBack
+
+ const separateWaistband = options.separateWaistband || 'waistband' == options.frontPocketStyle
+
+ const circumference4 = circumference / 4
+ const hem = measurements.inseam * options.hemWidth
+ const waistBand = measurements.inseam * options.waistbandWidth
+
+ const frontPocketSize = options.frontPocketSize * measurements.crotchDepth
+ const pocketDepth =
+ (measurements.crotchDepth - measurements.waistToHips) * options.frontPocketDepthFactor >
+ frontPocketSize * 1.75
+ ? (measurements.crotchDepth - measurements.waistToHips) * options.frontPocketDepthFactor
+ : frontPocketSize * 1.75
+ const frontPocketHeight = frontPocketSize * options.frontPocketWidthHeightRatio
+
+ store.set('waistBand', waistBand)
+ store.set('hem', hem)
+ store.set('pocketDepth', pocketDepth)
+ store.set('frontPocketSize', frontPocketSize)
+
+ points.mWaist = new Point(0, 0)
+
+ points.mHip = points.mWaist.shift(270, seatDepth)
+
+ points.fWaistSide = points.mWaist
+ .shift(180, options.crotchFront * circumference4)
+ .shift(90, waistBand)
+ points.fWaistCrotchCP = points.fWaistSide.shift(
+ 270,
+ seatDepth * options.crotchFactorFrontVer + waistBand
+ )
+ points.fHipCrotchCP = points.mHip.shift(
+ 180,
+ options.crotchFront * circumference4 * options.crotchFactorFrontHor
+ )
+
+ points.fHipSide = points.mHip.shift(180, options.crotchFront * circumference4)
+
+ points.bWaistSide = points.mWaist
+ .shift(0, options.crotchBack * circumference4)
+ .shift(90, waistBand)
+ .shift(90, options.backRaise * seatDepth)
+ points.bWaistCrotchCP = points.bWaistSide.shift(270, seatDepth * options.crotchFactorBackVer)
+ points.bHipCrotchCP = points.mHip.shift(
+ 0,
+ options.crotchBack * circumference4 * options.crotchFactorBackHor
+ )
+
+ points.bHipSide = points.mHip.shift(0, options.crotchBack * circumference4)
+
+ points.fCutOutHip = new Path()
+ .move(points.fWaistSide)
+ .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)
+ .shiftAlong(measurements.waistToHips + waistBand)
+ points.bCutOutHip = new Path()
+ .move(points.bWaistSide)
+ .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)
+ .shiftAlong(measurements.waistToHips + waistBand + options.backRaise * seatDepth)
+
+ const waistSeatDifferenceBack = measurements.seat / 2 - waistBack
+ const waistSeatDifferenceFront = measurements.seat / 2 - (waist - waistBack)
+
+ points.bWaistAdjusted = points.bWaistSide.shift(
+ 0,
+ waistSeatDifferenceBack * options.backWaistAdjustment
+ )
+ points.fWaistAdjusted = points.fWaistSide.shift(
+ 180,
+ waistSeatDifferenceFront * options.frontWaistAdjustment
+ )
+
+ points.mLeg = points.mHip.shift(270, measurements.inseam * options.legSize)
+ points.fLegSide = points.mLeg.shift(180, options.crotchFront * circumference4)
+ points.bLegSide = points.mLeg.shift(0, options.crotchBack * circumference4)
+
+ points.fWaistFront = points.fWaistSide.shift(180, circumference4)
+ points.fWaistFrontOverlap = points.fWaistFront.shift(180, options.waistOverlap * circumference4)
+ points.fHipFront = points.fHipSide.shift(180, circumference4)
+ points.fHipFrontOverlap = points.fHipFront.shift(180, options.waistOverlap * circumference4)
+ points.fLegFront = points.fLegSide.shift(180, circumference4)
+ points.fLegFrontOverlap = points.fLegFront.shift(180, options.waistOverlap * circumference4)
+
+ // Calculate the distance we need to move horizontally to get to the point that will
+ // diagonally be the distance we're looking for (circumference/4)
+ const bHorDistance = Math.sqrt(
+ circumference4 * circumference4 -
+ options.backRaise * seatDepth * options.backRaise * seatDepth
+ )
+ // Create a point that is this distance from the side.
+ points.bWaistBack = points.mWaist
+ .shift(90, waistBand)
+ .shift(0, options.crotchBack * circumference4 + bHorDistance)
+
+ points.bWaistBackOverlap = points.bWaistBack.shift(0, options.waistOverlap * circumference4)
+
+ points.bHipBack = points.bHipSide.shift(0, circumference4)
+ points.bHipBackOverlap = points.bHipBack.shift(0, options.waistOverlap * circumference4)
+ points.bLegBack = points.bLegSide.shift(0, circumference4)
+ points.bLegBackOverlap = points.bLegBack.shift(0, options.waistOverlap * circumference4)
+
+ points.bWaistSideTemp = points.bWaistSide.shift(0, 2) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line.
+
+ const fPaths = new Path()
+ .move(points.fWaistSide)
+ .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)
+ .split(points.fCutOutHip)
+
+ const bPaths = new Path()
+ .move(points.bWaistSide)
+ .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)
+ .split(points.bCutOutHip)
+
+ fPaths[0].hide()
+ fPaths[1].hide()
+ bPaths[0].hide()
+ bPaths[1].hide()
+
+ points.fCutOutHipCp1 = fPaths[1].ops[1].cp1.shiftFractionTowards(points.fCutOutHip, 1.25)
+ points.fCutOutHipCp2 = fPaths[1].ops[1].cp1.clone()
+ points.mHipCp1 = fPaths[1].ops[1].cp2.clone()
+ points.mHipCp2 = bPaths[1].ops[1].cp2.clone()
+ points.bCutOutHipCp1 = bPaths[1].ops[1].cp1.clone()
+ points.bCutOutHipCp2 = bPaths[1].ops[1].cp1.shiftFractionTowards(points.bCutOutHip, 1.25)
+
+ paths.frontBottomCutOut = new Path()
+ .move(points.mHip)
+ .curve(points.mHipCp1, points.fCutOutHipCp2, points.fCutOutHip)
+ .hide()
+ paths.backBottomCutOut = new Path()
+ .move(points.bCutOutHip)
+ .curve(points.bCutOutHipCp1, points.mHipCp2, points.mHip)
+ .hide()
+
+ paths.frontTopCutOut = new Path()
+ .move(points.fCutOutHip)
+ .curve(points.fCutOutHipCp1, points.fWaistAdjusted, points.fWaistAdjusted)
+ .hide()
+ paths.backTopCutOut = new Path()
+ .move(points.bWaistAdjusted)
+ .curve(points.bWaistAdjusted, points.bCutOutHipCp2, points.bCutOutHip)
+ .hide()
+
+ points.fWaistSideHem = paths.frontTopCutOut.reverse().shiftAlong(waistBand)
+ points.fWaistSideSeam = paths.frontTopCutOut.reverse().shiftAlong(waistBand * 2)
+ points.fWaistSide = points.fWaistSideSeam.flipY(points.fWaistSideHem)
+ points.bWaistSideHem = paths.backTopCutOut.shiftAlong(waistBand)
+ points.bWaistSideSeam = paths.backTopCutOut.shiftAlong(waistBand * 2)
+ points.bWaistSide = points.bWaistSideSeam.flipY(points.bWaistSideHem)
+
+ points.fWaistFrontOverlapHem = points.fWaistFrontOverlap.shift(270, waistBand)
+ points.bWaistBackHem = points.bWaistBack.shift(270, waistBand)
+ points.bWaistBackOverlapHem = points.bWaistBackOverlap.shift(270, waistBand)
+ points.fWaistFrontOverlapSeam = points.fWaistFrontOverlap.shift(270, waistBand * 2)
+ points.bWaistBackSeam = points.bWaistBack.shift(270, waistBand * 2)
+ points.bWaistBackOverlapSeam = points.bWaistBackOverlap.shift(270, waistBand * 2)
+ points.fWaistSideCp2 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp2.clone()
+
+ points.fWaistSideCp2 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp2.clone()
+ points.fWaistHipCp1 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp1.clone()
+ points.bWaistSideCp1 = paths.backTopCutOut.split(points.bWaistSideSeam)[1].ops[1].cp1.clone()
+ points.bWaistHipCp2 = paths.backTopCutOut.split(points.bWaistSideSeam)[1].ops[1].cp2.clone()
+
+ if (separateWaistband) {
+ points.mWaist1 = new Point(points.mWaist.x, points.fWaistSideSeam.y)
+ // points.mWaist = new Point(points.mWaist.x, points.fWaistSideSeam.y)
+ } else {
+ points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y)
+ }
+ if (separateWaistband) {
+ points.mWaist2 = new Point(points.mWaist.x, points.bWaistSideSeam.y)
+ } else {
+ points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y)
+ }
+
+ paths.frontTopCutOut = new Path()
+ .move(points.fCutOutHip)
+ .curve(points.fCutOutHipCp1, points.fWaistSideCp2, points.fWaistSideSeam)
+ .hide()
+ if (false == separateWaistband) {
+ paths.frontTopCutOut.line(points.fWaistSideHem)
+ paths.frontTopCutOut.line(points.fWaistSide)
+ }
+ if (false == separateWaistband) {
+ paths.backTopCutOut = new Path()
+ .move(points.bWaistSide)
+ .line(points.bWaistSideHem)
+ .line(points.bWaistSideSeam)
+ } else {
+ paths.backTopCutOut = new Path().move(points.bWaistSideSeam)
+ }
+ paths.backTopCutOut.curve(points.bWaistSideCp1, points.bCutOutHipCp2, points.bCutOutHip).hide()
+
+ paths.cutout = paths.backTopCutOut
+ .join(paths.backBottomCutOut)
+ .join(paths.frontBottomCutOut)
+ .join(paths.frontTopCutOut)
+ .hide()
+
+ paths.waistBack = new Path()
+ .move(separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap)
+ .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBack)
+ .line(separateWaistband ? points.bWaistSideSeam : points.bWaistSide)
+ .hide()
+ paths.waistFront = new Path()
+ .move(separateWaistband ? points.fWaistSideSeam : points.fWaistSide)
+ .line(separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap)
+ .hide()
+ paths.front = new Path()
+ .move(separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap)
+ .line(points.fHipFrontOverlap)
+ .line(points.fLegFrontOverlap)
+ .hide()
+ paths.back = new Path()
+ .move(points.bLegBackOverlap)
+ .line(points.bHipBackOverlap)
+ .line(separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap)
+ .hide()
+ paths.leg = new Path().move(points.fLegFrontOverlap).line(points.bLegBackOverlap).hide()
+
+ paths.seam = paths.waistFront
+ .join(paths.front)
+ .join(paths.leg)
+ .join(paths.back)
+ .join(paths.waistBack)
+ .join(paths.cutout)
+ .close()
+ .addClass('fabric')
+ .hide()
+
+ if (options.frontPocket) {
+ points.frontPocketTop = points.fWaistSideSeam
+ .shift(
+ 270,
+ options.frontPocketVerticalOffset * measurements.crotchDepth +
+ waistBand * (separateWaistband ? 1 : 2)
+ )
+ .shift(180, options.frontPocketHorizontalOffset * measurements.seat)
+
+ points.frontPocketTop2 = points.frontPocketTop.shift(340, frontPocketHeight)
+ points.frontPocketBottom = points.frontPocketTop.shift(
+ 250,
+ frontPocketSize
+ // options.frontPocketSize * measurements.crotchDepth
+ )
+ points.frontPocketBottom2 = points.frontPocketBottom.shift(340, frontPocketHeight)
+
+ paths.frontPocket = new Path()
+ .move(points.frontPocketTop)
+ .line(points.frontPocketBottom)
+ .line(points.frontPocketBottom2)
+ .line(points.frontPocketTop2)
+ .close()
+ .addClass('fabric')
+ .hide()
+
+ points.frontPocketSeam = utils.beamsIntersect(
+ points.frontPocketBottom,
+ points.frontPocketTop,
+ points.fWaistSideSeam,
+ points.fWaistFrontOverlapSeam
+ )
+
+ const frontPocketExtraDepth = points.frontPocketTop.dist(points.frontPocketSeam)
+
+ points.frontPocketTopLeft = points.frontPocketSeam.shiftTowards(
+ points.fWaistFrontOverlapSeam,
+ frontPocketHeight
+ )
+ points.frontPocketTopRight = points.frontPocketTopLeft.shift(0, pocketDepth * (1 / 3))
+
+ points.frontPocketBottomRight = points.frontPocketTopRight.shift(
+ 270,
+ pocketDepth + frontPocketExtraDepth
+ )
+ points.frontPocketBottomLeft = points.frontPocketTopLeft.shift(
+ 250,
+ pocketDepth * (5 / 6) + frontPocketExtraDepth
+ )
+
+ points.frontPocketBottomRightCP = points.frontPocketBottomRight.shift(
+ 180,
+ pocketDepth * (1 / 6)
+ )
+ points.frontPocketBottomLeftCP = points.frontPocketBottomLeft.shift(
+ 315,
+ pocketDepth * (1 / 4)
+ )
+
+ paths.frontPocketSeamSA = new Path()
+ .move(points.frontPocketTopRight)
+ .line(points.frontPocketTopLeft)
+ .line(points.frontPocketBottomLeft)
+ .curve(
+ points.frontPocketBottomLeftCP,
+ points.frontPocketBottomRightCP,
+ points.frontPocketBottomRight
+ )
+ .hide()
+ paths.frontPocketSeam = new Path()
+ .move(points.frontPocketBottomRight)
+ .line(points.frontPocketTopRight)
+ .join(paths.frontPocketSeamSA)
+ .close()
+ .addClass('dotted mark')
+ .hide()
+ }
+
+ if (options.backPocket) {
+ points.backPocketRight = points.bWaistBack
+ .shiftTowards(points.bWaistSide, options.backPocketHorizontalOffset * measurements.seat)
+ .shift(
+ 270,
+ options.backPocketVerticalOffset * measurements.crotchDepth +
+ waistBand * (separateWaistband ? 1 : 2)
+ )
+ points.backPocketLeft = points.bWaistBack
+ .shiftTowards(
+ points.bWaistSide,
+ options.backPocketHorizontalOffset * measurements.seat +
+ options.backPocketSize * measurements.crotchDepth
+ )
+ .shift(
+ 270,
+ options.backPocketVerticalOffset * measurements.crotchDepth +
+ waistBand * (separateWaistband ? 1 : 2)
+ )
+ points.backPocketRight2 = points.backPocketRight.shift(
+ points.backPocketRight.angle(points.backPocketLeft) + 90,
+ 12
+ )
+ points.backPocketLeft2 = points.backPocketLeft.shift(
+ points.backPocketLeft.angle(points.backPocketRight) - 90,
+ 12
+ )
+
+ paths.backPocket = new Path()
+ .move(points.backPocketLeft)
+ .line(points.backPocketLeft2)
+ .line(points.backPocketRight2)
+ .line(points.backPocketRight)
+ .close()
+ .addClass('fabric')
+ .hide()
+ }
+
+ return part.hide()
+ },
}
diff --git a/designs/waralee/src/pocket.mjs b/designs/waralee/src/pocket.mjs
index d797eaf5eea..3fe4316d548 100644
--- a/designs/waralee/src/pocket.mjs
+++ b/designs/waralee/src/pocket.mjs
@@ -1,92 +1,81 @@
+import { cbqc } from '@freesewing/core'
import { pantsProto } from './pantsproto.mjs'
-function waraleePocket({
- options,
- measurements,
- Point,
- Path,
- points,
- paths,
- Snippet,
- snippets,
- complete,
- sa,
- paperless,
- macro,
- part,
-}) {
- if (false == options.frontPocket) {
- return part
- }
+export const pocket = {
+ name: 'waralee.pocket',
+ from: pantsProto,
+ draft: ({ options, Point, Path, points, paths, Snippet, snippets, sa, macro, store, part }) => {
+ if (false == options.frontPocket) {
+ return part.hide()
+ }
- const c = 0.55191502449351
+ const frontPocketSize = store.get('frontPocketSize')
- let pocketDepth =
- (measurements.crotchDepth - measurements.waistToHips) * options.frontPocketDepthFactor
- let frontPocketSize =
- options.frontPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/
+ if ('welt' != options.frontPocketStyle) {
+ points.topLeft = new Point(0, 0)
+ points.topRight = points.topLeft.shift(0, frontPocketSize)
+ points.bottomLeft = points.topLeft.shift(270, frontPocketSize * 1.5)
+ points.bottomRight = points.topRight.shift(270, frontPocketSize * 1.5)
- if ('welt' == options.frontPocketStyle) {
- points.topLeft = new Point(0, 0)
- points.bottomLeft = points.topLeft.shift(270, pocketDepth)
-
- points.topRight = points.topLeft.shift(0, pocketDepth * (1 / 3))
- points.bottomRight = points.topRight.shift(290, pocketDepth * (5 / 6))
-
- points.bottomLeftCP = points.bottomLeft.shift(0, pocketDepth * (1 / 6))
- points.bottomRightCP = points.bottomRight.shift(225, pocketDepth * (1 / 4))
-
- paths.seam = new Path()
- .move(points.topLeft)
- .line(points.bottomLeft)
- .curve(points.bottomLeftCP, points.bottomRightCP, points.bottomRight)
- .line(points.topRight)
- .line(points.topLeft)
- .close()
- .attr('class', 'fabric')
- } else {
- points.topLeft = new Point(0, 0)
- points.topRight = points.topLeft.shift(0, frontPocketSize)
- points.bottomLeft = points.topLeft.shift(270, frontPocketSize * 1.5)
- points.bottomRight = points.topRight.shift(270, frontPocketSize * 1.5)
- points.bottomLeftCornerUp = points.bottomLeft.shift(90, frontPocketSize / 4)
- points.bottomLeftCornerUpCp1 = points.bottomLeftCornerUp.shift(270, (frontPocketSize / 4) * c)
- points.bottomLeftCornerOver = points.bottomLeft.shift(0, frontPocketSize / 4)
- points.bottomLeftCornerOverCp2 = points.bottomLeftCornerOver.shift(
- 180,
- (frontPocketSize / 4) * c
- )
- points.bottomRightCornerUp = points.bottomRight.shift(90, frontPocketSize / 4)
- points.bottomRightCornerUpCp2 = points.bottomRightCornerUp.shift(270, (frontPocketSize / 4) * c)
- points.bottomRightCornerOver = points.bottomRight.shift(180, frontPocketSize / 4)
- points.bottomRightCornerOverCp1 = points.bottomRightCornerOver.shift(
- 0,
- (frontPocketSize / 4) * c
- )
-
- paths.seam = new Path()
- .move(points.topLeft)
- .line(points.bottomLeftCornerUp)
- .curve(
- points.bottomLeftCornerUpCp1,
- points.bottomLeftCornerOverCp2,
- points.bottomLeftCornerOver
+ points.bottomLeftCornerUp = points.bottomLeft.shift(90, frontPocketSize / 4)
+ points.bottomLeftCornerUpCp1 = points.bottomLeftCornerUp.shift(
+ 270,
+ (frontPocketSize / 4) * cbqc
)
- .line(points.bottomRightCornerOver)
- .curve(
- points.bottomRightCornerOverCp1,
- points.bottomRightCornerUpCp2,
- points.bottomRightCornerUp
+ points.bottomLeftCornerOver = points.bottomLeft.shift(0, frontPocketSize / 4)
+ points.bottomLeftCornerOverCp2 = points.bottomLeftCornerOver.shift(
+ 180,
+ (frontPocketSize / 4) * cbqc
+ )
+ points.bottomRightCornerUp = points.bottomRight.shift(90, frontPocketSize / 4)
+ points.bottomRightCornerUpCp2 = points.bottomRightCornerUp.shift(
+ 270,
+ (frontPocketSize / 4) * cbqc
+ )
+ points.bottomRightCornerOver = points.bottomRight.shift(180, frontPocketSize / 4)
+ points.bottomRightCornerOverCp1 = points.bottomRightCornerOver.shift(
+ 0,
+ (frontPocketSize / 4) * cbqc
)
- .line(points.topRight)
- .line(points.topLeft)
- .close()
- .attr('class', 'fabric')
- }
- // Complete?
- if (complete) {
- points.title = points.topLeft.shift(270, 75).shift(0, 50)
+ paths.seam = new Path()
+ .move(points.topLeft)
+ .line(points.bottomLeftCornerUp)
+ .curve(
+ points.bottomLeftCornerUpCp1,
+ points.bottomLeftCornerOverCp2,
+ points.bottomLeftCornerOver
+ )
+ .line(points.bottomRightCornerOver)
+ .curve(
+ points.bottomRightCornerOverCp1,
+ points.bottomRightCornerUpCp2,
+ points.bottomRightCornerUp
+ )
+ .line(points.topRight)
+ .line(points.topLeft)
+ .close()
+ .addClass('fabric')
+
+ paths.sa = paths.seam.offset(sa).addClass('fabric sa')
+ } else {
+ paths.frontPocketSeam.unhide().setClass('fabric')
+
+ if (sa) {
+ paths.sa = paths.frontPocketSeamSA.offset(sa).close().addClass('fabric sa')
+ }
+
+ paths.frontPocket.unhide().setClass('mark')
+
+ macro('cutonfold', {
+ from: points.frontPocketBottomRight,
+ to: points.frontPocketTopRight,
+ })
+ }
+
+ store.cutlist.addCut({ cut: 2, from: 'lining' })
+
+ points.title = points.frontPocketTopLeft.shift(270, 75).shift(0, 50)
macro('title', {
nr: 3,
at: points.title,
@@ -95,71 +84,38 @@ function waraleePocket({
points.logo = points.title.shift(270, 75)
snippets.logo = new Snippet('logo', points.logo)
- points.text = points.logo
- .shift(-90, 25)
- .attr('data-text', 'Waralee')
- .attr('data-text-class', 'center')
+ points.text = points.logo.shift(-90, 25).addText('Waralee', 'center')
- if ('welt' == options.frontPocketStyle) {
- macro('cutonfold', {
- from: points.topLeft,
- to: points.bottomLeft,
- margin: 5,
- offset: 10,
- })
- }
- if (sa) {
- if ('welt' == options.frontPocketStyle) {
- paths.sa = new Path()
- .move(points.bottomLeft)
- .join(
- new Path()
- .move(points.bottomLeft)
- .curve(points.bottomLeftCP, points.bottomRightCP, points.bottomRight)
- .line(points.topRight)
- .line(points.topLeft)
- .offset(sa)
- )
- .line(points.topLeft)
- .attr('class', 'fabric sa')
- } else {
- paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
- }
- }
- }
-
- // Paperless?
- if (paperless) {
if ('welt' == options.frontPocketStyle) {
macro('hd', {
id: 1,
- from: points.topLeft,
- to: points.topRight,
- y: points.topLeft.y + 15,
+ from: points.frontPocketTopLeft,
+ to: points.frontPocketTopRight,
+ y: points.frontPocketTopLeft.y - sa - 15,
})
macro('hd', {
id: 2,
- from: points.bottomLeft,
- to: points.bottomRight,
- y: points.bottomRight.y,
+ from: points.frontPocketBottomLeft,
+ to: points.frontPocketBottomRight,
+ y: points.frontPocketBottomRight.y + sa + 15,
})
macro('vd', {
id: 3,
- from: points.topLeft,
- to: points.bottomLeft,
- x: points.topLeft.x + 15,
+ from: points.frontPocketBottomLeft,
+ to: points.frontPocketTopLeft,
+ x: points.frontPocketBottomLeft.x - sa - 15,
})
macro('vd', {
id: 4,
- from: points.topRight,
- to: points.bottomRight,
- x: points.bottomRight.x,
+ from: points.frontPocketTopRight,
+ to: points.frontPocketBottomRight,
+ x: points.frontPocketBottomRight.x + 15,
})
macro('vd', {
id: 5,
- from: points.bottomRight,
- to: points.bottomLeft,
- x: points.bottomRight.x,
+ from: points.frontPocketBottomRight,
+ to: points.frontPocketBottomLeft,
+ x: points.frontPocketBottomLeft.x - sa - 15,
})
} else {
macro('hd', {
@@ -170,18 +126,12 @@ function waraleePocket({
})
macro('vd', {
id: 7,
- from: points.topLeft,
- to: points.bottomLeftCornerOver,
+ from: points.bottomLeftCornerOver,
+ to: points.topLeft,
x: points.bottomLeftCornerOver.x,
})
}
- }
- return part
-}
-
-export const pocket = {
- name: 'waralee.pocket',
- after: pantsProto,
- draft: waraleePocket,
+ return part
+ },
}
diff --git a/designs/waralee/src/waistband.mjs b/designs/waralee/src/waistband.mjs
index 21ed4753781..5b0dc0237fd 100644
--- a/designs/waralee/src/waistband.mjs
+++ b/designs/waralee/src/waistband.mjs
@@ -11,182 +11,122 @@ function waraleeWaistband(
paths,
Snippet,
snippets,
- complete,
- paperless,
macro,
sa,
store,
+ expand,
+ units,
part,
}
) {
- const WidthReduction = 6
- let waistBand = store.get('waistBand')
- let waistBandLengthFront = points.fWaistSideHem.dist(points.fWaistFrontOverlapHem)
- let waistBandLengthBack =
+ const waistBand = store.get('waistBand')
+ const waistBandLengthFront = points.fWaistSideHem.dist(points.fWaistFrontOverlapHem)
+ const waistBandLengthBack =
points.bWaistSideHem.dist(points.bWaistBackHem) +
points.bWaistBackHem.dist(points.bWaistBackOverlapHem)
- let strapLength = measurements.waist + measurements.crotchDepth * 1.75
+ let waistBandLength = measurements.waist + measurements.crotchDepth * 1.75
let partNr = 0
switch (type) {
case 'waistBandFront':
if (false == options.separateWaistband && 'welt' == options.frontPocketStyle) {
- return part
+ return part.hide()
}
partNr = 9
- points.tr = points.fWaistSide
- points.mr = points.fWaistSideHem
- points.br = points.fWaistSideSeam
- points.ml = points.fWaistSideHem.shift(180, (waistBandLengthFront / WidthReduction) * 2)
- points.tl = points.ml.shift(90, waistBand)
- points.bl = points.ml.shift(270, waistBand)
-
- macro('hd', {
- from: points.ml,
- to: points.mr,
- y: points.mr.y,
- text: part.units(waistBandLengthFront),
- })
-
+ waistBandLength = waistBandLengthFront * 2
break
case 'waistBandBack':
if (false == options.separateWaistband && 'welt' == options.frontPocketStyle) {
- return part
+ return part.hide()
}
partNr = 10
- points.tl = points.bWaistSide
- points.ml = points.bWaistSideHem
- points.bl = points.bWaistSideSeam
- points.mr = points.bWaistSideHem.shift(0, (waistBandLengthBack / WidthReduction) * 2)
- points.tr = points.mr.shift(90, waistBand)
- points.br = points.mr.shift(270, waistBand)
-
- macro('hd', {
- from: points.ml,
- to: points.mr,
- y: points.mr.y,
- text: part.units(waistBandLengthBack),
- })
-
+ waistBandLength = waistBandLengthBack * 2
break
case 'strapFront':
partNr = 7
- strapLength -= waistBandLengthFront * 2
- strapLength += options.knotInFront ? measurements.waist / 2 : 0
-
- points.mr = new Point(0, 0)
- points.tr = points.mr.shift(90, waistBand)
- points.br = points.mr.shift(270, waistBand)
- points.ml = points.mr.shift(180, (waistBandLengthFront / WidthReduction) * 2)
- points.tl = points.ml.shift(90, waistBand)
- points.bl = points.ml.shift(270, waistBand)
-
- macro('hd', {
- from: points.ml,
- to: points.mr,
- y: points.mr.y,
- text: part.units(strapLength),
- })
-
+ waistBandLength -= waistBandLengthFront * 2
+ waistBandLength += options.knotInFront ? measurements.waist / 2 : 0
break
case 'strapBack':
partNr = 8
- strapLength -= waistBandLengthBack * 2
- strapLength += options.knotInFront ? 0 : measurements.waist / 2
-
- points.mr = new Point(0, 0)
- points.tr = points.mr.shift(90, waistBand)
- points.br = points.mr.shift(270, waistBand)
- points.ml = points.mr.shift(180, (waistBandLengthFront / WidthReduction) * 2)
- points.tl = points.ml.shift(90, waistBand)
- points.bl = points.ml.shift(270, waistBand)
-
- macro('hd', {
- from: points.ml,
- to: points.mr,
- y: points.mr.y,
- text: part.units(strapLength),
- })
-
+ waistBandLength -= waistBandLengthBack * 2
+ waistBandLength += options.knotInFront ? 0 : measurements.waist / 2
break
}
- points.zigzagTop = points.tr.shift(180, waistBandLengthFront / WidthReduction)
- points.zigzagTopR = points.zigzagTop.shift(0, waistBand / 8)
- points.zigzagTopT = points.zigzagTop.shift(90, waistBand / 4)
- points.zigzagTopL = points.zigzagTop.shift(180, waistBand / 8)
- points.zigzagTopB = points.zigzagTop.shift(270, waistBand / 4)
- points.zigzagBottom = points.br.shift(180, waistBandLengthFront / WidthReduction)
- points.zigzagBottomR = points.zigzagBottom.shift(0, waistBand / 8)
- points.zigzagBottomT = points.zigzagBottom.shift(90, waistBand / 4)
- points.zigzagBottomL = points.zigzagBottom.shift(180, waistBand / 8)
- points.zigzagBottomB = points.zigzagBottom.shift(270, waistBand / 4)
+ if (!expand) {
+ // Expand is off, do not draw the part but flag this to the user
+ store.flag.note({
+ msg: `waralee:cut` + type,
+ replace: {
+ width: units(waistBand * 2),
+ length: units(waistBandLength),
+ },
+ suggest: {
+ text: 'flag:show',
+ icon: 'expand',
+ update: {
+ settings: ['expand', 1],
+ },
+ },
+ })
+ // Also hint about expand
+ store.flag.preset('expand')
- paths.ZZtop = new Path()
- .move(points.zigzagTopR)
- .line(points.zigzagTopT)
- .line(points.zigzagTopB)
- .line(points.zigzagTopL)
- .attr('class', 'dotted')
- paths.ZZbottom = new Path()
- .move(points.zigzagBottomR)
- .line(points.zigzagBottomT)
- .line(points.zigzagBottomB)
- .line(points.zigzagBottomL)
- .attr('class', 'dotted')
- paths.right = new Path()
- .move(points.zigzagBottomR)
- .line(points.br)
- .line(points.mr)
- .line(points.tr)
- .line(points.zigzagTopR)
- paths.left = new Path()
- .move(points.zigzagBottomL)
- .line(points.bl)
- .line(points.ml)
- .line(points.tl)
- .line(points.zigzagTopL)
+ return part.hide()
+ }
+
+ store.cutlist.addCut({ cut: 1, from: 'fabric' })
+
+ points.tl = new Point(0, 0)
+ points.bl = new Point(0, waistBandLength)
+ points.tm = new Point(waistBand, 0)
+ points.bm = new Point(waistBand, waistBandLength)
+ points.tr = new Point(waistBand * 2, 0)
+ points.br = new Point(waistBand * 2, waistBandLength)
paths.seam = new Path()
.move(points.br)
- .line(points.mr)
.line(points.tr)
.line(points.tl)
- .line(points.ml)
.line(points.bl)
.line(points.br)
.close()
- .hide()
- // Complete?
- if (complete) {
- if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
+ paths.fold = new Path().move(points.tm).line(points.bm).addClass('fabric dotted').setText('fold')
- points.title = points.tl.shiftFractionTowards(points.br, 0.2).shift(270, 20)
- macro('title', {
- nr: partNr,
- at: points.title,
- title: type,
- prefix: 'front',
- scale: 0.4,
- })
+ if (sa) paths.sa = paths.seam.offset(sa).addClass('fabric sa')
- points.logo = points.tl.shiftFractionTowards(points.br, 0.8)
- snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.3)
- }
- // Paperless?
- if (paperless) {
- macro('vd', {
- id: 1,
- from: points.tr,
- to: points.br,
- x: points.br.x + sa + 10,
- })
- }
+ store.cutlist.addCut({ cut: 1, from: 'fabric' })
+
+ points.title = new Point(waistBand, waistBandLength * 0.2)
+ macro('title', {
+ nr: partNr,
+ at: points.title,
+ title: type,
+ scale: 0.4,
+ align: 'center',
+ })
+
+ points.logo = new Point(waistBand, waistBandLength * 0.4)
+ snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.3)
+
+ macro('hd', {
+ id: 'w',
+ from: points.tl,
+ to: points.tr,
+ y: points.tl.y - sa - 10,
+ })
+ macro('vd', {
+ id: 'h',
+ from: points.tr,
+ to: points.br,
+ x: points.br.x + sa + 10,
+ })
return part
}
diff --git a/markdown/org/docs/designs/gozer/cutting/en.md b/markdown/org/docs/designs/gozer/cutting/en.md
new file mode 100644
index 00000000000..1578525ee18
--- /dev/null
+++ b/markdown/org/docs/designs/gozer/cutting/en.md
@@ -0,0 +1,6 @@
+---
+title: "Gozer the ghost: Cutting Instructions"
+---
+
+- **Color 1; Traditionally white**
+ - Cut **1 Body**
diff --git a/markdown/org/docs/designs/gozer/en.md b/markdown/org/docs/designs/gozer/en.md
new file mode 100644
index 00000000000..092973a5b4d
--- /dev/null
+++ b/markdown/org/docs/designs/gozer/en.md
@@ -0,0 +1,6 @@
+---
+title: Gozer the ghost
+---
+
+
+
diff --git a/markdown/org/docs/designs/gozer/fabric/en.md b/markdown/org/docs/designs/gozer/fabric/en.md
new file mode 100644
index 00000000000..9d42741e68c
--- /dev/null
+++ b/markdown/org/docs/designs/gozer/fabric/en.md
@@ -0,0 +1,7 @@
+---
+title: "Gozer the ghost: Fabric Options"
+---
+
+## Main Fabric
+
+Traditionally, white sheets are used.
\ No newline at end of file
diff --git a/markdown/org/docs/designs/gozer/instructions/en.md b/markdown/org/docs/designs/gozer/instructions/en.md
new file mode 100644
index 00000000000..49538720737
--- /dev/null
+++ b/markdown/org/docs/designs/gozer/instructions/en.md
@@ -0,0 +1,15 @@
+---
+title: "Gozer the ghost: Sewing Instructions"
+---
+
+## Step 1: The eyes
+
+- Cut holes where marked.
+
+## Step 2: The body
+
+- Hem the body
+
+## Step 3: Enjoy!
+
+That's it, you are all done. Put it on and scare the neighborhood.
diff --git a/markdown/org/docs/designs/gozer/measurements/en.md b/markdown/org/docs/designs/gozer/measurements/en.md
new file mode 100644
index 00000000000..d8c916e168b
--- /dev/null
+++ b/markdown/org/docs/designs/gozer/measurements/en.md
@@ -0,0 +1,5 @@
+---
+title: "Gozer the ghost: Required Measurements"
+---
+
+
\ No newline at end of file
diff --git a/markdown/org/docs/designs/gozer/needs/en.md b/markdown/org/docs/designs/gozer/needs/en.md
new file mode 100644
index 00000000000..4babe41b631
--- /dev/null
+++ b/markdown/org/docs/designs/gozer/needs/en.md
@@ -0,0 +1,9 @@
+---
+title: "Gozer the ghost: What You Need"
+---
+
+To make Gozer, you will need the following:
+
+- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies)
+- About 1 bed sheet
+
diff --git a/markdown/org/docs/designs/gozer/notes/en.md b/markdown/org/docs/designs/gozer/notes/en.md
new file mode 100644
index 00000000000..5b00af821c8
--- /dev/null
+++ b/markdown/org/docs/designs/gozer/notes/en.md
@@ -0,0 +1,6 @@
+---
+title: "Gozer the ghost: Designer Notes"
+---
+
+The designer, nor FreeSewing, are liable for anything that follows the use of this pattern. You've been warned.
+
diff --git a/markdown/org/docs/designs/waralee/options/legshortening/de.md b/markdown/org/docs/designs/waralee/options/legshortening/de.md
deleted file mode 100644
index a58aa383273..00000000000
--- a/markdown/org/docs/designs/waralee/options/legshortening/de.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Verkürzung des Hosenbeins"
----
-
-Das bestimmt, wie lange die Hosen sein werden. Es ist ein Faktor der Inseam-Messung. Je größer der Wert, desto mehr wird von der Länge entfernt.
-
-## Effekt dieser Option auf das Schnittmuster
-
-
diff --git a/markdown/org/docs/designs/waralee/options/legshortening/en.md b/markdown/org/docs/designs/waralee/options/legshortening/en.md
deleted file mode 100644
index 9637ceb99ec..00000000000
--- a/markdown/org/docs/designs/waralee/options/legshortening/en.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Leg Shortening"
----
-
-This dictates how long the pants will be. It is a factor of the inseam measurement. The larger the value, the more that will be taken off the length.
-
-
-
-
diff --git a/markdown/org/docs/designs/waralee/options/legshortening/es.md b/markdown/org/docs/designs/waralee/options/legshortening/es.md
deleted file mode 100644
index cb3e67c3769..00000000000
--- a/markdown/org/docs/designs/waralee/options/legshortening/es.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Acortamiento de la pierna"
----
-
-Esto dicta cuánto tiempo durarán los pantalones. Se trata de un factor de medición de buques. Cuanto más grande sea el valor, más se quitará de la longitud.
-
-## Efecto de esta opción en el patrón
-
-
diff --git a/markdown/org/docs/designs/waralee/options/legshortening/fr.md b/markdown/org/docs/designs/waralee/options/legshortening/fr.md
deleted file mode 100644
index bc201aee7b4..00000000000
--- a/markdown/org/docs/designs/waralee/options/legshortening/fr.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Réduction des jambes"
----
-
-Cela dicte combien de temps le pantalon sera. C'est un facteur de la mesure de la couture. Plus la valeur est grande, plus elle sera retirée de la longueur.
-
-## Effet de cette option sur le motif
-
-
diff --git a/markdown/org/docs/designs/waralee/options/legshortening/nl.md b/markdown/org/docs/designs/waralee/options/legshortening/nl.md
deleted file mode 100644
index 86dfd4626db..00000000000
--- a/markdown/org/docs/designs/waralee/options/legshortening/nl.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Been Inkorten"
----
-
-Dit bepaalt hoe lang de broek zal zijn. Het is een factor van de binnenste meting. Hoe groter de waarde, des te meer zal de lengte worden afgenomen.
-
-## Effect van deze optie op het patroon
-
-
diff --git a/markdown/org/docs/designs/waralee/options/legshortening/uk.md b/markdown/org/docs/designs/waralee/options/legshortening/uk.md
deleted file mode 100644
index 1f20fcf7959..00000000000
--- a/markdown/org/docs/designs/waralee/options/legshortening/uk.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Довжина штанин"
----
-
-Від цього залежить, якої довжини будуть штани. Це фактор вимірювання швів. Чим більше значення, тим більше буде віднято від довжини.
-
-## Вплив цієї опції на шаблон
-
-
diff --git a/markdown/org/docs/designs/waralee/options/legsize/en.md b/markdown/org/docs/designs/waralee/options/legsize/en.md
new file mode 100644
index 00000000000..849a8993a4c
--- /dev/null
+++ b/markdown/org/docs/designs/waralee/options/legsize/en.md
@@ -0,0 +1,9 @@
+---
+title: "Leg Size"
+---
+
+This dictates how long the pants will be. It is a factor of the inseam measurement. The larger the value, the longer the pants.
+
+
+
+
diff --git a/markdown/org/showcase/breanna-dress-by-andrea-cretu/en.md b/markdown/org/showcase/breanna-dress-by-andrea-cretu/en.md
new file mode 100644
index 00000000000..d60d5eb7fae
--- /dev/null
+++ b/markdown/org/showcase/breanna-dress-by-andrea-cretu/en.md
@@ -0,0 +1,17 @@
+---
+title: "Breanna dress by Andrea Cretu"
+caption: "Andrea made this lovely dress based on the Breanna block"
+date: 20231017
+intro: "Andrea added a circle skirt to the Breanna block to make this charming dress."
+designs: ["breanna"]
+maker: Natalia
+---
+
+Andrea added a circle skirt to the Breanna block to make this charming dress. We love the choice of fabric and buttons!
+
+Andrea shared these helpful details:
+
+> Made a dress based on the Breanna body block, with a circle skirt. Next iteration I'll scoop out the armholes and neck and add length to the bottom, so the skirt starts a little lower. Also will make the darts end earlier on the bust and later on the back.
+
+Andrea is a talented creator, and the owner at [Yarnandy.com](Yarnandy.com).
+
diff --git a/markdown/org/showcase/four-versions-of-otis-and-a-bonus-bob/en.md b/markdown/org/showcase/four-versions-of-otis-and-a-bonus-bob/en.md
new file mode 100644
index 00000000000..771073a3a20
--- /dev/null
+++ b/markdown/org/showcase/four-versions-of-otis-and-a-bonus-bob/en.md
@@ -0,0 +1,23 @@
+---
+title: "Four versions of Otis and a bonus Bob"
+caption: "An Otis baby romper and Bob bib"
+date: 20231017
+intro: "Wouter made four versions of Otis for newborn Otis, and a Bob to complete the ensemble."
+designs: ["otis", "bob"]
+maker: Natalia
+---
+
+Wouter, the designer, made these:
+
+> Four versions of otis. One with long sleeves, and one that is reversible (don’t try this; figuring out how seams go together and in which sequence causes headaches).
+
+We are head over heels for his adorable fabric choices. The cute baby doesn't hurt.
+
+
+
+
+
+
+
+
+
diff --git a/markdown/org/showcase/simone-by-gaelle/en.md b/markdown/org/showcase/simone-by-gaelle/en.md
new file mode 100644
index 00000000000..366b654f25b
--- /dev/null
+++ b/markdown/org/showcase/simone-by-gaelle/en.md
@@ -0,0 +1,19 @@
+---
+title: "Simone by Gaëlle"
+caption: "A lovely Simone shirt with beautiful details"
+date: 20231017
+intro: "This Simone shirt features beautiful details, including coordinated buttons and custom labels."
+designs: ["simone"]
+maker: Natalia
+---
+
+The talented Gaëlle shared this Simone shirt. Don't miss the the detail photos.
+
+
+
+
+
+
+
+
+
diff --git a/sites/backend/package.json b/sites/backend/package.json
index be6f9c86d32..b32f363d2a4 100644
--- a/sites/backend/package.json
+++ b/sites/backend/package.json
@@ -28,7 +28,7 @@
},
"peerDependencies": {},
"dependencies": {
- "@aws-sdk/client-sesv2": "3.428.0",
+ "@aws-sdk/client-sesv2": "3.430.0",
"@prisma/client": "5.4.2",
"bcryptjs": "2.4.3",
"cors": "2.8.5",
@@ -49,7 +49,7 @@
"devDependencies": {
"chai": "4.3.10",
"chai-http": "4.4.0",
- "esbuild": "0.19.4",
+ "esbuild": "0.19.5",
"mocha": "10.2.0",
"mocha-steps": "1.3.0",
"nodemon": "3.0.1",
diff --git a/sites/dev/package.json b/sites/dev/package.json
index 04c5aea7787..41d5214e5a3 100644
--- a/sites/dev/package.json
+++ b/sites/dev/package.json
@@ -35,7 +35,7 @@
"@next/bundle-analyzer": "13.5.4",
"@tailwindcss/typography": "0.5.9",
"algoliasearch": "4.20.0",
- "daisyui": "3.9.2",
+ "daisyui": "3.9.3",
"lodash.get": "4.4.2",
"lodash.orderby": "4.6.0",
"lodash.set": "4.3.2",
diff --git a/sites/lab/hooks/use-design.mjs b/sites/lab/hooks/use-design.mjs
index a458be92ca1..7d120a9c25f 100644
--- a/sites/lab/hooks/use-design.mjs
+++ b/sites/lab/hooks/use-design.mjs
@@ -20,6 +20,7 @@ import { Cornelius as cornelius } from '@freesewing/cornelius'
import { Diana as diana } from '@freesewing/diana'
import { Florence as florence } from '@freesewing/florence'
import { Florent as florent } from '@freesewing/florent'
+import { Gozer as gozer } from '@freesewing/gozer'
import { Hi as hi } from '@freesewing/hi'
import { Holmes as holmes } from '@freesewing/holmes'
import { Hortensia as hortensia } from '@freesewing/hortensia'
@@ -73,6 +74,7 @@ const designs = {
diana,
florence,
florent,
+ gozer,
hi,
holmes,
hortensia,
diff --git a/sites/lab/package.json b/sites/lab/package.json
index 21bef5d73ac..59863c55cf9 100644
--- a/sites/lab/package.json
+++ b/sites/lab/package.json
@@ -35,13 +35,13 @@
"d3-dispatch": "3.0.1",
"d3-drag": "3.0.0",
"d3-selection": "3.0.0",
- "daisyui": "3.9.2",
+ "daisyui": "3.9.3",
"i18next": "23.5.1",
"lodash.get": "4.4.2",
"lodash.orderby": "4.6.0",
"lodash.set": "4.3.2",
- "next": "13.5.4",
- "next-i18next": "14.0.0",
+ "next": "13.5.5",
+ "next-i18next": "14.0.3",
"ora": "7.0.1",
"react": "18.2.0",
"react-copy-to-clipboard": "5.1.0",
diff --git a/sites/lab/pages/account/patterns/gozer/[id]/edit.mjs b/sites/lab/pages/account/patterns/gozer/[id]/edit.mjs
new file mode 100644
index 00000000000..dd37081ced8
--- /dev/null
+++ b/sites/lab/pages/account/patterns/gozer/[id]/edit.mjs
@@ -0,0 +1,98 @@
+/*
+ * This page is auto-generated. Do not edit it by hand.
+ */
+import { Gozer } from 'designs/gozer/src/index.mjs'
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Hooks
+import { useState, useEffect, useContext } from 'react'
+import { useTranslation } from 'next-i18next'
+import { useBackend } from 'shared/hooks/use-backend.mjs'
+// Context
+import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs'
+import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs'
+import { Loading } from 'shared/components/spinner.mjs'
+
+// Translation namespaces used on this page
+const ns = nsMerge('gozer', wbNs, pageNs)
+
+const EditDesignComponent = ({ id, design, Design, settings, docs }) => (
+
+)
+
+const EditGozerPage = ({ page, docs, id }) => {
+ const { setLoadingStatus } = useContext(LoadingStatusContext)
+ const backend = useBackend()
+ const { t } = useTranslation(ns)
+
+ const [pattern, setPattern] = useState(false)
+
+ useEffect(() => {
+ const getPattern = async () => {
+ setLoadingStatus([true, t('backendLoadingStarted')])
+ let result
+ try {
+ result = await backend.getPattern(id)
+ if (result.success) {
+ setPattern(result.data.pattern)
+ setLoadingStatus([true, 'backendLoadingCompleted', true, true])
+ } else setLoadingStatus([true, 'backendError', true, false])
+ } catch (err) {
+ console.log(err)
+ setLoadingStatus([true, 'backendError', true, false])
+ }
+ }
+ if (id) getPattern()
+ }, [id])
+
+ return (
+ // prettier-ignore
+
+ {pattern ? (
+
+ ) : (
+
+
{t('account:oneMomentPLease')}
+
+
+ )}
+
+ )
+}
+
+export default EditGozerPage
+
+export async function getStaticProps({ locale, params }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ id: params.id,
+ page: {
+ locale,
+ path: ['account', 'patterns', 'gozer', params.id, 'edit'],
+ title: 'Gozer',
+ },
+ },
+ }
+}
+
+/*
+ * getStaticPaths() is used to specify for which routes (think URLs)
+ * this page should be used to generate the result.
+ */
+export async function getStaticPaths() {
+ return {
+ paths: [],
+ fallback: 'blocking',
+ }
+}
diff --git a/sites/lab/pages/account/patterns/skully/[id]/edit.mjs b/sites/lab/pages/account/patterns/skully/[id]/edit.mjs
new file mode 100644
index 00000000000..c2e21bc495d
--- /dev/null
+++ b/sites/lab/pages/account/patterns/skully/[id]/edit.mjs
@@ -0,0 +1,98 @@
+/*
+ * This page is auto-generated. Do not edit it by hand.
+ */
+import { Skully } from 'designs/skully/src/index.mjs'
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Hooks
+import { useState, useEffect, useContext } from 'react'
+import { useTranslation } from 'next-i18next'
+import { useBackend } from 'shared/hooks/use-backend.mjs'
+// Context
+import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs'
+import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs'
+import { Loading } from 'shared/components/spinner.mjs'
+
+// Translation namespaces used on this page
+const ns = nsMerge('skully', wbNs, pageNs)
+
+const EditDesignComponent = ({ id, design, Design, settings, docs }) => (
+
+)
+
+const EditSkullyPage = ({ page, docs, id }) => {
+ const { setLoadingStatus } = useContext(LoadingStatusContext)
+ const backend = useBackend()
+ const { t } = useTranslation(ns)
+
+ const [pattern, setPattern] = useState(false)
+
+ useEffect(() => {
+ const getPattern = async () => {
+ setLoadingStatus([true, t('backendLoadingStarted')])
+ let result
+ try {
+ result = await backend.getPattern(id)
+ if (result.success) {
+ setPattern(result.data.pattern)
+ setLoadingStatus([true, 'backendLoadingCompleted', true, true])
+ } else setLoadingStatus([true, 'backendError', true, false])
+ } catch (err) {
+ console.log(err)
+ setLoadingStatus([true, 'backendError', true, false])
+ }
+ }
+ if (id) getPattern()
+ }, [id])
+
+ return (
+ // prettier-ignore
+
+ {pattern ? (
+
+ ) : (
+
+
{t('account:oneMomentPLease')}
+
+
+ )}
+
+ )
+}
+
+export default EditSkullyPage
+
+export async function getStaticProps({ locale, params }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ id: params.id,
+ page: {
+ locale,
+ path: ['account', 'patterns', 'skully', params.id, 'edit'],
+ title: 'Skully',
+ },
+ },
+ }
+}
+
+/*
+ * getStaticPaths() is used to specify for which routes (think URLs)
+ * this page should be used to generate the result.
+ */
+export async function getStaticPaths() {
+ return {
+ paths: [],
+ fallback: 'blocking',
+ }
+}
diff --git a/sites/lab/pages/new/gozer.mjs b/sites/lab/pages/new/gozer.mjs
new file mode 100644
index 00000000000..617cd503546
--- /dev/null
+++ b/sites/lab/pages/new/gozer.mjs
@@ -0,0 +1,41 @@
+/*
+ * This page is auto-generated. Do not edit it by hand.
+ */
+import { Gozer } from 'designs/gozer/src/index.mjs'
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs'
+import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs'
+
+// Translation namespaces used on this page
+const ns = nsMerge('gozer', wbNs, pageNs)
+
+const NewGozerPage = ({ page, docs }) => (
+
+
+
+)
+
+export default NewGozerPage
+
+export async function getStaticProps({ locale }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ page: {
+ locale,
+ path: ['new', 'gozer'],
+ title: 'Gozer',
+ },
+ },
+ }
+}
diff --git a/sites/lab/pages/new/skully.mjs b/sites/lab/pages/new/skully.mjs
new file mode 100644
index 00000000000..a9168a7d1fe
--- /dev/null
+++ b/sites/lab/pages/new/skully.mjs
@@ -0,0 +1,41 @@
+/*
+ * This page is auto-generated. Do not edit it by hand.
+ */
+import { Skully } from 'designs/skully/src/index.mjs'
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs'
+import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs'
+
+// Translation namespaces used on this page
+const ns = nsMerge('skully', wbNs, pageNs)
+
+const NewSkullyPage = ({ page, docs }) => (
+
+
+
+)
+
+export default NewSkullyPage
+
+export async function getStaticProps({ locale }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ page: {
+ locale,
+ path: ['new', 'skully'],
+ title: 'Skully',
+ },
+ },
+ }
+}
diff --git a/sites/org/hooks/use-design.mjs b/sites/org/hooks/use-design.mjs
index 7a974cd89c3..21cc71e204b 100644
--- a/sites/org/hooks/use-design.mjs
+++ b/sites/org/hooks/use-design.mjs
@@ -20,6 +20,7 @@ import { Cornelius as cornelius } from '@freesewing/cornelius'
import { Diana as diana } from '@freesewing/diana'
import { Florence as florence } from '@freesewing/florence'
import { Florent as florent } from '@freesewing/florent'
+import { Gozer as gozer } from '@freesewing/gozer'
import { Hi as hi } from '@freesewing/hi'
import { Holmes as holmes } from '@freesewing/holmes'
import { Hortensia as hortensia } from '@freesewing/hortensia'
@@ -70,6 +71,7 @@ const designs = {
diana,
florence,
florent,
+ gozer,
hi,
holmes,
hortensia,
diff --git a/sites/org/package.json b/sites/org/package.json
index 5a67dc3af37..3dc944ea9d6 100644
--- a/sites/org/package.json
+++ b/sites/org/package.json
@@ -36,8 +36,8 @@
"@tailwindcss/typography": "0.5.9",
"algoliasearch": "4.20.0",
"react-copy-to-clipboard": "5.1.0",
- "daisyui": "3.9.2",
- "echarts": "5.4.2",
+ "daisyui": "3.9.3",
+ "echarts": "5.4.3",
"echarts-for-react": "3.0.2",
"jotai": "2.4.3",
"jotai-location": "0.5.1",
diff --git a/sites/org/pages/account/patterns/gozer/[id]/edit.mjs b/sites/org/pages/account/patterns/gozer/[id]/edit.mjs
new file mode 100644
index 00000000000..dd37081ced8
--- /dev/null
+++ b/sites/org/pages/account/patterns/gozer/[id]/edit.mjs
@@ -0,0 +1,98 @@
+/*
+ * This page is auto-generated. Do not edit it by hand.
+ */
+import { Gozer } from 'designs/gozer/src/index.mjs'
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Hooks
+import { useState, useEffect, useContext } from 'react'
+import { useTranslation } from 'next-i18next'
+import { useBackend } from 'shared/hooks/use-backend.mjs'
+// Context
+import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs'
+import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs'
+import { Loading } from 'shared/components/spinner.mjs'
+
+// Translation namespaces used on this page
+const ns = nsMerge('gozer', wbNs, pageNs)
+
+const EditDesignComponent = ({ id, design, Design, settings, docs }) => (
+
+)
+
+const EditGozerPage = ({ page, docs, id }) => {
+ const { setLoadingStatus } = useContext(LoadingStatusContext)
+ const backend = useBackend()
+ const { t } = useTranslation(ns)
+
+ const [pattern, setPattern] = useState(false)
+
+ useEffect(() => {
+ const getPattern = async () => {
+ setLoadingStatus([true, t('backendLoadingStarted')])
+ let result
+ try {
+ result = await backend.getPattern(id)
+ if (result.success) {
+ setPattern(result.data.pattern)
+ setLoadingStatus([true, 'backendLoadingCompleted', true, true])
+ } else setLoadingStatus([true, 'backendError', true, false])
+ } catch (err) {
+ console.log(err)
+ setLoadingStatus([true, 'backendError', true, false])
+ }
+ }
+ if (id) getPattern()
+ }, [id])
+
+ return (
+ // prettier-ignore
+
+ {pattern ? (
+
+ ) : (
+
+
{t('account:oneMomentPLease')}
+
+
+ )}
+
+ )
+}
+
+export default EditGozerPage
+
+export async function getStaticProps({ locale, params }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ id: params.id,
+ page: {
+ locale,
+ path: ['account', 'patterns', 'gozer', params.id, 'edit'],
+ title: 'Gozer',
+ },
+ },
+ }
+}
+
+/*
+ * getStaticPaths() is used to specify for which routes (think URLs)
+ * this page should be used to generate the result.
+ */
+export async function getStaticPaths() {
+ return {
+ paths: [],
+ fallback: 'blocking',
+ }
+}
diff --git a/sites/org/pages/new/gozer.mjs b/sites/org/pages/new/gozer.mjs
new file mode 100644
index 00000000000..617cd503546
--- /dev/null
+++ b/sites/org/pages/new/gozer.mjs
@@ -0,0 +1,41 @@
+/*
+ * This page is auto-generated. Do not edit it by hand.
+ */
+import { Gozer } from 'designs/gozer/src/index.mjs'
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs'
+import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs'
+
+// Translation namespaces used on this page
+const ns = nsMerge('gozer', wbNs, pageNs)
+
+const NewGozerPage = ({ page, docs }) => (
+
+
+
+)
+
+export default NewGozerPage
+
+export async function getStaticProps({ locale }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ page: {
+ locale,
+ path: ['new', 'gozer'],
+ title: 'Gozer',
+ },
+ },
+ }
+}
diff --git a/sites/sde/package.json b/sites/sde/package.json
index d3d76638ccf..87677d8cfc0 100644
--- a/sites/sde/package.json
+++ b/sites/sde/package.json
@@ -48,7 +48,7 @@
"d3-dispatch": "3.0.1",
"d3-drag": "3.0.0",
"d3-selection": "3.0.0",
- "daisyui": "3.9.2",
+ "daisyui": "3.9.3",
"file-saver": "2.0.5",
"i18next": "23.5.1",
"jotai": "2.4.3",
@@ -59,8 +59,8 @@
"lodash.orderby": "4.6.0",
"lodash.set": "4.3.2",
"mustache": "4.2.0",
- "next": "13.5.4",
- "next-i18next": "14.0.0",
+ "next": "13.5.5",
+ "next-i18next": "14.0.3",
"pdfkit": "0.13.0",
"postcss-for": "2.1.1",
"react": "18.2.0",
@@ -71,7 +71,7 @@
"react-dropzone": "14.2.3",
"react-swipeable": "7.0.1",
"react-timeago": "7.2.0",
- "react-zoom-pan-pinch": "3.1.0",
+ "react-zoom-pan-pinch": "3.2.0",
"remark-gfm": "3.0.1",
"remark-frontmatter": "4.0.1",
"remark-mdx-frontmatter": "3.0.0",
diff --git a/sites/shared/i18n/designs.mjs b/sites/shared/i18n/designs.mjs
index 29b734e31e4..1d1447e4b1c 100644
--- a/sites/shared/i18n/designs.mjs
+++ b/sites/shared/i18n/designs.mjs
@@ -21,6 +21,7 @@ import { i18n as diana } from '@freesewing/diana'
import { i18n as examples } from '@freesewing/examples'
import { i18n as florence } from '@freesewing/florence'
import { i18n as florent } from '@freesewing/florent'
+import { i18n as gozer } from '@freesewing/gozer'
import { i18n as hi } from '@freesewing/hi'
import { i18n as holmes } from '@freesewing/holmes'
import { i18n as hortensia } from '@freesewing/hortensia'
@@ -76,6 +77,7 @@ export const designs = {
examples,
florence,
florent,
+ gozer,
hi,
holmes,
hortensia,
diff --git a/sites/shared/package.json b/sites/shared/package.json
index 74619f0f7a6..813739ac648 100644
--- a/sites/shared/package.json
+++ b/sites/shared/package.json
@@ -23,7 +23,7 @@
"d3-dispatch": "3.0.1",
"d3-drag": "3.0.0",
"d3-selection": "3.0.0",
- "daisyui": "3.9.2",
+ "daisyui": "3.9.3",
"feed": "4.2.2",
"file-saver": "2.0.5",
"front-matter": "4.0.2",
@@ -44,7 +44,7 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"react-timeago": "7.2.0",
- "react-zoom-pan-pinch": "3.1.0",
+ "react-zoom-pan-pinch": "3.2.0",
"rehype-autolink-headings": "7.0.0",
"rehype-highlight": "7.0.0",
"remark-frontmatter": "4.0.1",
diff --git a/sites/shared/prebuild/data/design-measurements.mjs b/sites/shared/prebuild/data/design-measurements.mjs
index 3871dfb8247..4896da415c2 100644
--- a/sites/shared/prebuild/data/design-measurements.mjs
+++ b/sites/shared/prebuild/data/design-measurements.mjs
@@ -1,3 +1,3 @@
// __SDEFILE__ - This file is a dependency for the stand-alone environment
// This file is auto-generated by the prebuild script | Any changes will be overwritten
-export const measurements = {"aaron":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips"],"albert":["chest","hpsToWaistBack","waist","waistToKnee","hips"],"bee":["highBust","chest","underbust","waist","waistBack","bustSpan","neck","hpsToBust","hpsToWaistFront","hpsToWaistBack","shoulderToShoulder","shoulderSlope","bustPointToUnderbust"],"bella":["highBust","chest","underbust","waist","waistBack","bustSpan","neck","hpsToBust","hpsToWaistFront","hpsToWaistBack","shoulderToShoulder","shoulderSlope"],"benjamin":["neck"],"bent":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","shoulderToElbow","shoulderToWrist","wrist"],"bob":[],"breanna":["biceps","bustFront","bustSpan","highBust","highBustFront","hpsToBust","hpsToWaistBack","hpsToWaistFront","waist","waistToHips","neck","shoulderToShoulder","shoulderSlope","shoulderToWrist","wrist"],"brian":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","shoulderToWrist","wrist"],"bruce":["hips","upperLeg","waistToHips","waistToUpperLeg"],"carlita":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","waist","waistToFloor","waistToSeat","seat","highBust","bustSpan","shoulderToElbow","shoulderToWrist","wrist"],"carlton":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","waist","waistToFloor","waistToSeat","seat","shoulderToElbow","shoulderToWrist","wrist"],"cathrin":["underbust","waist","hips","waistToUnderbust","waistToHips"],"charlie":["crossSeam","crossSeamFront","knee","seat","seatBack","waist","waistBack","waistToFloor","waistToKnee","waistToHips","waistToSeat","waistToUpperLeg"],"cornelius":["waist","hips","inseam","seat","waistToKnee","waistToHips","waistToFloor","knee"],"diana":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist","shoulderToWrist","wrist"],"examples":["head"],"florence":["head"],"florent":["head"],"hi":[],"holmes":["head"],"hortensia":[],"huey":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","shoulderToWrist","wrist","head"],"hugo":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","shoulderToWrist","wrist","head"],"jaeger":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist","shoulderToElbow","shoulderToWrist","wrist"],"legend":[],"lucy":[],"lunetius":["waistToKnee","waistToUpperLeg","waistToFloor","hpsToWaistBack","neck","shoulderToShoulder","shoulderToElbow","waistToHips"],"magde":[],"noble":["highBust","chest","underbust","waist","waistBack","bustSpan","neck","hpsToBust","hpsToWaistFront","hpsToWaistBack","shoulderToShoulder","shoulderSlope"],"octoplushy":[],"paco":["crossSeam","crossSeamFront","knee","seat","seatBack","waist","waistBack","waistToFloor","waistToKnee","waistToHips","waistToSeat","waistToUpperLeg","heel"],"penelope":["waist","seat","waistToHips","waistToSeat","waistToKnee"],"plugintest":["seat","seatBack","waist","waistBack","crossSeam","crossSeamFront"],"rendertest":[],"sandy":["waist","waistToFloor","waistToHips","hips"],"shelly":["neck","chest","hips","waistToHips","hpsToWaistBack","waistToArmpit","biceps","wrist","shoulderToWrist"],"shin":["hips","upperLeg","waistToUpperLeg","waistToHips"],"simon":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","waist","hips","shoulderToWrist","wrist"],"simone":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","waist","hips","highBust","bustSpan","shoulderToWrist","wrist"],"skully":[],"sven":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist","shoulderToWrist","wrist"],"tamiko":["shoulderToShoulder","chest","hpsToWaistBack","shoulderSlope","waistToHips"],"teagan":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist"],"tiberius":["head","shoulderToElbow","shoulderToShoulder","biceps","hpsToWaistBack","waistToKnee","waist","chest","seat","hips","waistToFloor","waistToUpperLeg"],"titan":["crossSeam","crossSeamFront","knee","seat","seatBack","waist","waistBack","waistToFloor","waistToKnee","waistToHips","waistToSeat","waistToUpperLeg"],"trayvon":["hpsToWaistBack","waistToHips","neck"],"uma":["waist","seat","waistToSeat","waistToUpperLeg"],"wahid":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist"],"walburga":["head","shoulderToShoulder","hpsToWaistBack","waistToKnee","waistToHips","waistToFloor","waistToUpperLeg","neck"],"waralee":["seat","inseam","crotchDepth","waistToHips"],"yuri":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","shoulderToWrist","wrist","head"],"otis":["waist"]}
+export const measurements = {"aaron":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips"],"albert":["chest","hpsToWaistBack","waist","waistToKnee","hips"],"bee":["highBust","chest","underbust","waist","waistBack","bustSpan","neck","hpsToBust","hpsToWaistFront","hpsToWaistBack","shoulderToShoulder","shoulderSlope","bustPointToUnderbust"],"bella":["highBust","chest","underbust","waist","waistBack","bustSpan","neck","hpsToBust","hpsToWaistFront","hpsToWaistBack","shoulderToShoulder","shoulderSlope"],"benjamin":["neck"],"bent":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","shoulderToElbow","shoulderToWrist","wrist"],"bob":[],"breanna":["biceps","bustFront","bustSpan","highBust","highBustFront","hpsToBust","hpsToWaistBack","hpsToWaistFront","waist","waistToHips","neck","shoulderToShoulder","shoulderSlope","shoulderToWrist","wrist"],"brian":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","shoulderToWrist","wrist"],"bruce":["hips","upperLeg","waistToHips","waistToUpperLeg"],"carlita":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","waist","waistToFloor","waistToSeat","seat","highBust","bustSpan","shoulderToElbow","shoulderToWrist","wrist"],"carlton":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","waist","waistToFloor","waistToSeat","seat","shoulderToElbow","shoulderToWrist","wrist"],"cathrin":["underbust","waist","hips","waistToUnderbust","waistToHips"],"charlie":["crossSeam","crossSeamFront","knee","seat","seatBack","waist","waistBack","waistToFloor","waistToKnee","waistToHips","waistToSeat","waistToUpperLeg"],"cornelius":["waist","hips","inseam","seat","waistToKnee","waistToHips","waistToFloor","knee"],"diana":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist","shoulderToWrist","wrist"],"examples":["head"],"florence":["head"],"florent":["head"],"gozer":["hpsToWaistBack","waistToFloor","head"],"hi":[],"holmes":["head"],"hortensia":[],"huey":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","shoulderToWrist","wrist","head"],"hugo":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","shoulderToWrist","wrist","head"],"jaeger":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist","shoulderToElbow","shoulderToWrist","wrist"],"legend":[],"lucy":[],"lunetius":["waistToKnee","waistToUpperLeg","waistToFloor","hpsToWaistBack","neck","shoulderToShoulder","shoulderToElbow","waistToHips"],"magde":[],"noble":["highBust","chest","underbust","waist","waistBack","bustSpan","neck","hpsToBust","hpsToWaistFront","hpsToWaistBack","shoulderToShoulder","shoulderSlope"],"octoplushy":[],"paco":["crossSeam","crossSeamFront","knee","seat","seatBack","waist","waistBack","waistToFloor","waistToKnee","waistToHips","waistToSeat","waistToUpperLeg","heel"],"penelope":["waist","seat","waistToHips","waistToSeat","waistToKnee"],"plugintest":["seat","seatBack","waist","waistBack","crossSeam","crossSeamFront"],"rendertest":[],"sandy":["waist","waistToFloor","waistToHips","hips"],"shelly":["neck","chest","hips","waistToHips","hpsToWaistBack","waistToArmpit","biceps","wrist","shoulderToWrist"],"shin":["hips","upperLeg","waistToUpperLeg","waistToHips"],"simon":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","waist","hips","shoulderToWrist","wrist"],"simone":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","waist","hips","highBust","bustSpan","shoulderToWrist","wrist"],"skully":[],"sven":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist","shoulderToWrist","wrist"],"tamiko":["shoulderToShoulder","chest","hpsToWaistBack","shoulderSlope","waistToHips"],"teagan":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist"],"tiberius":["head","shoulderToElbow","shoulderToShoulder","biceps","hpsToWaistBack","waistToKnee","waist","chest","seat","hips","waistToFloor","waistToUpperLeg"],"titan":["crossSeam","crossSeamFront","knee","seat","seatBack","waist","waistBack","waistToFloor","waistToKnee","waistToHips","waistToSeat","waistToUpperLeg"],"trayvon":["hpsToWaistBack","waistToHips","neck"],"uma":["waist","seat","waistToSeat","waistToUpperLeg"],"wahid":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","waist"],"walburga":["head","shoulderToShoulder","hpsToWaistBack","waistToKnee","waistToHips","waistToFloor","waistToUpperLeg","neck"],"waralee":["seat","inseam","crotchDepth","waistToHips"],"yuri":["biceps","chest","hpsToBust","hpsToWaistBack","neck","shoulderToShoulder","shoulderSlope","waistToArmpit","waistToHips","hips","shoulderToWrist","wrist","head"],"otis":["waist"]}
diff --git a/sites/shared/prebuild/data/design-options.mjs b/sites/shared/prebuild/data/design-options.mjs
index 15cdf6aad9b..5f05f146987 100644
--- a/sites/shared/prebuild/data/design-options.mjs
+++ b/sites/shared/prebuild/data/design-options.mjs
@@ -1,3 +1,3 @@
// __SDEFILE__ - This file is a dependency for the stand-alone environment
// This file is auto-generated by the prebuild script | Any changes will be overwritten
-export const options = {"aaron":{"brianFitSleeve":false,"brianFitCollar":false,"collarFactor":4.8,"bicepsEase":0.05,"chestEase":{"pct":8,"min":0,"max":20,"menu":"style"},"collarEase":0,"cuffEase":0,"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":0,"lengthBonus":{"pct":10,"min":-20,"max":60,"menu":"style"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":0.97,"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":0.6,"backNeckCutout":0.05,"frontArmholeDeeper":0,"shoulderSlopeReduction":0,"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"hipsEase":{"pct":8,"min":0,"max":20,"menu":"fit"},"stretchFactor":{"pct":5,"min":0,"max":15,"menu":"fit"},"armholeDrop":{"pct":10,"min":0,"max":75,"menu":"style"},"necklineBend":{"pct":100,"min":40,"max":100,"menu":"style"},"necklineDrop":{"pct":20,"min":10,"max":35,"menu":"style"},"shoulderStrapWidth":{"pct":15,"min":10,"max":40,"menu":"style"},"shoulderStrapPlacement":{"pct":40,"min":20,"max":80,"menu":"style"},"backlineBend":{"pct":50,"min":25,"max":100,"menu":"style"},"knitBindingWidth":{"pct":600,"min":300,"max":800,"menu":"style"}},"albert":{"backOpening":{"pct":10,"min":0,"max":25,"menu":"fit"},"bibWidth":{"pct":100,"min":50,"max":125,"menu":"style"},"bibLength":{"pct":75,"min":0,"max":90,"menu":"style"},"lengthBonus":{"pct":0,"min":-20,"max":25,"menu":"style"},"chestDepth":{"pct":22,"min":15,"max":90,"menu":"fit"},"strapWidth":{"pct":60,"min":20,"max":100,"menu":"style"}},"bee":{"acrossBackFactor":0.925,"shoulderSlopeBack":1.23,"neckWidthBack":0.197,"neckWidthFront":0.17,"backDartLocation":0.145,"backCenterWaistReduction":0.35,"collarFactor":0.19,"bustSpanEase":{"pct":10,"min":0,"max":20,"menu":"fit"},"chestEase":{"pct":11,"min":5,"max":20,"menu":"fit"},"fullChestEaseReduction":{"pct":4,"min":0,"max":8,"menu":"fit"},"shoulderToShoulderEase":{"pct":-0.5,"min":-1,"max":5,"menu":"fit"},"waistEase":{"pct":5,"min":1,"max":20,"menu":"fit"},"backDartHeight":{"pct":46,"min":38,"max":54,"menu":"advanced"},"bustDartCurve":1,"bustDartLength":1,"waistDartLength":1,"armholeDepth":{"pct":44,"min":38,"max":46,"menu":"advanced"},"backArmholeCurvature":0.63,"backArmholePitchDepth":0.35,"backArmholeSlant":5,"frontArmholeCurvature":0.63,"frontArmholePitchDepth":{"pct":29,"max":31,"min":27,"menu":"advanced"},"backHemSlope":2.5,"backNeckCutout":0.06,"frontShoulderWidth":{"pct":95,"max":98,"min":92,"menu":"advanced"},"highBustWidth":{"pct":86,"max":92,"min":80,"menu":"advanced"},"ties":{"bool":true,"menu":"style"},"crossBackTies":{"bool":false,"menu":"style"},"bandLength":{"pct":85,"min":75,"max":90,"menu":"style"},"neckTieLength":{"pct":80,"min":70,"max":100,"menu":"style"},"neckTieWidth":{"pct":6,"min":2,"max":18,"snap":{"metric":[6,13,19,25,32,38],"imperial":[6.35,12.7,19.05,25.4,31.75,38.1]},"menu":"style"},"reversible":{"bool":false,"menu":"style"},"topDepth":{"pct":54,"min":50,"max":80,"menu":"fit"},"bottomCupDepth":{"pct":8,"min":0,"max":20,"menu":"fit"},"sideDepth":{"pct":20.6,"min":0,"max":30,"menu":"fit"},"sideCurve":{"pct":0,"min":-50,"max":50,"menu":"fit"},"frontCurve":{"pct":0,"min":-50,"max":50,"menu":"fit"},"bellaGuide":{"bool":false,"menu":"fit"},"pointedTieEnds":{"bool":false,"menu":"style"},"duoColorTies":{"bool":false,"menu":"style"},"bandTieWidth":{"pct":3,"min":1,"max":9,"snap":{"metric":[6,13,19,25,32,38],"imperial":[6.35,12.7,19.05,25.4,31.75,38.1]},"menu":"style"},"bandTieLength":{"pct":35,"min":30,"max":50,"menu":"style"}},"bella":{"acrossBackFactor":0.925,"shoulderSlopeBack":1.23,"neckWidthBack":0.197,"neckWidthFront":0.17,"backDartLocation":0.145,"backCenterWaistReduction":0.35,"collarFactor":0.19,"bustSpanEase":{"pct":10,"min":0,"max":20,"menu":"fit"},"chestEase":{"pct":11,"min":5,"max":20,"menu":"fit"},"fullChestEaseReduction":{"pct":4,"min":0,"max":8,"menu":"fit"},"shoulderToShoulderEase":{"pct":-0.5,"min":-1,"max":5,"menu":"fit"},"waistEase":{"pct":5,"min":1,"max":20,"menu":"fit"},"backDartHeight":{"pct":46,"min":38,"max":54,"menu":"darts"},"bustDartCurve":{"pct":100,"min":0,"max":100,"menu":"darts"},"bustDartLength":{"pct":90,"min":75,"max":100,"menu":"darts"},"waistDartLength":{"pct":90,"min":75,"max":95,"menu":"darts"},"armholeDepth":{"pct":44,"min":38,"max":46,"menu":"armhole"},"backArmholeCurvature":{"pct":63,"min":50,"max":85,"menu":"armhole"},"backArmholePitchDepth":{"pct":35,"max":40,"min":30,"menu":"armhole"},"backArmholeSlant":{"deg":5,"min":1,"max":9,"menu":"armhole"},"frontArmholeCurvature":{"pct":63,"min":50,"max":85,"menu":"armhole"},"frontArmholePitchDepth":{"pct":29,"max":31,"min":27,"menu":"armhole"},"backHemSlope":{"deg":2.5,"min":0,"max":5,"menu":"advanced"},"backNeckCutout":{"pct":6,"min":3,"max":9,"menu":"advanced"},"frontShoulderWidth":{"pct":95,"max":98,"min":92,"menu":"advanced"},"highBustWidth":{"pct":86,"max":92,"min":80,"menu":"advanced"}},"benjamin":{"transitionLength":2,"bandLength":0.17,"adjustmentRibbonWidth":20,"collarEase":{"pct":3,"min":0,"max":6,"menu":"fit"},"adjustmentRibbon":{"bool":false,"menu":"fit"},"tipWidth":{"pct":15,"min":0,"max":20,"menu":"style"},"knotWidth":{"pct":7,"min":5,"max":10,"menu":"style"},"bowLength":{"pct":28,"min":23,"max":33,"menu":"style"},"bowStyle":{"dflt":"butterfly","list":["diamond","butterfly","square","widesquare"],"menu":"style"},"endStyle":{"dflt":"straight","list":["straight","pointed","rounded"],"menu":"style"},"collarBandHeight":{"pct":6,"min":5,"max":8,"menu":"style"}},"bent":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":20,"min":10,"max":40,"menu":"fit"},"chestEase":{"pct":8,"min":-4,"max":20,"menu":"fit"},"collarEase":{"pct":3.5,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":40,"min":2,"max":100,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":0,"min":-4,"max":60,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":97,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":5,"min":-10,"max":50},"armholeDepthFactor":{"pct":60,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.5,"min":0,"max":1.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"sleeveLengthBonus":{"pct":0,"min":-20,"max":15,"menu":"fit"},"sleeveBend":{"deg":10,"min":0,"max":20,"menu":"fit"},"sleevecapHeight":{"pct":45,"min":40,"max":60,"menu":"advanced"},"sleevecapEase":{"pct":1,"min":0,"max":10,"menu":"advanced"}},"bob":{"neckRatio":{"pct":80,"min":70,"max":90,"menu":"fit"},"widthRatio":{"pct":45,"min":35,"max":55,"menu":"fit"},"lengthRatio":{"pct":75,"min":55,"max":85,"menu":"fit"},"headSize":{"pct":100,"min":10,"max":200,"snap":5,"menu":"size"}},"breanna":{"collarFactor":4.8,"armholeDepthBase":0.6,"shoulderSeamLength":0.95,"sleeveWidthGuarantee":0.9,"breannaFitSleeve":true,"breannaFitCollar":true,"shoulderDart":{"bool":false,"menu":"fit"},"waistDart":{"bool":true,"menu":"fit"},"primaryBustDart":{"list":["06:00","07:00","08:00","09:00","10:00","11:00","11:30","12:00","12:30","13:00","13:30","14:00","15:00","16:00","17:00"],"dflt":"06:00","doNotTranslate":true,"menu":"style"},"secondaryBustDart":{"list":["none","06:00","07:00","08:00","09:00","10:00","11:00","11:30","12:00","12:30","13:00","13:30","14:00","15:00","16:00","17:00"],"dflt":"13:30","doNotTranslate":true,"menu":"style"},"acrossBackFactor":{"pct":96,"min":93,"max":100,"menu":"advanced"},"armholeDepthFactor":{"pct":100,"min":80,"max":120,"menu":"advanced"},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"shoulderDartSize":{"pct":7,"min":4,"max":10},"shoulderDartLength":{"pct":85,"min":60,"max":100},"waistDartSize":{"pct":10,"min":4,"max":15},"waistDartLength":{"pct":85,"min":60,"max":100},"verticalEase":{"pct":2,"min":0,"max":8,"menu":"fit"},"frontArmholeDeeper":{"pct":1,"min":0,"max":5,"menu":"advanced"},"shoulderEase":{"pct":0,"min":0,"max":4,"menu":"fit"},"collarEase":{"pct":3.5,"min":0,"max":10,"menu":"fit"},"chestEase":{"pct":10,"min":5,"max":20,"menu":"fit"},"waistEase":{"pct":10,"min":5,"max":20,"menu":"fit"},"primaryBustDartShaping":{"pct":50,"min":25,"max":75,"menu":"style"},"primaryBustDartLength":{"pct":85,"min":65,"max":95,"menu":"style"},"secondaryBustDartLength":{"pct":85,"min":65,"max":95,"menu":"style"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":100,"menu":"advanced"},"frontScyeDart":{"pct":25,"min":0,"max":45,"menu":"fit"},"sleevecapEase":{"pct":0.5,"min":0,"max":2.5,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":110,"min":35,"max":165,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":45,"min":35,"max":55,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":3,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":5.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":4.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":12.5,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":12.5,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":12.5,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":12.5,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"cuffEase":{"pct":20,"min":0,"max":50,"menu":"fit"},"sleeveLengthBonus":{"pct":0,"min":-40,"max":10,"menu":"style"}},"brian":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":5,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":0,"max":200,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":0,"min":-4,"max":60,"menu":"style"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"sleeveLengthBonus":{"pct":0,"min":-40,"max":10,"menu":"style"}},"bruce":{"hipRatioFront":0.245,"hipRatioBack":0.315,"legRatioInset":0.3,"legRatioBack":0.32,"gussetRatio":0.0666,"gussetInsetRatio":0.6,"heightRatioInset":0.65,"bulge":{"deg":20,"min":0,"max":40,"menu":"fit"},"legBonus":{"pct":0,"min":-10,"max":20,"menu":"style"},"rise":{"pct":10,"min":0,"max":25,"menu":"style"},"stretch":{"pct":15,"min":5,"max":25,"menu":"fit"},"legStretch":{"pct":40,"min":25,"max":45,"menu":"fit"},"backRise":{"pct":5,"min":0,"max":10,"menu":"fit"}},"carlita":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":20,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":10,"min":5,"max":20,"menu":"fit"},"collarEase":0.145,"cuffEase":{"pct":60,"min":30,"max":100,"menu":"fit"},"draftForHighBust":true,"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":0,"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":97,"min":93,"max":100,"menu":"fit"},"armholeDepth":{"pct":5,"min":-10,"max":50},"armholeDepthFactor":{"pct":65,"min":50,"max":70,"menu":"fit"},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.5,"min":0,"max":1.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":12,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"buttonSpacingHorizontal":{"pct":43.5,"min":15,"max":60,"menu":"style"},"length":{"pct":69,"min":35,"max":100,"menu":"style"},"lapelReduction":{"pct":5,"min":0,"max":10,"menu":"advanced"},"frontOverlap":{"pct":1.5,"min":1,"max":2,"menu":"advanced"},"pocketPlacementHorizontal":{"pct":11,"min":5,"max":20,"menu":"pockets"},"pocketPlacementVertical":{"pct":6,"min":5,"max":60,"menu":"pockets"},"pocketWidth":{"pct":95,"min":70,"max":120,"menu":"pockets"},"pocketHeight":{"pct":15,"min":0,"max":40,"menu":"pockets"},"pocketRadius":{"pct":20,"min":0,"max":50,"menu":"pockets"},"pocketFlapRadius":{"pct":15,"min":0,"max":50,"menu":"pockets"},"chestPocketPlacement":{"pct":55,"min":30,"max":65,"menu":"pockets"},"chestPocketAngle":0,"chestPocketHeight":{"pct":60,"min":40,"max":80,"menu":"pockets"},"chestPocketWidth":{"pct":25,"min":15,"max":50,"menu":"pockets"},"innerPocketPlacement":{"pct":53,"min":42,"max":62,"menu":"pockets"},"innerPocketWidth":{"pct":50,"min":45,"max":65,"menu":"pockets"},"waistEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"seatEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"innerPocketWeltHeight":{"pct":3.5,"min":2.5,"max":5,"menu":"pockets"},"contour":{"pct":50,"min":25,"max":75,"menu":"advanced"},"backPleat":0.048,"beltWidth":{"pct":15,"min":10,"max":20,"menu":"style"},"sleeveLengthBonus":{"pct":7,"min":0,"max":20,"menu":"fit"},"sleeveBend":{"deg":10,"min":0,"max":20,"menu":"fit"},"sleevecapHeight":{"pct":45,"min":40,"max":60,"menu":"advanced"},"sleevecapEase":{"pct":1,"min":0,"max":10,"menu":"advanced"},"cuffLength":{"pct":15,"min":10,"max":20,"menu":"style"},"chestShapingMax":5,"collarHeight":{"pct":9.6,"min":8,"max":11,"menu":"collar"},"collarFlare":{"pct":20,"min":0,"max":40,"menu":"collar"},"collarSpread":{"deg":4,"min":2,"max":6,"menu":"collar"},"innerPocketDepth":{"pct":110,"min":75,"max":140,"menu":"pockets"}},"carlton":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":20,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":10,"min":5,"max":20,"menu":"fit"},"collarEase":0.145,"cuffEase":{"pct":60,"min":30,"max":100,"menu":"fit"},"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":0,"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":97,"min":93,"max":100,"menu":"fit"},"armholeDepth":{"pct":5,"min":-10,"max":50},"armholeDepthFactor":{"pct":65,"min":50,"max":70,"menu":"fit"},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.5,"min":0,"max":1.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":12,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"buttonSpacingHorizontal":{"pct":43.5,"min":15,"max":60,"menu":"style"},"length":{"pct":69,"min":35,"max":100,"menu":"style"},"lapelReduction":{"pct":5,"min":0,"max":10,"menu":"advanced"},"frontOverlap":{"pct":1.5,"min":1,"max":2,"menu":"advanced"},"pocketPlacementHorizontal":{"pct":11,"min":5,"max":20,"menu":"pockets"},"pocketPlacementVertical":{"pct":6,"min":5,"max":60,"menu":"pockets"},"pocketWidth":{"pct":95,"min":70,"max":120,"menu":"pockets"},"pocketHeight":{"pct":15,"min":0,"max":40,"menu":"pockets"},"pocketRadius":{"pct":20,"min":0,"max":50,"menu":"pockets"},"pocketFlapRadius":{"pct":15,"min":0,"max":50,"menu":"pockets"},"chestPocketPlacement":{"pct":55,"min":30,"max":65,"menu":"pockets"},"chestPocketAngle":{"deg":4,"min":0,"max":6,"menu":"pockets"},"chestPocketHeight":{"pct":60,"min":40,"max":80,"menu":"pockets"},"chestPocketWidth":{"pct":25,"min":15,"max":50,"menu":"pockets"},"innerPocketPlacement":{"pct":53,"min":42,"max":62,"menu":"pockets"},"innerPocketWidth":{"pct":50,"min":45,"max":65,"menu":"pockets"},"waistEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"seatEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"innerPocketWeltHeight":{"pct":3.5,"min":2.5,"max":5,"menu":"pockets"},"backPleat":0.048,"beltWidth":{"pct":15,"min":10,"max":20,"menu":"style"},"sleeveLengthBonus":{"pct":7,"min":0,"max":20,"menu":"fit"},"sleeveBend":{"deg":10,"min":0,"max":20,"menu":"fit"},"sleevecapHeight":{"pct":45,"min":40,"max":60,"menu":"advanced"},"sleevecapEase":{"pct":1,"min":0,"max":10,"menu":"advanced"},"cuffLength":{"pct":15,"min":10,"max":20,"menu":"style"},"chestShapingMax":5,"collarHeight":{"pct":9.6,"min":8,"max":11,"menu":"collar"},"collarFlare":{"pct":20,"min":0,"max":40,"menu":"collar"},"collarSpread":{"deg":4,"min":2,"max":6,"menu":"collar"},"innerPocketDepth":{"pct":110,"min":75,"max":140,"menu":"pockets"}},"cathrin":{"waistReduction":{"pct":10,"min":2,"max":20,"menu":"fit"},"panels":{"list":["11","13"],"dflt":"13","menu":"fit"},"backOpening":{"pct":4,"min":3,"max":10,"menu":"style"},"backRise":{"pct":15,"min":1,"max":25,"menu":"style"},"backDrop":{"pct":2,"min":0,"max":5,"menu":"style"},"frontRise":{"pct":4,"min":0.1,"max":8,"menu":"style"},"frontDrop":{"pct":5,"min":0,"max":10,"menu":"style"},"hipRise":{"pct":5,"min":0,"max":15,"menu":"style"}},"charlie":{"fitCrossSeam":true,"fitCrossSeamFront":true,"fitCrossSeamBack":true,"fitGuides":false,"waistEase":{"pct":1,"min":0,"max":5,"menu":"fit"},"seatEase":{"pct":5,"min":0,"max":10,"menu":"fit"},"kneeEase":{"pct":15,"min":10,"max":30,"menu":"fit"},"waistHeight":{"pct":-4,"min":-15,"max":40,"menu":"style"},"lengthBonus":{"pct":2,"min":-20,"max":10,"menu":"style"},"crotchDrop":{"pct":2,"min":0,"max":15,"menu":"style"},"fitKnee":true,"legBalance":{"pct":57.5,"min":52.5,"max":62.5,"menu":"advanced"},"crossSeamCurveStart":{"pct":85,"min":60,"max":100,"menu":"advanced"},"crossSeamCurveBend":{"pct":65,"min":45,"max":85,"menu":"advanced"},"crossSeamCurveAngle":{"deg":12,"min":0,"max":20,"menu":"advanced"},"crotchSeamCurveStart":{"pct":80,"min":60,"max":95,"menu":"advanced"},"crotchSeamCurveBend":{"pct":80,"min":45,"max":100,"menu":"advanced"},"crotchSeamCurveAngle":{"deg":25,"min":0,"max":35,"menu":"advanced"},"waistBalance":{"pct":55,"min":30,"max":90,"menu":"advanced"},"grainlinePosition":{"pct":50,"min":30,"max":60,"menu":"advanced"},"waistbandWidth":{"pct":3,"min":1,"max":6,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"style"},"waistbandReduction":0.25,"waistbandFactor":0.1,"frontPocketSlantDepth":{"pct":85,"min":70,"max":100,"menu":"pockets.frontpockets"},"frontPocketSlantWidth":{"pct":25,"min":15,"max":35,"menu":"pockets.frontpockets"},"frontPocketSlantRound":{"pct":30,"min":5,"max":50,"menu":"pockets.frontpockets"},"frontPocketSlantBend":{"pct":25,"min":5,"max":50,"menu":"pockets.frontpockets"},"frontPocketWidth":{"pct":55,"min":45,"max":65,"menu":"pockets.frontpockets"},"frontPocketDepth":{"pct":100,"min":85,"max":110,"menu":"pockets.frontpockets"},"frontPocketFacing":{"pct":45,"min":25,"max":65,"menu":"pockets.frontpockets"},"flyCurve":{"pct":72,"min":50,"max":100,"menu":"advanced.fly"},"flyLength":{"pct":45,"min":30,"max":60,"menu":"advanced.fly"},"flyWidth":{"pct":15,"min":10,"max":20,"menu":"advanced.fly"},"backPocketVerticalPlacement":{"pct":24,"min":18,"max":30,"menu":"pockets.backpockets"},"backPocketHorizontalPlacement":{"pct":55,"min":48,"max":62,"menu":"pockets.backpockets"},"backPocketWidth":{"pct":55,"min":50,"max":60,"menu":"pockets.backpockets"},"backPocketDepth":{"pct":60,"min":40,"max":80,"menu":"pockets.backpockets"},"backPocketFacing":{"bool":true,"menu":"pockets.backpockets"},"waistbandCurve":{"pct":0,"min":0,"max":35,"menu":"fit"},"beltLoops":{"count":8,"min":6,"max":12,"menu":"advanced"}},"cornelius":{"pctAtoO":0.5,"pctAtoC":0.25,"pctUtoA":0.25,"pctJtoA":0.25,"pctSeatAdjustment":0.5,"ventLength":{"pct":70,"min":25,"max":110,"menu":"style"},"fullness":{"pct":0,"min":0,"max":55,"menu":"fit"},"waistbandBelowWaist":{"pct":5,"min":0,"max":15,"menu":"style"},"waistReduction":{"pct":1,"min":-2,"max":10,"menu":"fit"},"bandBelowKnee":{"pct":25,"min":15,"max":50,"menu":"advanced"},"pctZtoR":0.35,"pctRtoZin":0.75,"pctRtoZup":0.25,"pctRtoKin":0.75,"pctRtoKdown":0.25,"pctKtoRout":0.15,"pctKtoRup":0.25,"pctKtoH":0.7,"flyWidth":{"pct":0.38,"min":0.2,"max":0.6,"menu":"style"},"kneeToBelow":{"pct":94,"min":85,"max":110,"menu":"advanced"},"cuffWidth":{"pct":0,"min":-50,"max":150,"menu":"style"},"cuffStyle":{"dflt":"elegant","list":["traditional","elegant","keystone"],"menu":"style"}},"diana":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":5,"bicepsEase":{"pct":0,"min":-5,"max":50,"menu":"fit"},"chestEase":{"pct":0,"min":-10,"max":20,"menu":"fit"},"collarEase":0,"cuffEase":{"pct":20,"min":0,"max":30,"menu":"fit"},"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":0,"min":0,"max":50,"menu":"fit"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":{"pct":97,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":0,"min":0,"max":20,"menu":"advanced"},"armholeDepthFactor":{"pct":55,"min":50,"max":70,"menu":"advanced"},"backNeckCutout":0.05,"frontArmholeDeeper":{"pct":0,"min":0,"max":1.5,"menu":"advanced"},"shoulderSlopeReduction":0,"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"drapeAngle":{"deg":20,"min":10,"max":30,"menu":"style"},"sleeveLengthBonus":{"pct":0,"min":-40,"max":10,"menu":"fit"},"shoulderSeamLength":{"pct":35,"min":0.1,"max":60,"menu":"style"},"waistEase":{"pct":0,"min":-10,"max":20,"menu":"fit"},"hipsEase":{"pct":0,"min":-10,"max":20,"menu":"fit"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":100,"min":35,"max":165,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":3,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":5.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":4.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":6,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"}},"examples":{"size":{"pct":50,"min":5,"max":100,"menu":"stack"},"x":{"pct":0,"min":-100,"max":100,"menu":"stack"},"y":{"pct":0,"min":-100,"max":100,"menu":"stack"},"stackIt":{"dflt":"Do stack","list":["Do stack","Do not stack"],"menu":"stack"}},"florence":{"length":{"pct":40,"min":35,"max":45,"menu":"fit"},"height":{"pct":26,"min":23,"max":29,"menu":"fit"},"curve":{"pct":12.5,"min":10,"max":15,"menu":"fit"}},"florent":{"topSide":0.8,"brim":0,"headEase":{"pct":2,"min":0,"max":5,"menu":"fit"}},"hi":{"length":1000,"size":{"pct":100,"min":5,"max":500,"menu":"style"},"nosePointiness":{"pct":0,"min":-5,"max":10,"menu":"style"},"aggressive":{"bool":false,"menu":"style"},"hungry":{"pct":50,"min":0,"max":100,"menu":"style"}},"holmes":{"headEase":{"pct":3,"min":0,"max":9,"snap":{"metric":[6,13,19,25,32,38,44,50],"imperial":[6.35,12.7,19.05,25.4,31.75,38.1,44.45,50.8]},"menu":"fit"},"lengthRatio":{"pct":55,"min":40,"max":60,"menu":"style"},"gores":{"count":6,"min":4,"max":20,"menu":"style"},"visorAngle":{"deg":45,"min":10,"max":90,"menu":"style"},"visorWidth":{"pct":5,"min":1,"max":17,"snap":5,"menu":"style"},"visorLength":{"pct":100,"min":80,"max":150,"menu":"advanced"},"earLength":{"pct":100,"min":80,"max":150,"menu":"style"},"earWidth":{"pct":100,"min":80,"max":150,"menu":"style"},"buttonhole":{"bool":false,"menu":"style"}},"hortensia":{"width":230,"height":330,"size":{"pct":50,"min":20,"max":200,"menu":"style"},"zipperSize":{"dflt":"#5","list":["#3","#4","#4.5","#5","#6","#8","#10","invisible"],"menu":"style"},"minHandleSpaceWidth":80,"maxHandleSpaceWidth":250,"pctHandleSpace":50,"pctHandleVert":42,"handleWidth":{"pct":8.6,"min":4,"max":25,"menu":"style"},"strapLength":{"pct":160,"min":75,"max":250,"menu":"style"}},"huey":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":5,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":0,"max":200,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":0,"min":-4,"max":60,"menu":"style"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"ribbing":{"bool":true,"menu":"style"},"ribbingHeight":{"pct":10,"min":5,"max":15,"menu":"style"},"hipsEase":{"pct":8,"min":4,"max":12,"menu":"fit"},"pocket":{"bool":true,"menu":"style"},"pocketHeight":{"pct":30,"min":25,"max":35,"menu":"style"},"pocketWidth":{"pct":60,"min":50,"max":70,"menu":"style"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"sleeveLengthBonus":{"pct":0,"min":-40,"max":10,"menu":"style"},"hoodHeight":{"pct":59,"min":55,"max":65,"menu":"style"},"hoodCutback":{"pct":10,"min":5,"max":15,"menu":"style"},"hoodClosure":{"pct":13.5,"min":10,"max":15,"menu":"style"},"hoodDepth":{"pct":8.5,"min":5,"max":12,"menu":"style"},"hoodAngle":{"deg":5,"min":2,"max":8,"menu":"style"},"ribbingStretch":{"pct":15,"min":0,"max":30,"menu":"fit"}},"hugo":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":8,"min":4,"max":20,"menu":"fit"},"collarEase":0.05,"cuffEase":{"pct":20,"min":10,"max":50,"menu":"fit"},"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":0,"lengthBonus":{"pct":10,"min":0,"max":20,"menu":"style"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":0.5,"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":0,"shoulderSlopeReduction":0,"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"hipsEase":{"pct":12,"min":4,"max":20,"menu":"fit"},"ribbingHeight":{"pct":10,"min":4,"max":20,"menu":"style"},"pocketWidth":{"pct":50,"min":35,"max":65,"menu":"style"},"sleevecapEase":0,"sleevecapTopFactorX":0.5,"sleevecapTopFactorY":0.45,"sleevecapBackFactorX":0.6,"sleevecapBackFactorY":0.33,"sleevecapFrontFactorX":0.55,"sleevecapFrontFactorY":0.33,"sleevecapQ1Offset":0.017,"sleevecapQ2Offset":0.035,"sleevecapQ3Offset":0.025,"sleevecapQ4Offset":0.01,"sleevecapQ1Spread1":0.1,"sleevecapQ1Spread2":0.15,"sleevecapQ2Spread1":0.15,"sleevecapQ2Spread2":0.1,"sleevecapQ3Spread1":0.1,"sleevecapQ3Spread2":0.08,"sleevecapQ4Spread1":0.07,"sleevecapQ4Spread2":0.063,"sleeveWidthGuarantee":0.9,"sleeveLengthBonus":{"pct":2,"min":0,"max":10,"menu":"style"},"ribbingStretch":{"pct":5,"min":0,"max":10,"menu":"fit"}},"jaeger":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":5,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":0,"max":200,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":19,"min":10,"max":25,"menu":"fit"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"centerBackDart":{"pct":0.5,"min":0,"max":1.5,"menu":"fit"},"hipsEase":{"pct":12,"min":8,"max":20,"menu":"fit"},"waistEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"rollLineCollarHeight":{"pct":6,"min":5,"max":9,"menu":"collar"},"reduceWaistStandardFraction":0.08,"reduceWaistDartFraction":0.05,"reduceHipsStandardFraction":0.1,"centerFrontHemDrop":{"pct":2,"min":0,"max":4,"menu":"style"},"frontPocketPlacement":{"pct":75,"min":65,"max":85,"menu":"pockets"},"frontPocketWidth":{"pct":68,"min":55,"max":75,"menu":"pockets"},"frontPocketDepth":{"pct":110,"min":80,"max":130,"menu":"pockets"},"frontPocketRadius":{"pct":10,"min":0,"max":50,"menu":"pockets"},"frontDartPlacement":{"pct":55,"min":45,"max":60,"menu":"advanced"},"sideFrontPlacement":{"pct":85,"min":80,"max":90,"menu":"advanced"},"frontOverlap":{"pct":1.5,"min":1,"max":2,"menu":"advanced"},"innerPocketPlacement":{"pct":52,"min":42,"max":62,"menu":"pockets"},"innerPocketWidth":{"pct":50,"min":45,"max":65,"menu":"pockets"},"innerPocketDepth":{"pct":110,"min":75,"max":140,"menu":"pockets"},"innerPocketWeltHeight":{"pct":3.5,"min":2.5,"max":5,"menu":"pockets"},"frontCutawayAngle":{"deg":2.5,"min":1,"max":4,"menu":"style"},"frontCutawayStart":{"pct":30,"min":10,"max":70,"menu":"style"},"frontCutawayEnd":{"pct":40,"min":10,"max":40,"menu":"style"},"hemRadius":{"pct":100,"min":35,"max":100,"menu":"style"},"chestPocketDepth":{"pct":110,"min":70,"max":150,"menu":"pockets"},"chestPocketWidth":{"pct":37,"min":30,"max":45,"menu":"pockets"},"chestPocketPlacement":{"pct":52,"min":40,"max":60,"menu":"pockets"},"chestPocketAngle":{"deg":2.5,"min":0,"max":7,"menu":"pockets"},"chestPocketWeltSize":{"pct":17.5,"min":10,"max":25,"menu":"pockets"},"lapelStart":{"pct":10,"min":0,"max":35,"menu":"style"},"collarHeight":{"pct":9,"min":7,"max":10,"menu":"collar"},"collarNotchDepth":{"pct":15,"min":15,"max":50,"menu":"collar"},"collarNotchAngle":{"deg":45,"min":30,"max":60,"menu":"collar"},"collarNotchReturn":{"pct":100,"min":50,"max":100,"menu":"collar"},"chestShaping":{"pct":30,"min":0,"max":100,"menu":"advanced"},"buttons":{"list":["1","2","3"],"dflt":"2","menu":"style"},"buttonLength":{"pct":30,"min":30,"max":60,"menu":"style"},"chestShapingMax":5,"lapelReduction":{"pct":5,"min":0,"max":10,"menu":"style"},"backVent":{"count":1,"min":0,"max":2,"menu":"style"},"backVentLength":{"pct":35,"min":15,"max":100,"menu":"style"},"collarSpread":{"deg":13,"min":5,"max":35,"menu":"collar"},"collarRoll":{"pct":5,"min":0,"max":10,"menu":"collar"},"pocketFoldover":{"pct":25,"min":15,"max":35,"menu":"pockets"},"sleeveLengthBonus":{"pct":0,"min":-20,"max":15,"menu":"fit"},"sleeveBend":{"deg":10,"min":0,"max":20,"menu":"fit"},"sleevecapHeight":{"pct":45,"min":40,"max":60,"menu":"advanced"},"sleevecapEase":{"pct":1,"min":0,"max":10,"menu":"advanced"},"sleeveVentLength":{"pct":35,"min":25,"max":55,"menu":"sleeves"},"sleeveVentWidth":{"pct":18,"min":10,"max":26,"menu":"sleeves"}},"legend":{},"lucy":{"width":{"pct":50,"min":30,"max":100,"menu":"style"},"length":{"pct":50,"min":30,"max":100,"menu":"style"},"edge":{"pct":25,"min":20,"max":50,"menu":"style"}},"lunetius":{"lengthRatio":{"pct":105,"min":60,"max":130,"menu":"style"},"widthRatio":{"pct":100,"min":50,"max":130,"menu":"style"},"length":{"list":["toKnee","toBelowKnee","toHips","toUpperLeg","toFloor"],"dflt":"toBelowKnee","menu":"style"}},"magde":{"size":{"pct":100,"min":15,"max":200,"menu":"style"},"taperRatio":{"pct":60,"min":50,"max":100,"menu":"style"},"flapHeightRatio":{"pct":83,"min":60,"max":100,"menu":"style"},"openingRatio":{"pct":66,"min":30,"max":90,"menu":"style"},"onePieceLid":{"bool":false,"menu":"style"},"useCommonWebbingSizes":{"bool":true,"menu":"style"}},"noble":{"acrossBackFactor":0.925,"shoulderSlopeBack":1.23,"neckWidthBack":0.197,"neckWidthFront":0.17,"backDartLocation":0.145,"backCenterWaistReduction":0.35,"collarFactor":0.19,"bustSpanEase":{"pct":0,"min":-5,"max":20,"menu":"fit"},"chestEase":{"pct":11,"min":5,"max":20,"menu":"fit"},"fullChestEaseReduction":{"pct":4,"min":0,"max":8,"menu":"fit"},"shoulderToShoulderEase":{"pct":-0.5,"min":-1,"max":5,"menu":"fit"},"waistEase":{"pct":5,"min":1,"max":20,"menu":"fit"},"backDartHeight":{"pct":46,"min":38,"max":54,"menu":"darts"},"bustDartCurve":1,"bustDartLength":0.9,"waistDartLength":{"pct":90,"min":75,"max":95,"menu":"darts"},"armholeDepth":{"pct":44,"min":38,"max":46,"menu":"armhole"},"backArmholeCurvature":{"pct":63,"min":50,"max":85,"menu":"armhole"},"backArmholePitchDepth":{"pct":35,"max":40,"min":30,"menu":"armhole"},"backArmholeSlant":{"deg":5,"min":1,"max":9,"menu":"armhole"},"frontArmholeCurvature":{"pct":63,"min":50,"max":85,"menu":"armhole"},"frontArmholePitchDepth":{"pct":29,"max":31,"min":27,"menu":"armhole"},"backHemSlope":{"deg":2.5,"min":0,"max":5,"menu":"advanced"},"backNeckCutout":{"pct":6,"min":3,"max":9,"menu":"advanced"},"frontShoulderWidth":{"pct":95,"max":98,"min":92,"menu":"advanced"},"highBustWidth":{"pct":86,"max":92,"min":80,"menu":"advanced"},"armholeDartPosition":{"pct":50,"min":10,"max":90},"dartPosition":{"dflt":"shoulder","list":["shoulder","armhole"],"menu":"darts"},"shoulderDartPosition":{"pct":50,"min":10,"max":90},"shoulderToShoulderCorrection":0.995,"upperDartLength":{"pct":90,"min":80,"max":95,"menu":"darts"}},"octoplushy":{"sizeConstant":200,"size":{"pct":100,"min":5,"max":500,"menu":"style"},"type":{"dflt":"octoplushy","list":["octoplushy","octopus","squid"],"menu":"style"},"armWidth":{"pct":15,"min":10,"max":30,"menu":"style"},"armLength":{"pct":200,"min":100,"max":500,"menu":"style"},"neckWidth":{"pct":25,"min":25,"max":45,"menu":"style"},"armTaper":{"pct":25,"min":0,"max":50,"menu":"style"},"bottomTopArmRatio":{"pct":57,"min":25,"max":75,"menu":"style"},"bottomArmReduction":{"pct":90,"min":75,"max":125},"bottomArmReductionPlushy":{"pct":80,"min":75,"max":125}},"paco":{"fitCrossSeam":true,"fitCrossSeamFront":true,"fitCrossSeamBack":true,"fitGuides":false,"waistEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"seatEase":{"pct":5,"min":0,"max":15,"menu":"fit"},"kneeEase":0.06,"waistHeight":{"pct":5,"min":0,"max":100,"menu":"style"},"lengthBonus":{"pct":0,"min":-15,"max":10,"menu":"style"},"crotchDrop":{"pct":2,"min":0,"max":10,"menu":"style"},"fitKnee":false,"legBalance":{"pct":57.5,"min":52.5,"max":62.5,"menu":"advanced"},"crossSeamCurveStart":{"pct":85,"min":60,"max":100,"menu":"advanced"},"crossSeamCurveBend":{"pct":65,"min":45,"max":85,"menu":"advanced"},"crossSeamCurveAngle":{"deg":12,"min":0,"max":20,"menu":"advanced"},"crotchSeamCurveStart":{"pct":80,"min":60,"max":95,"menu":"advanced"},"crotchSeamCurveBend":{"pct":80,"min":45,"max":100,"menu":"advanced"},"crotchSeamCurveAngle":{"deg":25,"min":0,"max":35,"menu":"advanced"},"waistBalance":{"pct":60,"min":30,"max":90,"menu":"advanced"},"grainlinePosition":{"pct":45,"min":30,"max":60,"menu":"advanced"},"waistbandWidth":{"pct":3,"min":1,"max":6,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"elastic"},"titanPaperless":false,"frontPocketHeelRatio":0.4,"backPocketWaistRatio":0.4,"backPocketHeightRatio":0.4,"backPocketWidthRatio":0.37,"waistbandHeight":0,"elasticatedCuff":{"bool":true,"menu":"style"},"ankleElastic":{"pct":5,"min":1,"max":13,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"elastic"},"heelEase":{"pct":5,"min":0,"max":50,"menu":"elastic"},"frontPockets":{"bool":true,"menu":"pockets"},"backPockets":{"bool":false,"menu":"pockets"},"frontPocketFlapSize":{"pct":3,"min":3,"max":3,"snap":{"metric":1,"imperial":0.79375},"menu":false},"weltFactor":0.15},"penelope":{"dartMaximumDifference":0.344,"dartMinimumDifference":0.2,"dartMinimumWidth":0.006888,"dartSideMinimum":10,"dartBackControl1":0.114,"dartBackControl2":5,"dartBackControl3":4,"curvePlacement":2.4,"dart2offset":32,"dart2factor":0.8,"hipCurveDividerDown":40,"hipCurveDividerUp":3,"sideSeamShiftPercentage":0.006,"backVentWidth":0.1,"paperlessOffset":15,"curvedDartControlAngle":2,"curvedDartTopControlOffset":0.2,"curvedDartBottomControlOffset":0.4,"curvedDarts":{"bool":true,"menu":"style"},"lengthBonus":{"pct":0,"min":-50,"max":50,"menu":"style"},"hemBonus":{"pct":0,"min":-35,"max":0,"menu":"style"},"hem":{"pct":2,"min":0,"max":5,"menu":"style"},"backVent":{"bool":true,"menu":"style"},"backVentLength":{"pct":40,"min":5,"max":70},"zipperLocation":{"dflt":"backSeam","list":["backSeam","sideSeam"],"menu":"style"},"nrOfDarts":{"count":2,"min":1,"max":2,"menu":"style"},"seatEase":{"pct":1,"min":0,"max":8,"menu":"fit"},"waistEase":{"pct":1,"min":0,"max":8,"menu":"fit"},"backDartDepthFactor":{"pct":50,"min":35,"max":70,"menu":"advanced"},"frontDartDepthFactor":{"pct":45,"min":30,"max":65,"menu":"advanced"},"dartToSideSeamFactor":{"pct":50,"min":30,"max":70,"menu":"advanced"},"waistband":{"bool":true,"menu":"style"},"waistbandWidth":{"pct":10,"min":5,"max":20},"waistbandOverlap":{"pct":3.5,"min":0,"max":10}},"plugintest":{"plugin":{"dflt":"all","list":["all","annotations","flip","gore","i18n","measurements","mirror","round","sprinkle","title","versionfreeSvg"],"menu":"tests"},"bannerDy":{"count":-1,"min":-15,"max":15,"menu":"annotations.banner"},"bannerSpaces":{"count":10,"min":0,"max":20,"menu":"annotations.banner"},"bannerRepeat":{"count":10,"min":1,"max":20,"menu":"annotations.banner"},"bartackLength":{"count":15,"min":2,"max":100,"menu":"annotations.bartack"},"bartackAngle":{"count":0,"min":-360,"max":360,"menu":"annotations.bartack"},"bartackDensity":{"count":3,"min":1,"max":5,"menu":"annotations.bartack"},"bartackWidth":{"count":3,"min":1,"max":5,"menu":"annotations.bartack"},"bartackStart":{"pct":25,"min":0,"max":100,"menu":"annotations.bartack"},"bartackEnd":{"pct":75,"min":0,"max":100,"menu":"annotations.bartack"},"crossboxText":{"bool":true,"menu":"annotations.crossboxText"},"cutonfoldMargin":{"pct":5,"min":0,"max":25,"menu":"annotations.cutonfold"},"cutonfoldOffset":{"count":15,"min":0,"max":100,"menu":"annotations.cutonfold"},"cutonfoldGrainline":{"bool":false,"menu":"annotations.cutonfold"},"dimensionsCustomText":{"bool":false,"menu":"annotations.dimensions"},"dimensionsEndMarker":{"bool":true,"menu":"annotations.dimensions"},"dimensionsStartMarker":{"bool":true,"menu":"annotations.dimensions"},"logoScale":{"pct":100,"min":10,"max":200,"menu":"annotations.logo"},"logoRotate":{"deg":0,"min":-360,"max":360,"menu":"annotations.logo"},"pleatMargin":{"count":35,"min":0,"max":50,"menu":"annotations.pleat"},"pleatReverse":{"bool":false,"menu":"annotations.pleat"},"scaleboxRotation":{"deg":0,"min":0,"max":360,"menu":"annotations.scalebox"},"scaleboxText":{"dflt":"default","list":["default","custom","suppress"],"menu":"annotations.scalebox"},"sewtogetherHinge":{"bool":true,"menu":"annotations.sewtogether"},"sewtogetherMiddle":{"bool":false,"menu":"annotations.sewtogether"},"titleNr":{"count":1,"min":0,"max":100,"menu":"annotations.title"},"titleTitle":{"bool":true,"menu":"annotations.title"},"titleMeta":{"bool":true,"menu":"annotations.title"},"titleScale":{"pct":100,"min":10,"max":200,"menu":"annotations.title"},"titleRotate":{"deg":0,"min":-360,"max":360,"menu":"annotations.title"},"snippetScale":{"pct":100,"min":10,"max":200,"menu":"annotations.snippets"},"snippetRotation":{"deg":0,"min":-360,"max":360,"menu":"annotations.snippets"},"flipAxis":{"dflt":"x","list":["x","y"],"menu":"flip"},"goreRadius":{"count":20,"min":10,"max":30,"menu":"gore"},"goreGoreNumber":{"count":6,"min":4,"max":8,"menu":"gore"},"goreExtraLength":{"count":10,"min":0,"max":20,"menu":"gore"},"mirrorLine":{"dflt":"a","list":["a","b","none"],"menu":"mirror"},"mirrorClone":{"bool":true,"menu":"mirror"},"roundRadius":{"count":10,"min":0,"max":50,"menu":"round"},"roundHide":{"bool":false,"menu":"round"},"sprinkleScale":{"pct":100,"min":10,"max":200,"menu":"sprinkle"},"sprinkleRotate":{"deg":0,"min":-360,"max":360,"menu":"sprinkle"},"sprinkleSnippet":{"dflt":"bnotch","list":["notch","bnotch","button","buttonhole","buttonhole-start","buttonhole-end","snap-stud","snap-socket","logo"],"menu":"sprinkle"}},"rendertest":{"width":{"mm":200,"min":50,"max":500,"testIgnore":false},"only":{"menu":"show","dflt":"false","list":["false","circles","colors","widths","styles","combos","text","snippets","macros"]}},"sandy":{"minimumOverlap":15,"seamlessFullCircle":{"bool":false,"menu":"construction"},"waistbandWidth":{"pct":4,"min":1,"max":8,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"style"},"waistbandPosition":{"pct":50,"min":0,"max":100,"menu":"fit"},"lengthBonus":{"pct":50,"min":10,"max":100,"menu":"style"},"circleRatio":{"pct":50,"min":20,"max":100,"menu":"style"},"waistbandOverlap":{"pct":3,"min":0,"max":15,"menu":"style"},"gathering":{"pct":0,"min":0,"max":200,"menu":"style"},"hemWidth":{"pct":2,"min":1,"max":10,"menu":"construction"},"waistbandShape":{"list":["straight","curved"],"dflt":"straight","menu":"fit"}},"shelly":{"neckEase":{"pct":50,"min":-30,"max":150,"menu":"fit"},"chestEase":{"pct":0,"min":-40,"max":50,"menu":"fit"},"straightSides":{"bool":true,"menu":"advanced"},"hipsEase":{"pct":0,"min":-30,"max":75,"menu":"advanced"},"bodyLength":{"pct":120,"min":20,"max":300,"menu":"style"},"neckBalance":{"pct":40,"min":0,"max":80,"menu":"fit"},"raglanScoopLength":{"pct":20,"min":0,"max":50,"menu":"advanced"},"raglanScoopMagnitude":{"pct":6,"min":0,"max":20,"menu":"advanced"},"hemWidth":{"pct":200,"min":0,"max":800,"menu":"construction"},"sideShape":{"pct":0,"min":-20,"max":20,"menu":"advanced"},"armholeTweakFactor":1.1,"bicepsPosition":0.2,"sleeveEase":{"pct":0,"min":-30,"max":50,"menu":"fit"},"wristEase":{"pct":0,"min":-30,"max":50,"menu":"fit"},"sleeveLength":{"pct":20,"min":0,"max":125,"menu":"style"},"sleeveHem":{"pct":200,"min":0,"max":800,"menu":"construction"},"neckbandLength":{"pct":80,"min":50,"max":100,"menu":"fit"},"neckbandWidth":{"pct":7.5,"min":0,"max":50,"menu":"fit"}},"shin":{"frontFactor":0.58,"legFrontFactor":0.48,"gussetFactor":0.0714,"angle":10,"elasticWidth":{"pct":10,"min":4,"max":20,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"style"},"stretch":{"pct":20,"min":10,"max":30,"menu":"fit"},"bulge":{"pct":2.5,"min":0,"max":5,"menu":"fit"},"legReduction":{"pct":5,"min":0,"max":10,"menu":"fit"},"rise":{"pct":0,"min":0,"max":25,"menu":"style"},"backRise":{"pct":5,"min":0,"max":10,"menu":"fit"}},"simon":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":5,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":10,"max":40,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":2,"min":0,"max":15,"menu":"fit"},"lengthBonus":{"pct":25,"min":-4,"max":60,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"backDarts":{"list":["auto","never","always"],"dflt":"auto","menu":"style"},"backDartShaping":{"pct":25,"min":5,"max":75,"menu":"advanced"},"boxPleat":{"bool":false,"menu":"style"},"boxPleatFold":{"pct":15,"min":10,"max":20,"menu":"advanced"},"boxPleatWidth":{"pct":7,"min":4,"max":10,"menu":"advanced"},"roundBack":{"pct":0,"min":0,"max":10,"menu":"fit"},"buttonholePlacketWidth":{"pct":8,"min":4,"max":12,"menu":"style.closure"},"buttonholePlacketFoldWidth":{"pct":16,"min":8,"max":24,"menu":"style.closure"},"buttonPlacketWidth":{"pct":5,"min":2,"max":8,"menu":"style.closure"},"hemCurve":{"pct":50,"min":25,"max":100,"menu":"style"},"hemStyle":{"list":["straight","baseball","slashed"],"dflt":"straight","menu":"style"},"hipsEase":{"pct":15,"min":10,"max":35,"menu":"fit"},"yokeHeight":{"pct":70,"min":40,"max":90,"menu":"style"},"sleevePlacketWidth":{"pct":13,"min":8,"max":18,"menu":"style.cuffs"},"waistEase":{"pct":15,"min":10,"max":35,"menu":"fit"},"buttonFreeLength":{"pct":2,"min":0,"max":15,"menu":"style.closure"},"extraTopButton":{"bool":true,"menu":"style.closure"},"separateButtonPlacket":{"bool":false,"menu":"style.closure"},"separateButtonholePlacket":{"bool":false,"menu":"style.closure"},"buttons":{"count":7,"min":4,"max":12,"menu":"style.closure"},"ffsa":{"pct":150,"min":100,"max":200,"menu":"advanced"},"collarAngle":{"deg":85,"min":60,"max":130,"menu":"style.collar"},"collarBend":{"pct":3.5,"min":0,"max":10,"menu":"style.collar"},"collarFlare":{"deg":3.5,"min":0,"max":10,"menu":"style.collar"},"collarGap":{"pct":2.5,"min":0,"max":6,"menu":"style.collar"},"collarRoll":{"pct":3,"min":0,"max":6,"menu":"style.collar"},"collarStandBend":{"deg":3,"min":0,"max":5,"menu":"style.collar"},"collarStandCurve":{"deg":2,"min":0,"max":5,"menu":"style.collar"},"collarStandWidth":{"pct":8,"min":3,"max":13,"menu":"style.collar"},"cuffOverlap":0.15,"barrelCuffNarrowButton":{"bool":true,"menu":"style.cuffs"},"cuffButtonRows":{"count":1,"min":1,"max":2,"menu":"style.cuffs"},"cuffDrape":{"pct":5,"min":0,"max":10,"menu":"style.cuffs"},"cuffLength":{"pct":10,"min":3,"max":15,"menu":"style.cuffs"},"cuffStyle":{"list":["roundedBarrelCuff","angledBarrelCuff","straightBarrelCuff","roundedFrenchCuff","angledFrenchCuff","straightFrenchCuff"],"dflt":"angledBarrelCuff","menu":"style.cuffs"},"buttonPlacketStyle":{"list":["classic","seamless"],"dflt":"classic"},"buttonholePlacketStyle":{"list":["classic","seamless"],"dflt":"seamless"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"sleeveLengthBonus":{"pct":3.5,"min":-40,"max":10,"menu":"fit"},"sleevePlacketLength":{"pct":25,"min":15,"max":35,"menu":"style.cuffs"},"splitYoke":{"bool":false,"menu":"style"}},"simone":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":5,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":10,"max":40,"menu":"fit"},"draftForHighBust":true,"shoulderEase":{"pct":2,"min":0,"max":15,"menu":"fit"},"lengthBonus":{"pct":25,"min":-4,"max":60,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"backDarts":{"list":["auto","never","always"],"dflt":"auto","menu":"style"},"backDartShaping":{"pct":25,"min":5,"max":75,"menu":"advanced"},"boxPleat":{"bool":false,"menu":"style"},"boxPleatFold":{"pct":15,"min":10,"max":20,"menu":"advanced"},"boxPleatWidth":{"pct":7,"min":4,"max":10,"menu":"advanced"},"roundBack":{"pct":0,"min":0,"max":10,"menu":"fit"},"buttonholePlacketWidth":{"pct":8,"min":4,"max":12,"menu":"style.closure"},"buttonholePlacketFoldWidth":{"pct":16,"min":8,"max":24,"menu":"style.closure"},"buttonPlacketWidth":{"pct":5,"min":2,"max":8,"menu":"style.closure"},"hemCurve":{"pct":50,"min":25,"max":100,"menu":"style"},"hemStyle":{"list":["straight","baseball","slashed"],"dflt":"straight","menu":"style"},"hipsEase":{"pct":15,"min":10,"max":35,"menu":"fit"},"yokeHeight":{"pct":70,"min":40,"max":90,"menu":"style"},"sleevePlacketWidth":{"pct":13,"min":8,"max":18,"menu":"style.cuffs"},"waistEase":{"pct":15,"min":10,"max":35,"menu":"fit"},"buttonFreeLength":{"pct":2,"min":0,"max":15,"menu":"style.closure"},"extraTopButton":{"bool":true,"menu":"style.closure"},"separateButtonPlacket":{"bool":false,"menu":"style.closure"},"separateButtonholePlacket":{"bool":false,"menu":"style.closure"},"buttons":{"count":7,"min":4,"max":12,"menu":"style.closure"},"ffsa":{"pct":150,"min":100,"max":200,"menu":"advanced"},"minimalDartShaping":5,"bustDartAngle":{"deg":10,"min":0,"max":20,"menu":"advanced"},"bustDartLength":{"pct":80,"min":50,"max":90,"menu":"advanced"},"frontDarts":{"bool":false,"menu":"advanced"},"frontDartLength":{"pct":45,"min":30,"max":60,"menu":"advanced"},"contour":{"pct":50,"min":30,"max":75,"menu":"style"},"bustAlignedButtons":{"dflt":"disabled","list":["even","split","disabled"],"menu":"style.closure"},"collarAngle":{"deg":85,"min":60,"max":130,"menu":"style.collar"},"collarBend":{"pct":3.5,"min":0,"max":10,"menu":"style.collar"},"collarFlare":{"deg":3.5,"min":0,"max":10,"menu":"style.collar"},"collarGap":{"pct":2.5,"min":0,"max":6,"menu":"style.collar"},"collarRoll":{"pct":3,"min":0,"max":6,"menu":"style.collar"},"collarStandBend":{"deg":3,"min":0,"max":5,"menu":"style.collar"},"collarStandCurve":{"deg":2,"min":0,"max":5,"menu":"style.collar"},"collarStandWidth":{"pct":8,"min":3,"max":13,"menu":"style.collar"},"cuffOverlap":0.15,"barrelCuffNarrowButton":{"bool":true,"menu":"style.cuffs"},"cuffButtonRows":{"count":1,"min":1,"max":2,"menu":"style.cuffs"},"cuffDrape":{"pct":5,"min":0,"max":10,"menu":"style.cuffs"},"cuffLength":{"pct":10,"min":3,"max":15,"menu":"style.cuffs"},"cuffStyle":{"list":["roundedBarrelCuff","angledBarrelCuff","straightBarrelCuff","roundedFrenchCuff","angledFrenchCuff","straightFrenchCuff"],"dflt":"angledBarrelCuff","menu":"style.cuffs"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"sleeveLengthBonus":{"pct":3.5,"min":-40,"max":10,"menu":"fit"},"sleevePlacketLength":{"pct":25,"min":15,"max":35,"menu":"style.cuffs"},"splitYoke":{"bool":false,"menu":"style"},"buttonPlacketStyle":{"list":["classic","seamless"],"dflt":"classic"},"buttonholePlacketStyle":{"list":["classic","seamless"],"dflt":"seamless"}},"skully":{"size":{"pct":75,"min":10,"max":300,"menu":"fit"}},"sven":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":10,"min":5,"max":30,"menu":"fit"},"cuffEase":{"pct":20,"min":0,"max":200,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":15,"min":0,"max":30,"menu":"style"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"waistEase":0.08,"sleeveLengthBonus":{"pct":3,"min":0,"max":10,"menu":"style"},"ribbingHeight":{"pct":8,"min":3,"max":15,"menu":"style"},"hipsEase":{"pct":8,"min":-4,"max":20,"menu":"fit"},"ribbing":{"bool":true,"menu":"style"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"ribbingStretch":{"pct":15,"min":0,"max":30,"menu":"fit"}},"tamiko":{"armholeDepthFactor":{"pct":50,"min":40,"max":60,"menu":"fit"},"chestEase":{"pct":2,"min":1,"max":20,"menu":"fit"},"flare":{"deg":15,"min":-10,"max":30,"menu":"style"},"lengthBonus":{"pct":13,"min":0,"max":60,"menu":"style"},"shoulderseamLength":{"pct":10,"min":5,"max":25,"menu":"style"},"draftForHighBust":{"bool":false,"menu":"fit"}},"teagan":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":0.05,"chestEase":{"pct":12,"min":5,"max":25,"menu":"fit"},"collarEase":0,"cuffEase":0,"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":0,"lengthBonus":{"pct":5,"min":-20,"max":60,"menu":"style"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":8,"min":4,"max":12,"menu":"fit"},"frontArmholeDeeper":0.005,"shoulderSlopeReduction":0,"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"sleeveWidthGuarantee":0.85,"sleeveLength":{"pct":30,"min":20,"max":100,"menu":"fit"},"fitWaist":{"bool":false,"menu":"fit"},"waistEase":{"pct":25,"min":8,"max":40},"hipsEase":{"pct":18,"min":8,"max":30,"menu":"fit"},"necklineDepth":{"pct":25,"min":20,"max":40,"menu":"style"},"necklineWidth":{"pct":30,"min":10,"max":50,"menu":"style"},"necklineBend":{"pct":30,"min":0,"max":70,"menu":"style"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveEase":{"pct":15,"min":5,"max":35,"menu":"style"}},"tiberius":{"headRatio":{"pct":100,"min":80,"max":120,"menu":"fit"},"armholeDrop":{"pct":110,"min":100,"max":150,"menu":"fit"},"lengthBonus":{"pct":90,"min":60,"max":130,"menu":"style"},"widthBonus":{"pct":100,"min":50,"max":130,"menu":"style"},"clavi":{"bool":false,"menu":"style.clavi"},"clavusLocation":{"pct":65,"min":50,"max":80,"menu":"style.clavi"},"clavusWidth":{"pct":100,"min":50,"max":150,"menu":"style.clavi"},"length":{"list":["toKnee","toMidLeg","toFloor"],"dflt":"toKnee","menu":"style"},"width":{"list":["toElbow","toShoulder","toMidArm"],"dflt":"toMidArm","menu":"style"},"forceWidth":{"bool":false,"menu":"advanced"}},"titan":{"fitCrossSeam":true,"fitCrossSeamFront":true,"fitCrossSeamBack":true,"fitGuides":true,"waistEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"seatEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"kneeEase":{"pct":6,"min":1,"max":25,"menu":"fit"},"waistHeight":{"pct":100,"min":0,"max":100,"menu":"style"},"lengthBonus":{"pct":2,"min":-20,"max":10,"menu":"style"},"crotchDrop":{"pct":2,"min":0,"max":15,"menu":"style"},"fitKnee":{"bool":false,"menu":"style"},"legBalance":{"pct":57.5,"min":52.5,"max":62.5,"menu":"advanced"},"crossSeamCurveStart":{"pct":85,"min":60,"max":100,"menu":"advanced"},"crossSeamCurveBend":{"pct":65,"min":45,"max":85,"menu":"advanced"},"crossSeamCurveAngle":{"deg":12,"min":0,"max":20,"menu":"advanced"},"crotchSeamCurveStart":{"pct":80,"min":60,"max":95,"menu":"advanced"},"crotchSeamCurveBend":{"pct":80,"min":45,"max":100,"menu":"advanced"},"crotchSeamCurveAngle":{"deg":25,"min":0,"max":35,"menu":"advanced"},"waistBalance":{"pct":60,"min":30,"max":90,"menu":"advanced"},"grainlinePosition":{"pct":45,"min":30,"max":60,"menu":"advanced"},"waistbandWidth":{"pct":3,"min":1,"max":6,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"advanced"}},"trayvon":{"tipWidth":{"pct":15,"min":5,"max":35,"snap":{"metric":1,"imperial":0.79375},"menu":"style"},"knotWidth":{"pct":8,"min":4,"max":12,"snap":{"metric":1,"imperial":0.79375},"menu":"style"},"lengthBonus":{"pct":0,"min":-50,"max":50,"menu":"style"}},"uma":{"xStretch":{"pct":15,"min":0,"max":50,"menu":"fit"},"yStretch":{"pct":15,"min":0,"max":50,"menu":"fit"},"gussetWidth":{"pct":15,"min":5,"max":24,"menu":"fit"},"gussetLength":{"pct":12.7,"min":10,"max":16,"menu":"fit"},"gussetPosition":{"pct":70,"min":5,"max":95,"menu":"fit"},"bulge":{"deg":0,"min":0,"max":30,"menu":"fit"},"rise":{"pct":46,"min":30,"max":100,"menu":"style"},"legRise":{"pct":54,"min":5,"max":95,"menu":"style"},"frontDip":{"pct":5,"min":-5,"max":15,"menu":"style"},"frontExposure":{"pct":70,"min":5,"max":100,"menu":"style"},"backDip":{"pct":2.5,"min":-5,"max":15,"menu":"style"},"backExposure":{"pct":30,"min":25,"max":125,"menu":"style"}},"wahid":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":false},"chestEase":{"pct":2,"min":1,"max":10,"menu":"fit"},"collarEase":{"pct":5,"min":0,"max":10,"menu":false},"cuffEase":{"pct":20,"min":0,"max":200,"menu":false},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":false},"lengthBonus":{"pct":1,"min":0,"max":8,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":false},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":false},"acrossBackFactor":0.97,"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":70,"min":60,"max":80,"menu":"fit"},"backNeckCutout":{"pct":5,"min":-2,"max":8,"menu":false},"frontArmholeDeeper":0.005,"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":false},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"frontOverlap":0.01,"necklineDrop":{"pct":50,"min":35,"max":85,"menu":"style"},"frontStyle":{"dflt":"classic","list":["classic","rounded"],"menu":"style"},"frontInset":{"pct":15,"min":10,"max":20,"menu":"advanced"},"shoulderInset":{"pct":10,"min":0,"max":20,"menu":"advanced"},"neckInset":{"pct":5,"min":0,"max":10,"menu":"advanced"},"hemStyle":{"dflt":"classic","list":["classic","rounded","square"],"menu":"style"},"hemRadius":{"pct":6,"min":2,"max":12,"menu":"style"},"pocketWidth":{"pct":10,"max":15,"min":8,"menu":"style"},"pocketAngle":{"deg":5,"min":0,"max":5,"menu":"advanced"},"pocketLocation":{"pct":35,"min":25,"max":55,"menu":"style"},"frontScyeDart":{"deg":6,"min":0,"max":12,"menu":"fit"},"buttons":{"count":6,"min":4,"max":12,"menu":"style"},"waistEase":{"pct":8,"min":2,"max":15,"menu":"fit"},"hipsEase":{"pct":8,"min":2,"max":15,"menu":"fit"},"backInset":{"pct":15,"min":10,"max":20,"menu":"advanced"},"centerBackDart":{"pct":2,"min":0,"max":5,"menu":"fit"},"backScyeDart":{"deg":2,"min":0,"max":6,"menu":"fit"},"weltHeight":{"pct":12.5,"max":20,"min":10,"menu":"style"}},"walburga":{"headRatio":{"pct":100,"min":80,"max":120,"menu":"fit"},"lengthBonus":{"pct":85,"min":60,"max":130,"menu":"style"},"widthBonus":{"pct":95,"min":50,"max":130,"menu":"style"},"length":{"list":["toKnee","toMidLeg","toFloor"],"dflt":"toKnee","menu":"style"},"neckline":{"bool":true,"menu":"style"},"neckoRatio":{"pct":100,"min":10,"max":190,"menu":"style"}},"waralee":{"backPocket":{"bool":true,"menu":"style"},"backPocketDepth":140,"backPocketHorizontalOffset":0.045,"backPocketSize":0.45,"backPocketVerticalOffset":0.2,"backRaise":{"pct":10,"min":0,"max":25,"menu":"fit"},"backWaistAdjustment":0.3,"crotchBack":{"pct":45,"min":10,"max":70,"menu":"advanced"},"crotchEase":1.08,"crotchFactorBackHor":{"pct":90,"min":10,"max":100,"menu":"advanced"},"crotchFactorBackVer":{"pct":60,"min":20,"max":90,"menu":"advanced"},"crotchFactorFrontHor":{"pct":90,"min":10,"max":100,"menu":"advanced"},"crotchFactorFrontVer":{"pct":30,"min":10,"max":70,"menu":"advanced"},"crotchFront":{"pct":30,"min":10,"max":70,"menu":"advanced"},"fitWaist":{"bool":true,"menu":"fit"},"frontPocket":{"bool":true,"menu":"style"},"frontPocketDepthFactor":1.6,"frontPocketHorizontalOffset":0.18,"frontPocketSize":0.45,"frontPocketStyle":{"dflt":"welt","list":["welt","waistband"],"menu":"style"},"frontPocketVerticalOffset":0.07,"frontWaistAdjustment":0.163,"hemWidth":{"pct":1.75,"min":1,"max":2.5,"menu":"style"},"knotInFront":{"bool":true,"menu":"style"},"legShortening":{"pct":25,"min":-10,"max":50,"menu":"style"},"minimizer":4,"separateWaistband":{"bool":false,"menu":"style"},"showMini":{"bool":true,"menu":"options"},"waistOverlap":{"pct":50,"min":10,"max":100,"menu":"style"},"waistRaise":{"pct":0,"min":-20,"max":40,"menu":"fit"},"waistbandWidth":{"pct":3.5,"min":2,"max":5,"menu":"style"}},"yuri":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":20,"min":10,"max":30,"menu":"fit"},"cuffEase":{"pct":30,"min":20,"max":60,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":10,"min":5,"max":15,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"sleeveLengthBonus":{"pct":1,"min":0,"max":10,"menu":"fit"},"hipsEase":{"pct":0,"min":0,"max":10,"menu":"fit"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"}},"otis":{"ease":{"pct":14,"min":0,"max":30,"menu":"fit"},"snapPlacket":{"pct":5,"min":0,"max":30,"menu":"advanced"},"sleeveType":{"dflt":"short","list":["short","long"],"menu":"style"},"hem":{"pct":10,"min":0,"max":30,"menu":"advanced"},"binding":{"pct":11,"min":2,"max":30,"menu":"advanced"}}}
+export const options = {"aaron":{"brianFitSleeve":false,"brianFitCollar":false,"collarFactor":4.8,"bicepsEase":0.05,"chestEase":{"pct":8,"min":0,"max":20,"menu":"style"},"collarEase":0,"cuffEase":0,"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":0,"lengthBonus":{"pct":10,"min":-20,"max":60,"menu":"style"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":0.97,"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":0.6,"backNeckCutout":0.05,"frontArmholeDeeper":0,"shoulderSlopeReduction":0,"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"hipsEase":{"pct":8,"min":0,"max":20,"menu":"fit"},"stretchFactor":{"pct":5,"min":0,"max":15,"menu":"fit"},"armholeDrop":{"pct":10,"min":0,"max":75,"menu":"style"},"necklineBend":{"pct":100,"min":40,"max":100,"menu":"style"},"necklineDrop":{"pct":20,"min":10,"max":35,"menu":"style"},"shoulderStrapWidth":{"pct":15,"min":10,"max":40,"menu":"style"},"shoulderStrapPlacement":{"pct":40,"min":20,"max":80,"menu":"style"},"backlineBend":{"pct":50,"min":25,"max":100,"menu":"style"},"knitBindingWidth":{"pct":600,"min":300,"max":800,"menu":"style"}},"albert":{"backOpening":{"pct":10,"min":0,"max":25,"menu":"fit"},"bibWidth":{"pct":100,"min":50,"max":125,"menu":"style"},"bibLength":{"pct":75,"min":0,"max":90,"menu":"style"},"lengthBonus":{"pct":0,"min":-20,"max":25,"menu":"style"},"chestDepth":{"pct":22,"min":15,"max":90,"menu":"fit"},"strapWidth":{"pct":60,"min":20,"max":100,"menu":"style"}},"bee":{"acrossBackFactor":0.925,"shoulderSlopeBack":1.23,"neckWidthBack":0.197,"neckWidthFront":0.17,"backDartLocation":0.145,"backCenterWaistReduction":0.35,"collarFactor":0.19,"bustSpanEase":{"pct":10,"min":0,"max":20,"menu":"fit"},"chestEase":{"pct":11,"min":5,"max":20,"menu":"fit"},"fullChestEaseReduction":{"pct":4,"min":0,"max":8,"menu":"fit"},"shoulderToShoulderEase":{"pct":-0.5,"min":-1,"max":5,"menu":"fit"},"waistEase":{"pct":5,"min":1,"max":20,"menu":"fit"},"backDartHeight":{"pct":46,"min":38,"max":54,"menu":"advanced"},"bustDartCurve":1,"bustDartLength":1,"waistDartLength":1,"armholeDepth":{"pct":44,"min":38,"max":46,"menu":"advanced"},"backArmholeCurvature":0.63,"backArmholePitchDepth":0.35,"backArmholeSlant":5,"frontArmholeCurvature":0.63,"frontArmholePitchDepth":{"pct":29,"max":31,"min":27,"menu":"advanced"},"backHemSlope":2.5,"backNeckCutout":0.06,"frontShoulderWidth":{"pct":95,"max":98,"min":92,"menu":"advanced"},"highBustWidth":{"pct":86,"max":92,"min":80,"menu":"advanced"},"ties":{"bool":true,"menu":"style"},"crossBackTies":{"bool":false,"menu":"style"},"bandLength":{"pct":85,"min":75,"max":90,"menu":"style"},"neckTieLength":{"pct":80,"min":70,"max":100,"menu":"style"},"neckTieWidth":{"pct":6,"min":2,"max":18,"snap":{"metric":[6,13,19,25,32,38],"imperial":[6.35,12.7,19.05,25.4,31.75,38.1]},"menu":"style"},"reversible":{"bool":false,"menu":"style"},"topDepth":{"pct":54,"min":50,"max":80,"menu":"fit"},"bottomCupDepth":{"pct":8,"min":0,"max":20,"menu":"fit"},"sideDepth":{"pct":20.6,"min":0,"max":30,"menu":"fit"},"sideCurve":{"pct":0,"min":-50,"max":50,"menu":"fit"},"frontCurve":{"pct":0,"min":-50,"max":50,"menu":"fit"},"bellaGuide":{"bool":false,"menu":"fit"},"pointedTieEnds":{"bool":false,"menu":"style"},"duoColorTies":{"bool":false,"menu":"style"},"bandTieWidth":{"pct":3,"min":1,"max":9,"snap":{"metric":[6,13,19,25,32,38],"imperial":[6.35,12.7,19.05,25.4,31.75,38.1]},"menu":"style"},"bandTieLength":{"pct":35,"min":30,"max":50,"menu":"style"}},"bella":{"acrossBackFactor":0.925,"shoulderSlopeBack":1.23,"neckWidthBack":0.197,"neckWidthFront":0.17,"backDartLocation":0.145,"backCenterWaistReduction":0.35,"collarFactor":0.19,"bustSpanEase":{"pct":10,"min":0,"max":20,"menu":"fit"},"chestEase":{"pct":11,"min":5,"max":20,"menu":"fit"},"fullChestEaseReduction":{"pct":4,"min":0,"max":8,"menu":"fit"},"shoulderToShoulderEase":{"pct":-0.5,"min":-1,"max":5,"menu":"fit"},"waistEase":{"pct":5,"min":1,"max":20,"menu":"fit"},"backDartHeight":{"pct":46,"min":38,"max":54,"menu":"darts"},"bustDartCurve":{"pct":100,"min":0,"max":100,"menu":"darts"},"bustDartLength":{"pct":90,"min":75,"max":100,"menu":"darts"},"waistDartLength":{"pct":90,"min":75,"max":95,"menu":"darts"},"armholeDepth":{"pct":44,"min":38,"max":46,"menu":"armhole"},"backArmholeCurvature":{"pct":63,"min":50,"max":85,"menu":"armhole"},"backArmholePitchDepth":{"pct":35,"max":40,"min":30,"menu":"armhole"},"backArmholeSlant":{"deg":5,"min":1,"max":9,"menu":"armhole"},"frontArmholeCurvature":{"pct":63,"min":50,"max":85,"menu":"armhole"},"frontArmholePitchDepth":{"pct":29,"max":31,"min":27,"menu":"armhole"},"backHemSlope":{"deg":2.5,"min":0,"max":5,"menu":"advanced"},"backNeckCutout":{"pct":6,"min":3,"max":9,"menu":"advanced"},"frontShoulderWidth":{"pct":95,"max":98,"min":92,"menu":"advanced"},"highBustWidth":{"pct":86,"max":92,"min":80,"menu":"advanced"}},"benjamin":{"transitionLength":2,"bandLength":0.17,"adjustmentRibbonWidth":20,"collarEase":{"pct":3,"min":0,"max":6,"menu":"fit"},"adjustmentRibbon":{"bool":false,"menu":"fit"},"tipWidth":{"pct":15,"min":0,"max":20,"menu":"style"},"knotWidth":{"pct":7,"min":5,"max":10,"menu":"style"},"bowLength":{"pct":28,"min":23,"max":33,"menu":"style"},"bowStyle":{"dflt":"butterfly","list":["diamond","butterfly","square","widesquare"],"menu":"style"},"endStyle":{"dflt":"straight","list":["straight","pointed","rounded"],"menu":"style"},"collarBandHeight":{"pct":6,"min":5,"max":8,"menu":"style"}},"bent":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":20,"min":10,"max":40,"menu":"fit"},"chestEase":{"pct":8,"min":-4,"max":20,"menu":"fit"},"collarEase":{"pct":3.5,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":40,"min":2,"max":100,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":0,"min":-4,"max":60,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":97,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":5,"min":-10,"max":50},"armholeDepthFactor":{"pct":60,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.5,"min":0,"max":1.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"sleeveLengthBonus":{"pct":0,"min":-20,"max":15,"menu":"fit"},"sleeveBend":{"deg":10,"min":0,"max":20,"menu":"fit"},"sleevecapHeight":{"pct":45,"min":40,"max":60,"menu":"advanced"},"sleevecapEase":{"pct":1,"min":0,"max":10,"menu":"advanced"}},"bob":{"neckRatio":{"pct":80,"min":70,"max":90,"menu":"fit"},"widthRatio":{"pct":45,"min":35,"max":55,"menu":"fit"},"lengthRatio":{"pct":75,"min":55,"max":85,"menu":"fit"},"headSize":{"pct":100,"min":10,"max":200,"snap":5,"menu":"size"}},"breanna":{"collarFactor":4.8,"armholeDepthBase":0.6,"shoulderSeamLength":0.95,"sleeveWidthGuarantee":0.9,"breannaFitSleeve":true,"breannaFitCollar":true,"shoulderDart":{"bool":false,"menu":"fit"},"waistDart":{"bool":true,"menu":"fit"},"primaryBustDart":{"list":["06:00","07:00","08:00","09:00","10:00","11:00","11:30","12:00","12:30","13:00","13:30","14:00","15:00","16:00","17:00"],"dflt":"06:00","doNotTranslate":true,"menu":"style"},"secondaryBustDart":{"list":["none","06:00","07:00","08:00","09:00","10:00","11:00","11:30","12:00","12:30","13:00","13:30","14:00","15:00","16:00","17:00"],"dflt":"13:30","doNotTranslate":true,"menu":"style"},"acrossBackFactor":{"pct":96,"min":93,"max":100,"menu":"advanced"},"armholeDepthFactor":{"pct":100,"min":80,"max":120,"menu":"advanced"},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"shoulderDartSize":{"pct":7,"min":4,"max":10},"shoulderDartLength":{"pct":85,"min":60,"max":100},"waistDartSize":{"pct":10,"min":4,"max":15},"waistDartLength":{"pct":85,"min":60,"max":100},"verticalEase":{"pct":2,"min":0,"max":8,"menu":"fit"},"frontArmholeDeeper":{"pct":1,"min":0,"max":5,"menu":"advanced"},"shoulderEase":{"pct":0,"min":0,"max":4,"menu":"fit"},"collarEase":{"pct":3.5,"min":0,"max":10,"menu":"fit"},"chestEase":{"pct":10,"min":5,"max":20,"menu":"fit"},"waistEase":{"pct":10,"min":5,"max":20,"menu":"fit"},"primaryBustDartShaping":{"pct":50,"min":25,"max":75,"menu":"style"},"primaryBustDartLength":{"pct":85,"min":65,"max":95,"menu":"style"},"secondaryBustDartLength":{"pct":85,"min":65,"max":95,"menu":"style"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":100,"menu":"advanced"},"frontScyeDart":{"pct":25,"min":0,"max":45,"menu":"fit"},"sleevecapEase":{"pct":0.5,"min":0,"max":2.5,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":110,"min":35,"max":165,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":45,"min":35,"max":55,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":3,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":5.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":4.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":12.5,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":12.5,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":12.5,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":12.5,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"cuffEase":{"pct":20,"min":0,"max":50,"menu":"fit"},"sleeveLengthBonus":{"pct":0,"min":-40,"max":10,"menu":"style"}},"brian":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":5,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":0,"max":200,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":0,"min":-4,"max":60,"menu":"style"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"sleeveLengthBonus":{"pct":0,"min":-40,"max":10,"menu":"style"}},"bruce":{"hipRatioFront":0.245,"hipRatioBack":0.315,"legRatioInset":0.3,"legRatioBack":0.32,"gussetRatio":0.0666,"gussetInsetRatio":0.6,"heightRatioInset":0.65,"bulge":{"deg":20,"min":0,"max":40,"menu":"fit"},"legBonus":{"pct":0,"min":-10,"max":20,"menu":"style"},"rise":{"pct":10,"min":0,"max":25,"menu":"style"},"stretch":{"pct":15,"min":5,"max":25,"menu":"fit"},"legStretch":{"pct":40,"min":25,"max":45,"menu":"fit"},"backRise":{"pct":5,"min":0,"max":10,"menu":"fit"}},"carlita":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":20,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":10,"min":5,"max":20,"menu":"fit"},"collarEase":0.145,"cuffEase":{"pct":60,"min":30,"max":100,"menu":"fit"},"draftForHighBust":true,"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":0,"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":97,"min":93,"max":100,"menu":"fit"},"armholeDepth":{"pct":5,"min":-10,"max":50},"armholeDepthFactor":{"pct":65,"min":50,"max":70,"menu":"fit"},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.5,"min":0,"max":1.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":12,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"buttonSpacingHorizontal":{"pct":43.5,"min":15,"max":60,"menu":"style"},"length":{"pct":69,"min":35,"max":100,"menu":"style"},"lapelReduction":{"pct":5,"min":0,"max":10,"menu":"advanced"},"frontOverlap":{"pct":1.5,"min":1,"max":2,"menu":"advanced"},"pocketPlacementHorizontal":{"pct":11,"min":5,"max":20,"menu":"pockets"},"pocketPlacementVertical":{"pct":6,"min":5,"max":60,"menu":"pockets"},"pocketWidth":{"pct":95,"min":70,"max":120,"menu":"pockets"},"pocketHeight":{"pct":15,"min":0,"max":40,"menu":"pockets"},"pocketRadius":{"pct":20,"min":0,"max":50,"menu":"pockets"},"pocketFlapRadius":{"pct":15,"min":0,"max":50,"menu":"pockets"},"chestPocketPlacement":{"pct":55,"min":30,"max":65,"menu":"pockets"},"chestPocketAngle":0,"chestPocketHeight":{"pct":60,"min":40,"max":80,"menu":"pockets"},"chestPocketWidth":{"pct":25,"min":15,"max":50,"menu":"pockets"},"innerPocketPlacement":{"pct":53,"min":42,"max":62,"menu":"pockets"},"innerPocketWidth":{"pct":50,"min":45,"max":65,"menu":"pockets"},"waistEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"seatEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"innerPocketWeltHeight":{"pct":3.5,"min":2.5,"max":5,"menu":"pockets"},"contour":{"pct":50,"min":25,"max":75,"menu":"advanced"},"backPleat":0.048,"beltWidth":{"pct":15,"min":10,"max":20,"menu":"style"},"sleeveLengthBonus":{"pct":7,"min":0,"max":20,"menu":"fit"},"sleeveBend":{"deg":10,"min":0,"max":20,"menu":"fit"},"sleevecapHeight":{"pct":45,"min":40,"max":60,"menu":"advanced"},"sleevecapEase":{"pct":1,"min":0,"max":10,"menu":"advanced"},"cuffLength":{"pct":15,"min":10,"max":20,"menu":"style"},"chestShapingMax":5,"collarHeight":{"pct":9.6,"min":8,"max":11,"menu":"collar"},"collarFlare":{"pct":20,"min":0,"max":40,"menu":"collar"},"collarSpread":{"deg":4,"min":2,"max":6,"menu":"collar"},"innerPocketDepth":{"pct":110,"min":75,"max":140,"menu":"pockets"}},"carlton":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":20,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":10,"min":5,"max":20,"menu":"fit"},"collarEase":0.145,"cuffEase":{"pct":60,"min":30,"max":100,"menu":"fit"},"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":0,"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":97,"min":93,"max":100,"menu":"fit"},"armholeDepth":{"pct":5,"min":-10,"max":50},"armholeDepthFactor":{"pct":65,"min":50,"max":70,"menu":"fit"},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.5,"min":0,"max":1.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":12,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"buttonSpacingHorizontal":{"pct":43.5,"min":15,"max":60,"menu":"style"},"length":{"pct":69,"min":35,"max":100,"menu":"style"},"lapelReduction":{"pct":5,"min":0,"max":10,"menu":"advanced"},"frontOverlap":{"pct":1.5,"min":1,"max":2,"menu":"advanced"},"pocketPlacementHorizontal":{"pct":11,"min":5,"max":20,"menu":"pockets"},"pocketPlacementVertical":{"pct":6,"min":5,"max":60,"menu":"pockets"},"pocketWidth":{"pct":95,"min":70,"max":120,"menu":"pockets"},"pocketHeight":{"pct":15,"min":0,"max":40,"menu":"pockets"},"pocketRadius":{"pct":20,"min":0,"max":50,"menu":"pockets"},"pocketFlapRadius":{"pct":15,"min":0,"max":50,"menu":"pockets"},"chestPocketPlacement":{"pct":55,"min":30,"max":65,"menu":"pockets"},"chestPocketAngle":{"deg":4,"min":0,"max":6,"menu":"pockets"},"chestPocketHeight":{"pct":60,"min":40,"max":80,"menu":"pockets"},"chestPocketWidth":{"pct":25,"min":15,"max":50,"menu":"pockets"},"innerPocketPlacement":{"pct":53,"min":42,"max":62,"menu":"pockets"},"innerPocketWidth":{"pct":50,"min":45,"max":65,"menu":"pockets"},"waistEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"seatEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"innerPocketWeltHeight":{"pct":3.5,"min":2.5,"max":5,"menu":"pockets"},"backPleat":0.048,"beltWidth":{"pct":15,"min":10,"max":20,"menu":"style"},"sleeveLengthBonus":{"pct":7,"min":0,"max":20,"menu":"fit"},"sleeveBend":{"deg":10,"min":0,"max":20,"menu":"fit"},"sleevecapHeight":{"pct":45,"min":40,"max":60,"menu":"advanced"},"sleevecapEase":{"pct":1,"min":0,"max":10,"menu":"advanced"},"cuffLength":{"pct":15,"min":10,"max":20,"menu":"style"},"chestShapingMax":5,"collarHeight":{"pct":9.6,"min":8,"max":11,"menu":"collar"},"collarFlare":{"pct":20,"min":0,"max":40,"menu":"collar"},"collarSpread":{"deg":4,"min":2,"max":6,"menu":"collar"},"innerPocketDepth":{"pct":110,"min":75,"max":140,"menu":"pockets"}},"cathrin":{"waistReduction":{"pct":10,"min":2,"max":20,"menu":"fit"},"panels":{"list":["11","13"],"dflt":"13","menu":"fit"},"backOpening":{"pct":4,"min":3,"max":10,"menu":"style"},"backRise":{"pct":15,"min":1,"max":25,"menu":"style"},"backDrop":{"pct":2,"min":0,"max":5,"menu":"style"},"frontRise":{"pct":4,"min":0.1,"max":8,"menu":"style"},"frontDrop":{"pct":5,"min":0,"max":10,"menu":"style"},"hipRise":{"pct":5,"min":0,"max":15,"menu":"style"}},"charlie":{"fitCrossSeam":true,"fitCrossSeamFront":true,"fitCrossSeamBack":true,"fitGuides":false,"waistEase":{"pct":1,"min":0,"max":5,"menu":"fit"},"seatEase":{"pct":5,"min":0,"max":10,"menu":"fit"},"kneeEase":{"pct":15,"min":10,"max":30,"menu":"fit"},"waistHeight":{"pct":-4,"min":-15,"max":40,"menu":"style"},"lengthBonus":{"pct":2,"min":-20,"max":10,"menu":"style"},"crotchDrop":{"pct":2,"min":0,"max":15,"menu":"style"},"fitKnee":true,"legBalance":{"pct":57.5,"min":52.5,"max":62.5,"menu":"advanced"},"crossSeamCurveStart":{"pct":85,"min":60,"max":100,"menu":"advanced"},"crossSeamCurveBend":{"pct":65,"min":45,"max":85,"menu":"advanced"},"crossSeamCurveAngle":{"deg":12,"min":0,"max":20,"menu":"advanced"},"crotchSeamCurveStart":{"pct":80,"min":60,"max":95,"menu":"advanced"},"crotchSeamCurveBend":{"pct":80,"min":45,"max":100,"menu":"advanced"},"crotchSeamCurveAngle":{"deg":25,"min":0,"max":35,"menu":"advanced"},"waistBalance":{"pct":55,"min":30,"max":90,"menu":"advanced"},"grainlinePosition":{"pct":50,"min":30,"max":60,"menu":"advanced"},"waistbandWidth":{"pct":3,"min":1,"max":6,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"style"},"waistbandReduction":0.25,"waistbandFactor":0.1,"frontPocketSlantDepth":{"pct":85,"min":70,"max":100,"menu":"pockets.frontpockets"},"frontPocketSlantWidth":{"pct":25,"min":15,"max":35,"menu":"pockets.frontpockets"},"frontPocketSlantRound":{"pct":30,"min":5,"max":50,"menu":"pockets.frontpockets"},"frontPocketSlantBend":{"pct":25,"min":5,"max":50,"menu":"pockets.frontpockets"},"frontPocketWidth":{"pct":55,"min":45,"max":65,"menu":"pockets.frontpockets"},"frontPocketDepth":{"pct":100,"min":85,"max":110,"menu":"pockets.frontpockets"},"frontPocketFacing":{"pct":45,"min":25,"max":65,"menu":"pockets.frontpockets"},"flyCurve":{"pct":72,"min":50,"max":100,"menu":"advanced.fly"},"flyLength":{"pct":45,"min":30,"max":60,"menu":"advanced.fly"},"flyWidth":{"pct":15,"min":10,"max":20,"menu":"advanced.fly"},"backPocketVerticalPlacement":{"pct":24,"min":18,"max":30,"menu":"pockets.backpockets"},"backPocketHorizontalPlacement":{"pct":55,"min":48,"max":62,"menu":"pockets.backpockets"},"backPocketWidth":{"pct":55,"min":50,"max":60,"menu":"pockets.backpockets"},"backPocketDepth":{"pct":60,"min":40,"max":80,"menu":"pockets.backpockets"},"backPocketFacing":{"bool":true,"menu":"pockets.backpockets"},"waistbandCurve":{"pct":0,"min":0,"max":35,"menu":"fit"},"beltLoops":{"count":8,"min":6,"max":12,"menu":"advanced"}},"cornelius":{"pctAtoO":0.5,"pctAtoC":0.25,"pctUtoA":0.25,"pctJtoA":0.25,"pctSeatAdjustment":0.5,"ventLength":{"pct":70,"min":25,"max":110,"menu":"style"},"fullness":{"pct":0,"min":0,"max":55,"menu":"fit"},"waistbandBelowWaist":{"pct":5,"min":0,"max":15,"menu":"style"},"waistReduction":{"pct":1,"min":-2,"max":10,"menu":"fit"},"bandBelowKnee":{"pct":25,"min":15,"max":50,"menu":"advanced"},"pctZtoR":0.35,"pctRtoZin":0.75,"pctRtoZup":0.25,"pctRtoKin":0.75,"pctRtoKdown":0.25,"pctKtoRout":0.15,"pctKtoRup":0.25,"pctKtoH":0.7,"flyWidth":{"pct":0.38,"min":0.2,"max":0.6,"menu":"style"},"kneeToBelow":{"pct":94,"min":85,"max":110,"menu":"advanced"},"cuffWidth":{"pct":0,"min":-50,"max":150,"menu":"style"},"cuffStyle":{"dflt":"elegant","list":["traditional","elegant","keystone"],"menu":"style"}},"diana":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":5,"bicepsEase":{"pct":0,"min":-5,"max":50,"menu":"fit"},"chestEase":{"pct":0,"min":-10,"max":20,"menu":"fit"},"collarEase":0,"cuffEase":{"pct":20,"min":0,"max":30,"menu":"fit"},"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":0,"min":0,"max":50,"menu":"fit"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":{"pct":97,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":0,"min":0,"max":20,"menu":"advanced"},"armholeDepthFactor":{"pct":55,"min":50,"max":70,"menu":"advanced"},"backNeckCutout":0.05,"frontArmholeDeeper":{"pct":0,"min":0,"max":1.5,"menu":"advanced"},"shoulderSlopeReduction":0,"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"drapeAngle":{"deg":20,"min":10,"max":30,"menu":"style"},"sleeveLengthBonus":{"pct":0,"min":-40,"max":10,"menu":"fit"},"shoulderSeamLength":{"pct":35,"min":0.1,"max":60,"menu":"style"},"waistEase":{"pct":0,"min":-10,"max":20,"menu":"fit"},"hipsEase":{"pct":0,"min":-10,"max":20,"menu":"fit"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":100,"min":35,"max":165,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":3,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":5.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":4.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":6,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"}},"examples":{"size":{"pct":50,"min":5,"max":100,"menu":"stack"},"x":{"pct":0,"min":-100,"max":100,"menu":"stack"},"y":{"pct":0,"min":-100,"max":100,"menu":"stack"},"stackIt":{"dflt":"Do stack","list":["Do stack","Do not stack"],"menu":"stack"}},"florence":{"length":{"pct":40,"min":35,"max":45,"menu":"fit"},"height":{"pct":26,"min":23,"max":29,"menu":"fit"},"curve":{"pct":12.5,"min":10,"max":15,"menu":"fit"}},"florent":{"topSide":0.8,"brim":0,"headEase":{"pct":2,"min":0,"max":5,"menu":"fit"}},"gozer":{},"hi":{"length":1000,"size":{"pct":100,"min":5,"max":500,"menu":"style"},"nosePointiness":{"pct":0,"min":-5,"max":10,"menu":"style"},"aggressive":{"bool":false,"menu":"style"},"hungry":{"pct":50,"min":0,"max":100,"menu":"style"}},"holmes":{"headEase":{"pct":3,"min":0,"max":9,"snap":{"metric":[6,13,19,25,32,38,44,50],"imperial":[6.35,12.7,19.05,25.4,31.75,38.1,44.45,50.8]},"menu":"fit"},"lengthRatio":{"pct":55,"min":40,"max":60,"menu":"style"},"gores":{"count":6,"min":4,"max":20,"menu":"style"},"visorAngle":{"deg":45,"min":10,"max":90,"menu":"style"},"visorWidth":{"pct":5,"min":1,"max":17,"snap":5,"menu":"style"},"visorLength":{"pct":100,"min":80,"max":150,"menu":"advanced"},"earLength":{"pct":100,"min":80,"max":150,"menu":"style"},"earWidth":{"pct":100,"min":80,"max":150,"menu":"style"},"buttonhole":{"bool":false,"menu":"style"}},"hortensia":{"width":230,"height":330,"size":{"pct":50,"min":20,"max":200,"menu":"style"},"zipperSize":{"dflt":"#5","list":["#3","#4","#4.5","#5","#6","#8","#10","invisible"],"menu":"style"},"minHandleSpaceWidth":80,"maxHandleSpaceWidth":250,"pctHandleSpace":50,"pctHandleVert":42,"handleWidth":{"pct":8.6,"min":4,"max":25,"menu":"style"},"strapLength":{"pct":160,"min":75,"max":250,"menu":"style"}},"huey":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":5,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":0,"max":200,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":0,"min":-4,"max":60,"menu":"style"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"ribbing":{"bool":true,"menu":"style"},"ribbingHeight":{"pct":10,"min":5,"max":15,"menu":"style"},"hipsEase":{"pct":8,"min":4,"max":12,"menu":"fit"},"pocket":{"bool":true,"menu":"style"},"pocketHeight":{"pct":30,"min":25,"max":35,"menu":"style"},"pocketWidth":{"pct":60,"min":50,"max":70,"menu":"style"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"sleeveLengthBonus":{"pct":0,"min":-40,"max":10,"menu":"style"},"hoodHeight":{"pct":59,"min":55,"max":65,"menu":"style"},"hoodCutback":{"pct":10,"min":5,"max":15,"menu":"style"},"hoodClosure":{"pct":13.5,"min":10,"max":15,"menu":"style"},"hoodDepth":{"pct":8.5,"min":5,"max":12,"menu":"style"},"hoodAngle":{"deg":5,"min":2,"max":8,"menu":"style"},"ribbingStretch":{"pct":15,"min":0,"max":30,"menu":"fit"}},"hugo":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":8,"min":4,"max":20,"menu":"fit"},"collarEase":0.05,"cuffEase":{"pct":20,"min":10,"max":50,"menu":"fit"},"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":0,"lengthBonus":{"pct":10,"min":0,"max":20,"menu":"style"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":0.5,"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":0,"shoulderSlopeReduction":0,"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"hipsEase":{"pct":12,"min":4,"max":20,"menu":"fit"},"ribbingHeight":{"pct":10,"min":4,"max":20,"menu":"style"},"pocketWidth":{"pct":50,"min":35,"max":65,"menu":"style"},"sleevecapEase":0,"sleevecapTopFactorX":0.5,"sleevecapTopFactorY":0.45,"sleevecapBackFactorX":0.6,"sleevecapBackFactorY":0.33,"sleevecapFrontFactorX":0.55,"sleevecapFrontFactorY":0.33,"sleevecapQ1Offset":0.017,"sleevecapQ2Offset":0.035,"sleevecapQ3Offset":0.025,"sleevecapQ4Offset":0.01,"sleevecapQ1Spread1":0.1,"sleevecapQ1Spread2":0.15,"sleevecapQ2Spread1":0.15,"sleevecapQ2Spread2":0.1,"sleevecapQ3Spread1":0.1,"sleevecapQ3Spread2":0.08,"sleevecapQ4Spread1":0.07,"sleevecapQ4Spread2":0.063,"sleeveWidthGuarantee":0.9,"sleeveLengthBonus":{"pct":2,"min":0,"max":10,"menu":"style"},"ribbingStretch":{"pct":5,"min":0,"max":10,"menu":"fit"}},"jaeger":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":5,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":0,"max":200,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":19,"min":10,"max":25,"menu":"fit"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"centerBackDart":{"pct":0.5,"min":0,"max":1.5,"menu":"fit"},"hipsEase":{"pct":12,"min":8,"max":20,"menu":"fit"},"waistEase":{"pct":14,"min":8,"max":25,"menu":"fit"},"rollLineCollarHeight":{"pct":6,"min":5,"max":9,"menu":"collar"},"reduceWaistStandardFraction":0.08,"reduceWaistDartFraction":0.05,"reduceHipsStandardFraction":0.1,"centerFrontHemDrop":{"pct":2,"min":0,"max":4,"menu":"style"},"frontPocketPlacement":{"pct":75,"min":65,"max":85,"menu":"pockets"},"frontPocketWidth":{"pct":68,"min":55,"max":75,"menu":"pockets"},"frontPocketDepth":{"pct":110,"min":80,"max":130,"menu":"pockets"},"frontPocketRadius":{"pct":10,"min":0,"max":50,"menu":"pockets"},"frontDartPlacement":{"pct":55,"min":45,"max":60,"menu":"advanced"},"sideFrontPlacement":{"pct":85,"min":80,"max":90,"menu":"advanced"},"frontOverlap":{"pct":1.5,"min":1,"max":2,"menu":"advanced"},"innerPocketPlacement":{"pct":52,"min":42,"max":62,"menu":"pockets"},"innerPocketWidth":{"pct":50,"min":45,"max":65,"menu":"pockets"},"innerPocketDepth":{"pct":110,"min":75,"max":140,"menu":"pockets"},"innerPocketWeltHeight":{"pct":3.5,"min":2.5,"max":5,"menu":"pockets"},"frontCutawayAngle":{"deg":2.5,"min":1,"max":4,"menu":"style"},"frontCutawayStart":{"pct":30,"min":10,"max":70,"menu":"style"},"frontCutawayEnd":{"pct":40,"min":10,"max":40,"menu":"style"},"hemRadius":{"pct":100,"min":35,"max":100,"menu":"style"},"chestPocketDepth":{"pct":110,"min":70,"max":150,"menu":"pockets"},"chestPocketWidth":{"pct":37,"min":30,"max":45,"menu":"pockets"},"chestPocketPlacement":{"pct":52,"min":40,"max":60,"menu":"pockets"},"chestPocketAngle":{"deg":2.5,"min":0,"max":7,"menu":"pockets"},"chestPocketWeltSize":{"pct":17.5,"min":10,"max":25,"menu":"pockets"},"lapelStart":{"pct":10,"min":0,"max":35,"menu":"style"},"collarHeight":{"pct":9,"min":7,"max":10,"menu":"collar"},"collarNotchDepth":{"pct":15,"min":15,"max":50,"menu":"collar"},"collarNotchAngle":{"deg":45,"min":30,"max":60,"menu":"collar"},"collarNotchReturn":{"pct":100,"min":50,"max":100,"menu":"collar"},"chestShaping":{"pct":30,"min":0,"max":100,"menu":"advanced"},"buttons":{"list":["1","2","3"],"dflt":"2","menu":"style"},"buttonLength":{"pct":30,"min":30,"max":60,"menu":"style"},"chestShapingMax":5,"lapelReduction":{"pct":5,"min":0,"max":10,"menu":"style"},"backVent":{"count":1,"min":0,"max":2,"menu":"style"},"backVentLength":{"pct":35,"min":15,"max":100,"menu":"style"},"collarSpread":{"deg":13,"min":5,"max":35,"menu":"collar"},"collarRoll":{"pct":5,"min":0,"max":10,"menu":"collar"},"pocketFoldover":{"pct":25,"min":15,"max":35,"menu":"pockets"},"sleeveLengthBonus":{"pct":0,"min":-20,"max":15,"menu":"fit"},"sleeveBend":{"deg":10,"min":0,"max":20,"menu":"fit"},"sleevecapHeight":{"pct":45,"min":40,"max":60,"menu":"advanced"},"sleevecapEase":{"pct":1,"min":0,"max":10,"menu":"advanced"},"sleeveVentLength":{"pct":35,"min":25,"max":55,"menu":"sleeves"},"sleeveVentWidth":{"pct":18,"min":10,"max":26,"menu":"sleeves"}},"legend":{},"lucy":{"width":{"pct":50,"min":30,"max":100,"menu":"style"},"length":{"pct":50,"min":30,"max":100,"menu":"style"},"edge":{"pct":25,"min":20,"max":50,"menu":"style"}},"lunetius":{"lengthRatio":{"pct":105,"min":60,"max":130,"menu":"style"},"widthRatio":{"pct":100,"min":50,"max":130,"menu":"style"},"length":{"list":["toKnee","toBelowKnee","toHips","toUpperLeg","toFloor"],"dflt":"toBelowKnee","menu":"style"}},"magde":{"size":{"pct":100,"min":15,"max":200,"menu":"style"},"taperRatio":{"pct":60,"min":50,"max":100,"menu":"style"},"flapHeightRatio":{"pct":83,"min":60,"max":100,"menu":"style"},"openingRatio":{"pct":66,"min":30,"max":90,"menu":"style"},"onePieceLid":{"bool":false,"menu":"style"},"useCommonWebbingSizes":{"bool":true,"menu":"style"}},"noble":{"acrossBackFactor":0.925,"shoulderSlopeBack":1.23,"neckWidthBack":0.197,"neckWidthFront":0.17,"backDartLocation":0.145,"backCenterWaistReduction":0.35,"collarFactor":0.19,"bustSpanEase":{"pct":0,"min":-5,"max":20,"menu":"fit"},"chestEase":{"pct":11,"min":5,"max":20,"menu":"fit"},"fullChestEaseReduction":{"pct":4,"min":0,"max":8,"menu":"fit"},"shoulderToShoulderEase":{"pct":-0.5,"min":-1,"max":5,"menu":"fit"},"waistEase":{"pct":5,"min":1,"max":20,"menu":"fit"},"backDartHeight":{"pct":46,"min":38,"max":54,"menu":"darts"},"bustDartCurve":1,"bustDartLength":0.9,"waistDartLength":{"pct":90,"min":75,"max":95,"menu":"darts"},"armholeDepth":{"pct":44,"min":38,"max":46,"menu":"armhole"},"backArmholeCurvature":{"pct":63,"min":50,"max":85,"menu":"armhole"},"backArmholePitchDepth":{"pct":35,"max":40,"min":30,"menu":"armhole"},"backArmholeSlant":{"deg":5,"min":1,"max":9,"menu":"armhole"},"frontArmholeCurvature":{"pct":63,"min":50,"max":85,"menu":"armhole"},"frontArmholePitchDepth":{"pct":29,"max":31,"min":27,"menu":"armhole"},"backHemSlope":{"deg":2.5,"min":0,"max":5,"menu":"advanced"},"backNeckCutout":{"pct":6,"min":3,"max":9,"menu":"advanced"},"frontShoulderWidth":{"pct":95,"max":98,"min":92,"menu":"advanced"},"highBustWidth":{"pct":86,"max":92,"min":80,"menu":"advanced"},"armholeDartPosition":{"pct":50,"min":10,"max":90},"dartPosition":{"dflt":"shoulder","list":["shoulder","armhole"],"menu":"darts"},"shoulderDartPosition":{"pct":50,"min":10,"max":90},"shoulderToShoulderCorrection":0.995,"upperDartLength":{"pct":90,"min":80,"max":95,"menu":"darts"}},"octoplushy":{"sizeConstant":200,"size":{"pct":100,"min":5,"max":500,"menu":"style"},"type":{"dflt":"octoplushy","list":["octoplushy","octopus","squid"],"menu":"style"},"armWidth":{"pct":15,"min":10,"max":30,"menu":"style"},"armLength":{"pct":200,"min":100,"max":500,"menu":"style"},"neckWidth":{"pct":25,"min":25,"max":45,"menu":"style"},"armTaper":{"pct":25,"min":0,"max":50,"menu":"style"},"bottomTopArmRatio":{"pct":57,"min":25,"max":75,"menu":"style"},"bottomArmReduction":{"pct":90,"min":75,"max":125},"bottomArmReductionPlushy":{"pct":80,"min":75,"max":125}},"paco":{"fitCrossSeam":true,"fitCrossSeamFront":true,"fitCrossSeamBack":true,"fitGuides":false,"waistEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"seatEase":{"pct":5,"min":0,"max":15,"menu":"fit"},"kneeEase":0.06,"waistHeight":{"pct":5,"min":0,"max":100,"menu":"style"},"lengthBonus":{"pct":0,"min":-15,"max":10,"menu":"style"},"crotchDrop":{"pct":2,"min":0,"max":10,"menu":"style"},"fitKnee":false,"legBalance":{"pct":57.5,"min":52.5,"max":62.5,"menu":"advanced"},"crossSeamCurveStart":{"pct":85,"min":60,"max":100,"menu":"advanced"},"crossSeamCurveBend":{"pct":65,"min":45,"max":85,"menu":"advanced"},"crossSeamCurveAngle":{"deg":12,"min":0,"max":20,"menu":"advanced"},"crotchSeamCurveStart":{"pct":80,"min":60,"max":95,"menu":"advanced"},"crotchSeamCurveBend":{"pct":80,"min":45,"max":100,"menu":"advanced"},"crotchSeamCurveAngle":{"deg":25,"min":0,"max":35,"menu":"advanced"},"waistBalance":{"pct":60,"min":30,"max":90,"menu":"advanced"},"grainlinePosition":{"pct":45,"min":30,"max":60,"menu":"advanced"},"waistbandWidth":{"pct":3,"min":1,"max":6,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"elastic"},"titanPaperless":false,"frontPocketHeelRatio":0.4,"backPocketWaistRatio":0.4,"backPocketHeightRatio":0.4,"backPocketWidthRatio":0.37,"waistbandHeight":0,"elasticatedCuff":{"bool":true,"menu":"style"},"ankleElastic":{"pct":5,"min":1,"max":13,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"elastic"},"heelEase":{"pct":5,"min":0,"max":50,"menu":"elastic"},"frontPockets":{"bool":true,"menu":"pockets"},"backPockets":{"bool":false,"menu":"pockets"},"frontPocketFlapSize":{"pct":3,"min":3,"max":3,"snap":{"metric":1,"imperial":0.79375},"menu":false},"weltFactor":0.15},"penelope":{"dartMaximumDifference":0.344,"dartMinimumDifference":0.2,"dartMinimumWidth":0.006888,"dartSideMinimum":10,"dartBackControl1":0.114,"dartBackControl2":5,"dartBackControl3":4,"curvePlacement":2.4,"dart2offset":32,"dart2factor":0.8,"hipCurveDividerDown":40,"hipCurveDividerUp":3,"sideSeamShiftPercentage":0.006,"backVentWidth":0.1,"paperlessOffset":15,"curvedDartControlAngle":2,"curvedDartTopControlOffset":0.2,"curvedDartBottomControlOffset":0.4,"curvedDarts":{"bool":true,"menu":"style"},"lengthBonus":{"pct":0,"min":-50,"max":50,"menu":"style"},"hemBonus":{"pct":0,"min":-35,"max":0,"menu":"style"},"hem":{"pct":2,"min":0,"max":5,"menu":"style"},"backVent":{"bool":true,"menu":"style"},"backVentLength":{"pct":40,"min":5,"max":70},"zipperLocation":{"dflt":"backSeam","list":["backSeam","sideSeam"],"menu":"style"},"nrOfDarts":{"count":2,"min":1,"max":2,"menu":"style"},"seatEase":{"pct":1,"min":0,"max":8,"menu":"fit"},"waistEase":{"pct":1,"min":0,"max":8,"menu":"fit"},"backDartDepthFactor":{"pct":50,"min":35,"max":70,"menu":"advanced"},"frontDartDepthFactor":{"pct":45,"min":30,"max":65,"menu":"advanced"},"dartToSideSeamFactor":{"pct":50,"min":30,"max":70,"menu":"advanced"},"waistband":{"bool":true,"menu":"style"},"waistbandWidth":{"pct":10,"min":5,"max":20},"waistbandOverlap":{"pct":3.5,"min":0,"max":10}},"plugintest":{"plugin":{"dflt":"all","list":["all","annotations","flip","gore","i18n","measurements","mirror","round","sprinkle","title","versionfreeSvg"],"menu":"tests"},"bannerDy":{"count":-1,"min":-15,"max":15,"menu":"annotations.banner"},"bannerSpaces":{"count":10,"min":0,"max":20,"menu":"annotations.banner"},"bannerRepeat":{"count":10,"min":1,"max":20,"menu":"annotations.banner"},"bartackLength":{"count":15,"min":2,"max":100,"menu":"annotations.bartack"},"bartackAngle":{"count":0,"min":-360,"max":360,"menu":"annotations.bartack"},"bartackDensity":{"count":3,"min":1,"max":5,"menu":"annotations.bartack"},"bartackWidth":{"count":3,"min":1,"max":5,"menu":"annotations.bartack"},"bartackStart":{"pct":25,"min":0,"max":100,"menu":"annotations.bartack"},"bartackEnd":{"pct":75,"min":0,"max":100,"menu":"annotations.bartack"},"crossboxText":{"bool":true,"menu":"annotations.crossboxText"},"cutonfoldMargin":{"pct":5,"min":0,"max":25,"menu":"annotations.cutonfold"},"cutonfoldOffset":{"count":15,"min":0,"max":100,"menu":"annotations.cutonfold"},"cutonfoldGrainline":{"bool":false,"menu":"annotations.cutonfold"},"dimensionsCustomText":{"bool":false,"menu":"annotations.dimensions"},"dimensionsEndMarker":{"bool":true,"menu":"annotations.dimensions"},"dimensionsStartMarker":{"bool":true,"menu":"annotations.dimensions"},"logoScale":{"pct":100,"min":10,"max":200,"menu":"annotations.logo"},"logoRotate":{"deg":0,"min":-360,"max":360,"menu":"annotations.logo"},"pleatMargin":{"count":35,"min":0,"max":50,"menu":"annotations.pleat"},"pleatReverse":{"bool":false,"menu":"annotations.pleat"},"scaleboxRotation":{"deg":0,"min":0,"max":360,"menu":"annotations.scalebox"},"scaleboxText":{"dflt":"default","list":["default","custom","suppress"],"menu":"annotations.scalebox"},"sewtogetherHinge":{"bool":true,"menu":"annotations.sewtogether"},"sewtogetherMiddle":{"bool":false,"menu":"annotations.sewtogether"},"titleNr":{"count":1,"min":0,"max":100,"menu":"annotations.title"},"titleTitle":{"bool":true,"menu":"annotations.title"},"titleMeta":{"bool":true,"menu":"annotations.title"},"titleScale":{"pct":100,"min":10,"max":200,"menu":"annotations.title"},"titleRotate":{"deg":0,"min":-360,"max":360,"menu":"annotations.title"},"snippetScale":{"pct":100,"min":10,"max":200,"menu":"annotations.snippets"},"snippetRotation":{"deg":0,"min":-360,"max":360,"menu":"annotations.snippets"},"flipAxis":{"dflt":"x","list":["x","y"],"menu":"flip"},"goreRadius":{"count":20,"min":10,"max":30,"menu":"gore"},"goreGoreNumber":{"count":6,"min":4,"max":8,"menu":"gore"},"goreExtraLength":{"count":10,"min":0,"max":20,"menu":"gore"},"mirrorLine":{"dflt":"a","list":["a","b","none"],"menu":"mirror"},"mirrorClone":{"bool":true,"menu":"mirror"},"roundRadius":{"count":10,"min":0,"max":50,"menu":"round"},"roundHide":{"bool":false,"menu":"round"},"sprinkleScale":{"pct":100,"min":10,"max":200,"menu":"sprinkle"},"sprinkleRotate":{"deg":0,"min":-360,"max":360,"menu":"sprinkle"},"sprinkleSnippet":{"dflt":"bnotch","list":["notch","bnotch","button","buttonhole","buttonhole-start","buttonhole-end","snap-stud","snap-socket","logo"],"menu":"sprinkle"}},"rendertest":{"width":{"mm":200,"min":50,"max":500,"testIgnore":false},"only":{"menu":"show","dflt":"false","list":["false","circles","colors","widths","styles","combos","text","snippets","macros"]}},"sandy":{"minimumOverlap":15,"seamlessFullCircle":{"bool":false,"menu":"construction"},"waistbandWidth":{"pct":4,"min":1,"max":8,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"style"},"waistbandPosition":{"pct":50,"min":0,"max":100,"menu":"fit"},"lengthBonus":{"pct":50,"min":10,"max":100,"menu":"style"},"circleRatio":{"pct":50,"min":20,"max":100,"menu":"style"},"waistbandOverlap":{"pct":3,"min":0,"max":15,"menu":"style"},"gathering":{"pct":0,"min":0,"max":200,"menu":"style"},"hemWidth":{"pct":2,"min":1,"max":10,"menu":"construction"},"waistbandShape":{"list":["straight","curved"],"dflt":"straight","menu":"fit"}},"shelly":{"neckEase":{"pct":50,"min":-30,"max":150,"menu":"fit"},"chestEase":{"pct":0,"min":-40,"max":50,"menu":"fit"},"straightSides":{"bool":true,"menu":"advanced"},"hipsEase":{"pct":0,"min":-30,"max":75,"menu":"advanced"},"bodyLength":{"pct":120,"min":20,"max":300,"menu":"style"},"neckBalance":{"pct":40,"min":0,"max":80,"menu":"fit"},"raglanScoopLength":{"pct":20,"min":0,"max":50,"menu":"advanced"},"raglanScoopMagnitude":{"pct":6,"min":0,"max":20,"menu":"advanced"},"hemWidth":{"pct":200,"min":0,"max":800,"menu":"construction"},"sideShape":{"pct":0,"min":-20,"max":20,"menu":"advanced"},"armholeTweakFactor":1.1,"bicepsPosition":0.2,"sleeveEase":{"pct":0,"min":-30,"max":50,"menu":"fit"},"wristEase":{"pct":0,"min":-30,"max":50,"menu":"fit"},"sleeveLength":{"pct":20,"min":0,"max":125,"menu":"style"},"sleeveHem":{"pct":200,"min":0,"max":800,"menu":"construction"},"neckbandLength":{"pct":80,"min":50,"max":100,"menu":"fit"},"neckbandWidth":{"pct":7.5,"min":0,"max":50,"menu":"fit"}},"shin":{"frontFactor":0.58,"legFrontFactor":0.48,"gussetFactor":0.0714,"angle":10,"elasticWidth":{"pct":10,"min":4,"max":20,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"style"},"stretch":{"pct":20,"min":10,"max":30,"menu":"fit"},"bulge":{"pct":2.5,"min":0,"max":5,"menu":"fit"},"legReduction":{"pct":5,"min":0,"max":10,"menu":"fit"},"rise":{"pct":0,"min":0,"max":25,"menu":"style"},"backRise":{"pct":5,"min":0,"max":10,"menu":"fit"}},"simon":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":5,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":10,"max":40,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":2,"min":0,"max":15,"menu":"fit"},"lengthBonus":{"pct":25,"min":-4,"max":60,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"backDarts":{"list":["auto","never","always"],"dflt":"auto","menu":"style"},"backDartShaping":{"pct":25,"min":5,"max":75,"menu":"advanced"},"boxPleat":{"bool":false,"menu":"style"},"boxPleatFold":{"pct":15,"min":10,"max":20,"menu":"advanced"},"boxPleatWidth":{"pct":7,"min":4,"max":10,"menu":"advanced"},"roundBack":{"pct":0,"min":0,"max":10,"menu":"fit"},"buttonholePlacketWidth":{"pct":8,"min":4,"max":12,"menu":"style.closure"},"buttonholePlacketFoldWidth":{"pct":16,"min":8,"max":24,"menu":"style.closure"},"buttonPlacketWidth":{"pct":5,"min":2,"max":8,"menu":"style.closure"},"hemCurve":{"pct":50,"min":25,"max":100,"menu":"style"},"hemStyle":{"list":["straight","baseball","slashed"],"dflt":"straight","menu":"style"},"hipsEase":{"pct":15,"min":10,"max":35,"menu":"fit"},"yokeHeight":{"pct":70,"min":40,"max":90,"menu":"style"},"sleevePlacketWidth":{"pct":13,"min":8,"max":18,"menu":"style.cuffs"},"waistEase":{"pct":15,"min":10,"max":35,"menu":"fit"},"buttonFreeLength":{"pct":2,"min":0,"max":15,"menu":"style.closure"},"extraTopButton":{"bool":true,"menu":"style.closure"},"separateButtonPlacket":{"bool":false,"menu":"style.closure"},"separateButtonholePlacket":{"bool":false,"menu":"style.closure"},"buttons":{"count":7,"min":4,"max":12,"menu":"style.closure"},"ffsa":{"pct":150,"min":100,"max":200,"menu":"advanced"},"collarAngle":{"deg":85,"min":60,"max":130,"menu":"style.collar"},"collarBend":{"pct":3.5,"min":0,"max":10,"menu":"style.collar"},"collarFlare":{"deg":3.5,"min":0,"max":10,"menu":"style.collar"},"collarGap":{"pct":2.5,"min":0,"max":6,"menu":"style.collar"},"collarRoll":{"pct":3,"min":0,"max":6,"menu":"style.collar"},"collarStandBend":{"deg":3,"min":0,"max":5,"menu":"style.collar"},"collarStandCurve":{"deg":2,"min":0,"max":5,"menu":"style.collar"},"collarStandWidth":{"pct":8,"min":3,"max":13,"menu":"style.collar"},"cuffOverlap":0.15,"barrelCuffNarrowButton":{"bool":true,"menu":"style.cuffs"},"cuffButtonRows":{"count":1,"min":1,"max":2,"menu":"style.cuffs"},"cuffDrape":{"pct":5,"min":0,"max":10,"menu":"style.cuffs"},"cuffLength":{"pct":10,"min":3,"max":15,"menu":"style.cuffs"},"cuffStyle":{"list":["roundedBarrelCuff","angledBarrelCuff","straightBarrelCuff","roundedFrenchCuff","angledFrenchCuff","straightFrenchCuff"],"dflt":"angledBarrelCuff","menu":"style.cuffs"},"buttonPlacketStyle":{"list":["classic","seamless"],"dflt":"classic"},"buttonholePlacketStyle":{"list":["classic","seamless"],"dflt":"seamless"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"sleeveLengthBonus":{"pct":3.5,"min":-40,"max":10,"menu":"fit"},"sleevePlacketLength":{"pct":25,"min":15,"max":35,"menu":"style.cuffs"},"splitYoke":{"bool":false,"menu":"style"}},"simone":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":5,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"cuffEase":{"pct":20,"min":10,"max":40,"menu":"fit"},"draftForHighBust":true,"shoulderEase":{"pct":2,"min":0,"max":15,"menu":"fit"},"lengthBonus":{"pct":25,"min":-4,"max":60,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"backDarts":{"list":["auto","never","always"],"dflt":"auto","menu":"style"},"backDartShaping":{"pct":25,"min":5,"max":75,"menu":"advanced"},"boxPleat":{"bool":false,"menu":"style"},"boxPleatFold":{"pct":15,"min":10,"max":20,"menu":"advanced"},"boxPleatWidth":{"pct":7,"min":4,"max":10,"menu":"advanced"},"roundBack":{"pct":0,"min":0,"max":10,"menu":"fit"},"buttonholePlacketWidth":{"pct":8,"min":4,"max":12,"menu":"style.closure"},"buttonholePlacketFoldWidth":{"pct":16,"min":8,"max":24,"menu":"style.closure"},"buttonPlacketWidth":{"pct":5,"min":2,"max":8,"menu":"style.closure"},"hemCurve":{"pct":50,"min":25,"max":100,"menu":"style"},"hemStyle":{"list":["straight","baseball","slashed"],"dflt":"straight","menu":"style"},"hipsEase":{"pct":15,"min":10,"max":35,"menu":"fit"},"yokeHeight":{"pct":70,"min":40,"max":90,"menu":"style"},"sleevePlacketWidth":{"pct":13,"min":8,"max":18,"menu":"style.cuffs"},"waistEase":{"pct":15,"min":10,"max":35,"menu":"fit"},"buttonFreeLength":{"pct":2,"min":0,"max":15,"menu":"style.closure"},"extraTopButton":{"bool":true,"menu":"style.closure"},"separateButtonPlacket":{"bool":false,"menu":"style.closure"},"separateButtonholePlacket":{"bool":false,"menu":"style.closure"},"buttons":{"count":7,"min":4,"max":12,"menu":"style.closure"},"ffsa":{"pct":150,"min":100,"max":200,"menu":"advanced"},"minimalDartShaping":5,"bustDartAngle":{"deg":10,"min":0,"max":20,"menu":"advanced"},"bustDartLength":{"pct":80,"min":50,"max":90,"menu":"advanced"},"frontDarts":{"bool":false,"menu":"advanced"},"frontDartLength":{"pct":45,"min":30,"max":60,"menu":"advanced"},"contour":{"pct":50,"min":30,"max":75,"menu":"style"},"bustAlignedButtons":{"dflt":"disabled","list":["even","split","disabled"],"menu":"style.closure"},"collarAngle":{"deg":85,"min":60,"max":130,"menu":"style.collar"},"collarBend":{"pct":3.5,"min":0,"max":10,"menu":"style.collar"},"collarFlare":{"deg":3.5,"min":0,"max":10,"menu":"style.collar"},"collarGap":{"pct":2.5,"min":0,"max":6,"menu":"style.collar"},"collarRoll":{"pct":3,"min":0,"max":6,"menu":"style.collar"},"collarStandBend":{"deg":3,"min":0,"max":5,"menu":"style.collar"},"collarStandCurve":{"deg":2,"min":0,"max":5,"menu":"style.collar"},"collarStandWidth":{"pct":8,"min":3,"max":13,"menu":"style.collar"},"cuffOverlap":0.15,"barrelCuffNarrowButton":{"bool":true,"menu":"style.cuffs"},"cuffButtonRows":{"count":1,"min":1,"max":2,"menu":"style.cuffs"},"cuffDrape":{"pct":5,"min":0,"max":10,"menu":"style.cuffs"},"cuffLength":{"pct":10,"min":3,"max":15,"menu":"style.cuffs"},"cuffStyle":{"list":["roundedBarrelCuff","angledBarrelCuff","straightBarrelCuff","roundedFrenchCuff","angledFrenchCuff","straightFrenchCuff"],"dflt":"angledBarrelCuff","menu":"style.cuffs"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"sleeveLengthBonus":{"pct":3.5,"min":-40,"max":10,"menu":"fit"},"sleevePlacketLength":{"pct":25,"min":15,"max":35,"menu":"style.cuffs"},"splitYoke":{"bool":false,"menu":"style"},"buttonPlacketStyle":{"list":["classic","seamless"],"dflt":"classic"},"buttonholePlacketStyle":{"list":["classic","seamless"],"dflt":"seamless"}},"skully":{"size":{"pct":75,"min":10,"max":300,"menu":"fit"}},"sven":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":10,"min":5,"max":30,"menu":"fit"},"cuffEase":{"pct":20,"min":0,"max":200,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":15,"min":0,"max":30,"menu":"style"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"waistEase":0.08,"sleeveLengthBonus":{"pct":3,"min":0,"max":10,"menu":"style"},"ribbingHeight":{"pct":8,"min":3,"max":15,"menu":"style"},"hipsEase":{"pct":8,"min":-4,"max":20,"menu":"fit"},"ribbing":{"bool":true,"menu":"style"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"},"ribbingStretch":{"pct":15,"min":0,"max":30,"menu":"fit"}},"tamiko":{"armholeDepthFactor":{"pct":50,"min":40,"max":60,"menu":"fit"},"chestEase":{"pct":2,"min":1,"max":20,"menu":"fit"},"flare":{"deg":15,"min":-10,"max":30,"menu":"style"},"lengthBonus":{"pct":13,"min":0,"max":60,"menu":"style"},"shoulderseamLength":{"pct":10,"min":5,"max":25,"menu":"style"},"draftForHighBust":{"bool":false,"menu":"fit"}},"teagan":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":0.05,"chestEase":{"pct":12,"min":5,"max":25,"menu":"fit"},"collarEase":0,"cuffEase":0,"draftForHighBust":{"bool":false,"menu":"fit"},"shoulderEase":0,"lengthBonus":{"pct":5,"min":-20,"max":60,"menu":"style"},"s3Collar":0,"s3Armhole":0,"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":8,"min":4,"max":12,"menu":"fit"},"frontArmholeDeeper":0.005,"shoulderSlopeReduction":0,"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"sleeveWidthGuarantee":0.85,"sleeveLength":{"pct":30,"min":20,"max":100,"menu":"fit"},"fitWaist":{"bool":false,"menu":"fit"},"waistEase":{"pct":25,"min":8,"max":40},"hipsEase":{"pct":18,"min":8,"max":30,"menu":"fit"},"necklineDepth":{"pct":25,"min":20,"max":40,"menu":"style"},"necklineWidth":{"pct":30,"min":10,"max":50,"menu":"style"},"necklineBend":{"pct":30,"min":0,"max":70,"menu":"style"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveEase":{"pct":15,"min":5,"max":35,"menu":"style"}},"tiberius":{"headRatio":{"pct":100,"min":80,"max":120,"menu":"fit"},"armholeDrop":{"pct":110,"min":100,"max":150,"menu":"fit"},"lengthBonus":{"pct":90,"min":60,"max":130,"menu":"style"},"widthBonus":{"pct":100,"min":50,"max":130,"menu":"style"},"clavi":{"bool":false,"menu":"style.clavi"},"clavusLocation":{"pct":65,"min":50,"max":80,"menu":"style.clavi"},"clavusWidth":{"pct":100,"min":50,"max":150,"menu":"style.clavi"},"length":{"list":["toKnee","toMidLeg","toFloor"],"dflt":"toKnee","menu":"style"},"width":{"list":["toElbow","toShoulder","toMidArm"],"dflt":"toMidArm","menu":"style"},"forceWidth":{"bool":false,"menu":"advanced"}},"titan":{"fitCrossSeam":true,"fitCrossSeamFront":true,"fitCrossSeamBack":true,"fitGuides":true,"waistEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"seatEase":{"pct":2,"min":0,"max":10,"menu":"fit"},"kneeEase":{"pct":6,"min":1,"max":25,"menu":"fit"},"waistHeight":{"pct":100,"min":0,"max":100,"menu":"style"},"lengthBonus":{"pct":2,"min":-20,"max":10,"menu":"style"},"crotchDrop":{"pct":2,"min":0,"max":15,"menu":"style"},"fitKnee":{"bool":false,"menu":"style"},"legBalance":{"pct":57.5,"min":52.5,"max":62.5,"menu":"advanced"},"crossSeamCurveStart":{"pct":85,"min":60,"max":100,"menu":"advanced"},"crossSeamCurveBend":{"pct":65,"min":45,"max":85,"menu":"advanced"},"crossSeamCurveAngle":{"deg":12,"min":0,"max":20,"menu":"advanced"},"crotchSeamCurveStart":{"pct":80,"min":60,"max":95,"menu":"advanced"},"crotchSeamCurveBend":{"pct":80,"min":45,"max":100,"menu":"advanced"},"crotchSeamCurveAngle":{"deg":25,"min":0,"max":35,"menu":"advanced"},"waistBalance":{"pct":60,"min":30,"max":90,"menu":"advanced"},"grainlinePosition":{"pct":45,"min":30,"max":60,"menu":"advanced"},"waistbandWidth":{"pct":3,"min":1,"max":6,"snap":{"metric":[3.5,5,10,12,20,25,30,40,50,60,80,100,120],"imperial":[3.175,6.35,9.524999999999999,12.7,15.875,19.049999999999997,25.4,31.75,38.099999999999994,44.449999999999996,50.8,76.19999999999999,101.6,127]},"menu":"advanced"}},"trayvon":{"tipWidth":{"pct":15,"min":5,"max":35,"snap":{"metric":1,"imperial":0.79375},"menu":"style"},"knotWidth":{"pct":8,"min":4,"max":12,"snap":{"metric":1,"imperial":0.79375},"menu":"style"},"lengthBonus":{"pct":0,"min":-50,"max":50,"menu":"style"}},"uma":{"xStretch":{"pct":15,"min":0,"max":50,"menu":"fit"},"yStretch":{"pct":15,"min":0,"max":50,"menu":"fit"},"gussetWidth":{"pct":15,"min":5,"max":24,"menu":"fit"},"gussetLength":{"pct":12.7,"min":10,"max":16,"menu":"fit"},"gussetPosition":{"pct":70,"min":5,"max":95,"menu":"fit"},"bulge":{"deg":0,"min":0,"max":30,"menu":"fit"},"rise":{"pct":46,"min":30,"max":100,"menu":"style"},"legRise":{"pct":54,"min":5,"max":95,"menu":"style"},"frontDip":{"pct":5,"min":-5,"max":15,"menu":"style"},"frontExposure":{"pct":70,"min":5,"max":100,"menu":"style"},"backDip":{"pct":2.5,"min":-5,"max":15,"menu":"style"},"backExposure":{"pct":30,"min":25,"max":125,"menu":"style"}},"wahid":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":false},"chestEase":{"pct":2,"min":1,"max":10,"menu":"fit"},"collarEase":{"pct":5,"min":0,"max":10,"menu":false},"cuffEase":{"pct":20,"min":0,"max":200,"menu":false},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":false},"lengthBonus":{"pct":1,"min":0,"max":8,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":false},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":false},"acrossBackFactor":0.97,"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":70,"min":60,"max":80,"menu":"fit"},"backNeckCutout":{"pct":5,"min":-2,"max":8,"menu":false},"frontArmholeDeeper":0.005,"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":false},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"frontOverlap":0.01,"necklineDrop":{"pct":50,"min":35,"max":85,"menu":"style"},"frontStyle":{"dflt":"classic","list":["classic","rounded"],"menu":"style"},"frontInset":{"pct":15,"min":10,"max":20,"menu":"advanced"},"shoulderInset":{"pct":10,"min":0,"max":20,"menu":"advanced"},"neckInset":{"pct":5,"min":0,"max":10,"menu":"advanced"},"hemStyle":{"dflt":"classic","list":["classic","rounded","square"],"menu":"style"},"hemRadius":{"pct":6,"min":2,"max":12,"menu":"style"},"pocketWidth":{"pct":10,"max":15,"min":8,"menu":"style"},"pocketAngle":{"deg":5,"min":0,"max":5,"menu":"advanced"},"pocketLocation":{"pct":35,"min":25,"max":55,"menu":"style"},"frontScyeDart":{"deg":6,"min":0,"max":12,"menu":"fit"},"buttons":{"count":6,"min":4,"max":12,"menu":"style"},"waistEase":{"pct":8,"min":2,"max":15,"menu":"fit"},"hipsEase":{"pct":8,"min":2,"max":15,"menu":"fit"},"backInset":{"pct":15,"min":10,"max":20,"menu":"advanced"},"centerBackDart":{"pct":2,"min":0,"max":5,"menu":"fit"},"backScyeDart":{"deg":2,"min":0,"max":6,"menu":"fit"},"weltHeight":{"pct":12.5,"max":20,"min":10,"menu":"style"}},"walburga":{"headRatio":{"pct":100,"min":80,"max":120,"menu":"fit"},"lengthBonus":{"pct":85,"min":60,"max":130,"menu":"style"},"widthBonus":{"pct":95,"min":50,"max":130,"menu":"style"},"length":{"list":["toKnee","toMidLeg","toFloor"],"dflt":"toKnee","menu":"style"},"neckline":{"bool":true,"menu":"style"},"neckoRatio":{"pct":100,"min":10,"max":190,"menu":"style"}},"waralee":{"backPocket":{"bool":true,"menu":"style"},"backPocketDepth":140,"backPocketHorizontalOffset":0.045,"backPocketSize":0.45,"backPocketVerticalOffset":0.2,"backRaise":{"pct":10,"min":0,"max":25,"menu":"fit"},"backWaistAdjustment":0.3,"crotchBack":{"pct":45,"min":10,"max":70,"menu":"advanced"},"crotchEase":1.08,"crotchFactorBackHor":{"pct":90,"min":10,"max":100,"menu":"advanced"},"crotchFactorBackVer":{"pct":60,"min":20,"max":90,"menu":"advanced"},"crotchFactorFrontHor":{"pct":90,"min":10,"max":100,"menu":"advanced"},"crotchFactorFrontVer":{"pct":30,"min":10,"max":70,"menu":"advanced"},"crotchFront":{"pct":30,"min":10,"max":70,"menu":"advanced"},"fitWaist":{"bool":true,"menu":"fit"},"frontPocket":{"bool":true,"menu":"style"},"frontPocketDepthFactor":1.6,"frontPocketHorizontalOffset":0.18,"frontPocketSize":0.45,"frontPocketStyle":{"dflt":"welt","list":["welt","waistband"],"menu":"style"},"frontPocketVerticalOffset":0.07,"frontWaistAdjustment":0.163,"hemWidth":{"pct":1.75,"min":1,"max":2.5,"menu":"style"},"knotInFront":{"bool":true,"menu":"style"},"legShortening":{"pct":25,"min":-10,"max":50,"menu":"style"},"minimizer":4,"separateWaistband":{"bool":false,"menu":"style"},"showMini":{"bool":true,"menu":"options"},"waistOverlap":{"pct":50,"min":10,"max":100,"menu":"style"},"waistRaise":{"pct":0,"min":-20,"max":40,"menu":"fit"},"waistbandWidth":{"pct":3.5,"min":2,"max":5,"menu":"style"}},"yuri":{"brianFitSleeve":true,"brianFitCollar":true,"collarFactor":4.8,"bicepsEase":{"pct":15,"min":0,"max":50,"menu":"fit"},"chestEase":{"pct":15,"min":-4,"max":35,"menu":"fit"},"collarEase":{"pct":20,"min":10,"max":30,"menu":"fit"},"cuffEase":{"pct":30,"min":20,"max":60,"menu":"fit"},"draftForHighBust":{"bool":false},"shoulderEase":{"pct":0,"min":-2,"max":6,"menu":"fit"},"lengthBonus":{"pct":10,"min":5,"max":15,"menu":"fit"},"s3Collar":{"pct":0,"min":-100,"max":100,"menu":"style"},"s3Armhole":{"pct":0,"min":-100,"max":100,"menu":"style"},"acrossBackFactor":{"pct":98,"min":93,"max":100,"menu":"advanced"},"armholeDepth":{"pct":2,"min":-10,"max":50},"armholeDepthFactor":{"pct":55,"min":50,"max":70},"backNeckCutout":{"pct":5,"min":2,"max":8,"menu":"advanced"},"frontArmholeDeeper":{"pct":0.2,"min":0,"max":0.5,"menu":"advanced"},"shoulderSlopeReduction":{"pct":0,"min":0,"max":80,"menu":"advanced"},"legacyArmholeDepth":{"bool":false,"menu":"advanced"},"sleeveLengthBonus":{"pct":1,"min":0,"max":10,"menu":"fit"},"hipsEase":{"pct":0,"min":0,"max":10,"menu":"fit"},"sleevecapEase":{"pct":0,"min":0,"max":10,"menu":"advanced.sleevecap"},"sleevecapTopFactorX":{"pct":50,"min":25,"max":75,"menu":"advanced.sleevecap"},"sleevecapTopFactorY":{"pct":45,"min":35,"max":125,"menu":"advanced.sleevecap"},"sleevecapBackFactorX":{"pct":60,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapBackFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorX":{"pct":55,"min":35,"max":65,"menu":"advanced.sleevecap"},"sleevecapFrontFactorY":{"pct":33,"min":30,"max":65,"menu":"advanced.sleevecap"},"sleevecapQ1Offset":{"pct":1.7,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ2Offset":{"pct":3.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ3Offset":{"pct":2.5,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ4Offset":{"pct":1,"min":0,"max":7,"menu":"advanced.sleevecap"},"sleevecapQ1Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ1Spread2":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread1":{"pct":15,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ2Spread2":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread1":{"pct":10,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ3Spread2":{"pct":8,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread1":{"pct":7,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleevecapQ4Spread2":{"pct":6.3,"min":4,"max":20,"menu":"advanced.sleevecap"},"sleeveWidthGuarantee":{"pct":90,"min":25,"max":100,"menu":"advanced"}},"otis":{"ease":{"pct":14,"min":0,"max":30,"menu":"fit"},"snapPlacket":{"pct":5,"min":0,"max":30,"menu":"advanced"},"sleeveType":{"dflt":"short","list":["short","long"],"menu":"style"},"hem":{"pct":10,"min":0,"max":30,"menu":"advanced"},"binding":{"pct":11,"min":2,"max":30,"menu":"advanced"}}}
diff --git a/sites/shared/prebuild/data/designs.mjs b/sites/shared/prebuild/data/designs.mjs
index a39147aa657..aa0d9a41833 100644
--- a/sites/shared/prebuild/data/designs.mjs
+++ b/sites/shared/prebuild/data/designs.mjs
@@ -1,3 +1,3 @@
// __SDEFILE__ - This file is a dependency for the stand-alone environment
// This file is auto-generated by the prebuild script | Any changes will be overwritten
-export const designs = ["aaron","albert","bee","bella","benjamin","bent","bob","breanna","brian","bruce","carlita","carlton","cathrin","charlie","cornelius","diana","examples","florence","florent","hi","holmes","hortensia","huey","hugo","jaeger","legend","lucy","lunetius","magde","noble","octoplushy","paco","penelope","plugintest","rendertest","sandy","shelly","shin","simon","simone","skully","sven","tamiko","teagan","tiberius","titan","trayvon","uma","wahid","walburga","waralee","yuri","otis"]
+export const designs = ["aaron","albert","bee","bella","benjamin","bent","bob","breanna","brian","bruce","carlita","carlton","cathrin","charlie","cornelius","diana","examples","florence","florent","gozer","hi","holmes","hortensia","huey","hugo","jaeger","legend","lucy","lunetius","magde","noble","octoplushy","paco","penelope","plugintest","rendertest","sandy","shelly","shin","simon","simone","skully","sven","tamiko","teagan","tiberius","titan","trayvon","uma","wahid","walburga","waralee","yuri","otis"]
diff --git a/yarn.lock b/yarn.lock
index 8217010a772..4de5e5afa0d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -197,35 +197,35 @@
"@aws-sdk/util-utf8-browser" "^3.0.0"
tslib "^1.11.1"
-"@aws-sdk/client-sesv2@3.429.0":
- version "3.429.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-sesv2/-/client-sesv2-3.429.0.tgz#c637e7c820e929568545dee9320b71f0c561199b"
- integrity sha512-NIK5DWFK7XlOnynMxbJ2XAnXVeUd+Hak4dfrVGxprtu3piYC9QcXtDNpiZH2PD1QZlFv44r4Hq1Oi7vcrTw3cw==
+"@aws-sdk/client-sesv2@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sesv2/-/client-sesv2-3.430.0.tgz#35966fa6b356978926c3cbd2472c3798c1971654"
+ integrity sha512-KRFZZCsR+AcIjj0cwVjexi6TOkLhEI6ejC7kpgh8d9fN3p08FkdeipP6o+u73whDY9sB2S7gc+7hkbkeYemTAw==
dependencies:
"@aws-crypto/sha256-browser" "3.0.0"
"@aws-crypto/sha256-js" "3.0.0"
- "@aws-sdk/client-sts" "3.429.0"
- "@aws-sdk/credential-provider-node" "3.429.0"
+ "@aws-sdk/client-sts" "3.430.0"
+ "@aws-sdk/credential-provider-node" "3.430.0"
"@aws-sdk/middleware-host-header" "3.429.0"
"@aws-sdk/middleware-logger" "3.428.0"
"@aws-sdk/middleware-recursion-detection" "3.428.0"
"@aws-sdk/middleware-signing" "3.428.0"
"@aws-sdk/middleware-user-agent" "3.428.0"
- "@aws-sdk/region-config-resolver" "3.428.0"
+ "@aws-sdk/region-config-resolver" "3.430.0"
"@aws-sdk/types" "3.428.0"
"@aws-sdk/util-endpoints" "3.428.0"
"@aws-sdk/util-user-agent-browser" "3.428.0"
- "@aws-sdk/util-user-agent-node" "3.428.0"
- "@smithy/config-resolver" "^2.0.14"
+ "@aws-sdk/util-user-agent-node" "3.430.0"
+ "@smithy/config-resolver" "^2.0.15"
"@smithy/fetch-http-handler" "^2.2.3"
"@smithy/hash-node" "^2.0.11"
"@smithy/invalid-dependency" "^2.0.11"
"@smithy/middleware-content-length" "^2.0.13"
- "@smithy/middleware-endpoint" "^2.1.1"
- "@smithy/middleware-retry" "^2.0.16"
+ "@smithy/middleware-endpoint" "^2.1.2"
+ "@smithy/middleware-retry" "^2.0.17"
"@smithy/middleware-serde" "^2.0.11"
"@smithy/middleware-stack" "^2.0.5"
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/node-http-handler" "^2.1.7"
"@smithy/protocol-http" "^3.0.7"
"@smithy/smithy-client" "^2.1.11"
@@ -235,15 +235,15 @@
"@smithy/util-body-length-browser" "^2.0.0"
"@smithy/util-body-length-node" "^2.1.0"
"@smithy/util-defaults-mode-browser" "^2.0.15"
- "@smithy/util-defaults-mode-node" "^2.0.19"
+ "@smithy/util-defaults-mode-node" "^2.0.20"
"@smithy/util-retry" "^2.0.4"
"@smithy/util-utf8" "^2.0.0"
tslib "^2.5.0"
-"@aws-sdk/client-sso@3.429.0":
- version "3.429.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.429.0.tgz#756e47451621476a01b7b0a860a0479fb242c2b8"
- integrity sha512-Bz802NpXUrFI1KB9uu1GwCbmi0xpw+GY6+TIyaGTXbGQjg4fYOJQLUtMxmb1c1/qUTZX/x5qetF3QBwgpBbLug==
+"@aws-sdk/client-sso@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.430.0.tgz#0ae8371a89ea1bed02c4927d73eeded5962af581"
+ integrity sha512-NxQJkTZCgl6LpdY12MCwsqGned6Ax19WsTCGLEiA/tsNE4vNrYLHHBR317G0sGWbIUQuhwsoM7wIrqJO7CacuQ==
dependencies:
"@aws-crypto/sha256-browser" "3.0.0"
"@aws-crypto/sha256-js" "3.0.0"
@@ -251,21 +251,21 @@
"@aws-sdk/middleware-logger" "3.428.0"
"@aws-sdk/middleware-recursion-detection" "3.428.0"
"@aws-sdk/middleware-user-agent" "3.428.0"
- "@aws-sdk/region-config-resolver" "3.428.0"
+ "@aws-sdk/region-config-resolver" "3.430.0"
"@aws-sdk/types" "3.428.0"
"@aws-sdk/util-endpoints" "3.428.0"
"@aws-sdk/util-user-agent-browser" "3.428.0"
- "@aws-sdk/util-user-agent-node" "3.428.0"
- "@smithy/config-resolver" "^2.0.14"
+ "@aws-sdk/util-user-agent-node" "3.430.0"
+ "@smithy/config-resolver" "^2.0.15"
"@smithy/fetch-http-handler" "^2.2.3"
"@smithy/hash-node" "^2.0.11"
"@smithy/invalid-dependency" "^2.0.11"
"@smithy/middleware-content-length" "^2.0.13"
- "@smithy/middleware-endpoint" "^2.1.1"
- "@smithy/middleware-retry" "^2.0.16"
+ "@smithy/middleware-endpoint" "^2.1.2"
+ "@smithy/middleware-retry" "^2.0.17"
"@smithy/middleware-serde" "^2.0.11"
"@smithy/middleware-stack" "^2.0.5"
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/node-http-handler" "^2.1.7"
"@smithy/protocol-http" "^3.0.7"
"@smithy/smithy-client" "^2.1.11"
@@ -275,40 +275,40 @@
"@smithy/util-body-length-browser" "^2.0.0"
"@smithy/util-body-length-node" "^2.1.0"
"@smithy/util-defaults-mode-browser" "^2.0.15"
- "@smithy/util-defaults-mode-node" "^2.0.19"
+ "@smithy/util-defaults-mode-node" "^2.0.20"
"@smithy/util-retry" "^2.0.4"
"@smithy/util-utf8" "^2.0.0"
tslib "^2.5.0"
-"@aws-sdk/client-sts@3.429.0":
- version "3.429.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.429.0.tgz#fa248b2ade0cd4354540b30a381643ca502318fc"
- integrity sha512-yNRYHXqGIYjEGlpaIll9zJDsVOQWjwbvR2zfTpUwEtN4I17k/psjLAsznfTbq/4tEftkpAJ2pNsVrkHUOmCewA==
+"@aws-sdk/client-sts@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.430.0.tgz#cd906fb14cc5aeb5eeb38bd2de28c6ca9febedb6"
+ integrity sha512-njUY3QeZH0CG+tG/6jhoG+Zr7rI1aGoVkZi3l6woKTz57hIlkwu2jQlLbJujm7PKrLhPaN5+4AqBQuHFVgMobw==
dependencies:
"@aws-crypto/sha256-browser" "3.0.0"
"@aws-crypto/sha256-js" "3.0.0"
- "@aws-sdk/credential-provider-node" "3.429.0"
+ "@aws-sdk/credential-provider-node" "3.430.0"
"@aws-sdk/middleware-host-header" "3.429.0"
"@aws-sdk/middleware-logger" "3.428.0"
"@aws-sdk/middleware-recursion-detection" "3.428.0"
"@aws-sdk/middleware-sdk-sts" "3.428.0"
"@aws-sdk/middleware-signing" "3.428.0"
"@aws-sdk/middleware-user-agent" "3.428.0"
- "@aws-sdk/region-config-resolver" "3.428.0"
+ "@aws-sdk/region-config-resolver" "3.430.0"
"@aws-sdk/types" "3.428.0"
"@aws-sdk/util-endpoints" "3.428.0"
"@aws-sdk/util-user-agent-browser" "3.428.0"
- "@aws-sdk/util-user-agent-node" "3.428.0"
- "@smithy/config-resolver" "^2.0.14"
+ "@aws-sdk/util-user-agent-node" "3.430.0"
+ "@smithy/config-resolver" "^2.0.15"
"@smithy/fetch-http-handler" "^2.2.3"
"@smithy/hash-node" "^2.0.11"
"@smithy/invalid-dependency" "^2.0.11"
"@smithy/middleware-content-length" "^2.0.13"
- "@smithy/middleware-endpoint" "^2.1.1"
- "@smithy/middleware-retry" "^2.0.16"
+ "@smithy/middleware-endpoint" "^2.1.2"
+ "@smithy/middleware-retry" "^2.0.17"
"@smithy/middleware-serde" "^2.0.11"
"@smithy/middleware-stack" "^2.0.5"
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/node-http-handler" "^2.1.7"
"@smithy/protocol-http" "^3.0.7"
"@smithy/smithy-client" "^2.1.11"
@@ -318,7 +318,7 @@
"@smithy/util-body-length-browser" "^2.0.0"
"@smithy/util-body-length-node" "^2.1.0"
"@smithy/util-defaults-mode-browser" "^2.0.15"
- "@smithy/util-defaults-mode-node" "^2.0.19"
+ "@smithy/util-defaults-mode-node" "^2.0.20"
"@smithy/util-retry" "^2.0.4"
"@smithy/util-utf8" "^2.0.0"
fast-xml-parser "4.2.5"
@@ -334,14 +334,14 @@
"@smithy/types" "^2.3.5"
tslib "^2.5.0"
-"@aws-sdk/credential-provider-ini@3.429.0":
- version "3.429.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.429.0.tgz#436887f1fee1a3dc4ab35924a07cbf020f74f3bd"
- integrity sha512-rG1ecwU/8KojyXsx80tK/b+DDGqSbReakOm/db5fx2RzVnkAGdH9fvPNrhjjHZ1wGbPrUtXGmHGXP3eqnylazg==
+"@aws-sdk/credential-provider-ini@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.430.0.tgz#003ba7475aa7eadecd0d7701437a90b1dadeca5a"
+ integrity sha512-m3NcmDyVYr/w8RV9kMArrA/0982aXMsvoSXi4wFVbgg/T5hO+6i5CY7fB/0xpKIuEJ+rw63rYNnBzLwwW48kWg==
dependencies:
"@aws-sdk/credential-provider-env" "3.428.0"
"@aws-sdk/credential-provider-process" "3.428.0"
- "@aws-sdk/credential-provider-sso" "3.429.0"
+ "@aws-sdk/credential-provider-sso" "3.430.0"
"@aws-sdk/credential-provider-web-identity" "3.428.0"
"@aws-sdk/types" "3.428.0"
"@smithy/credential-provider-imds" "^2.0.0"
@@ -350,15 +350,15 @@
"@smithy/types" "^2.3.5"
tslib "^2.5.0"
-"@aws-sdk/credential-provider-node@3.429.0":
- version "3.429.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.429.0.tgz#801bfa9367470f551c1a4aa9d2686acafd8b54c6"
- integrity sha512-XaXCIeF8UWAvqzXX/UaBQhICjyIjRksjuP0xMW+A23Nu4yPjYufuHL9AR4i6MVYEKP3inXHGAS7N0t35A8acOw==
+"@aws-sdk/credential-provider-node@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.430.0.tgz#9f4fcac99b05753f06574add3e1509bed15b523c"
+ integrity sha512-ItOHJcqOhpI0QM+aho5uMrk2ZP34hsdisMHxd8/6FT41U8TOe9kQKaZ2l2AsVf4QuM6RJe2LangcVGGstCf8Sw==
dependencies:
"@aws-sdk/credential-provider-env" "3.428.0"
- "@aws-sdk/credential-provider-ini" "3.429.0"
+ "@aws-sdk/credential-provider-ini" "3.430.0"
"@aws-sdk/credential-provider-process" "3.428.0"
- "@aws-sdk/credential-provider-sso" "3.429.0"
+ "@aws-sdk/credential-provider-sso" "3.430.0"
"@aws-sdk/credential-provider-web-identity" "3.428.0"
"@aws-sdk/types" "3.428.0"
"@smithy/credential-provider-imds" "^2.0.0"
@@ -378,13 +378,13 @@
"@smithy/types" "^2.3.5"
tslib "^2.5.0"
-"@aws-sdk/credential-provider-sso@3.429.0":
- version "3.429.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.429.0.tgz#4251950cdddb30722e7222c2ad09646608ec6bea"
- integrity sha512-Nx3/18ZxV/trGz3HAQD6eGxO5Goqx3U5YR+CJsWPBh+4Jwkoo+HC5cyxq6cJIcZ5n75Wc4kPt7Im4ffVjTaJIg==
+"@aws-sdk/credential-provider-sso@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.430.0.tgz#9693dd6b85ffec2b8d05a9574957f4204308534e"
+ integrity sha512-6de/aH9OFI+Ah7hL4alrZFqiNw5D6F+R92tLbIpFRQg7DxO/TuQTTtK94mLkft/AP/mGzVVBENjsyS1nJt166w==
dependencies:
- "@aws-sdk/client-sso" "3.429.0"
- "@aws-sdk/token-providers" "3.429.0"
+ "@aws-sdk/client-sso" "3.430.0"
+ "@aws-sdk/token-providers" "3.430.0"
"@aws-sdk/types" "3.428.0"
"@smithy/property-provider" "^2.0.0"
"@smithy/shared-ini-file-loader" "^2.0.6"
@@ -464,21 +464,21 @@
"@smithy/types" "^2.3.5"
tslib "^2.5.0"
-"@aws-sdk/region-config-resolver@3.428.0":
- version "3.428.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.428.0.tgz#c275998078cbd784febd212e987e546905efafc7"
- integrity sha512-VqyHZ/Hoz3WrXXMx8cAhFBl8IpjodbRsTjBI117QPq1YRCegxNdGvqmGZnJj8N2Ef9MP1iU30ZWQB+sviDcogA==
+"@aws-sdk/region-config-resolver@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.430.0.tgz#c7fe238e9771da91bafe7016afda21305a661473"
+ integrity sha512-9lqgtkcd4dqsQ2yN6V/i06blyDh4yLmS+fAS7LwEZih/NZZ2cBIR+5kb9c236auvTcuMcL1zFxVRloWwesYZjA==
dependencies:
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/types" "^2.3.5"
"@smithy/util-config-provider" "^2.0.0"
"@smithy/util-middleware" "^2.0.4"
tslib "^2.5.0"
-"@aws-sdk/token-providers@3.429.0":
- version "3.429.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.429.0.tgz#e952cfe55276ed75aa41f378a66341a2cfecb65e"
- integrity sha512-1Lp5XW/aSHekMURfcoxhWR2ig0UlesD0wC1kcdrkhZGCPtvCE0VzMqgTmYkwtPKOWfRQf0qfu468ohBHBmzHdA==
+"@aws-sdk/token-providers@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.430.0.tgz#f5d20454c62ff65e5981d35b5a9b7660263bcc06"
+ integrity sha512-vE+QnqG0A4MWhMEFXXPg8gPXjw03b4Q3XZbHyrANoZ+tVrzh8JhpHIcbkesGh6WrjirNqId0UghzI9VanKxsLw==
dependencies:
"@aws-crypto/sha256-browser" "3.0.0"
"@aws-crypto/sha256-js" "3.0.0"
@@ -489,17 +489,17 @@
"@aws-sdk/types" "3.428.0"
"@aws-sdk/util-endpoints" "3.428.0"
"@aws-sdk/util-user-agent-browser" "3.428.0"
- "@aws-sdk/util-user-agent-node" "3.428.0"
- "@smithy/config-resolver" "^2.0.14"
+ "@aws-sdk/util-user-agent-node" "3.430.0"
+ "@smithy/config-resolver" "^2.0.15"
"@smithy/fetch-http-handler" "^2.2.3"
"@smithy/hash-node" "^2.0.11"
"@smithy/invalid-dependency" "^2.0.11"
"@smithy/middleware-content-length" "^2.0.13"
- "@smithy/middleware-endpoint" "^2.1.1"
- "@smithy/middleware-retry" "^2.0.16"
+ "@smithy/middleware-endpoint" "^2.1.2"
+ "@smithy/middleware-retry" "^2.0.17"
"@smithy/middleware-serde" "^2.0.11"
"@smithy/middleware-stack" "^2.0.5"
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/node-http-handler" "^2.1.7"
"@smithy/property-provider" "^2.0.0"
"@smithy/protocol-http" "^3.0.7"
@@ -511,7 +511,7 @@
"@smithy/util-body-length-browser" "^2.0.0"
"@smithy/util-body-length-node" "^2.1.0"
"@smithy/util-defaults-mode-browser" "^2.0.15"
- "@smithy/util-defaults-mode-node" "^2.0.19"
+ "@smithy/util-defaults-mode-node" "^2.0.20"
"@smithy/util-retry" "^2.0.4"
"@smithy/util-utf8" "^2.0.0"
tslib "^2.5.0"
@@ -549,13 +549,13 @@
bowser "^2.11.0"
tslib "^2.5.0"
-"@aws-sdk/util-user-agent-node@3.428.0":
- version "3.428.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.428.0.tgz#3966016d3592f0ccff4b0123c3b223e1e231279a"
- integrity sha512-s721C3H8TkNd0usWLPEAy7yW2lEglR8QAYojdQGzE0e0wymc671nZAFePSZFRtmqZiFOSfk0R602L5fDbP3a8Q==
+"@aws-sdk/util-user-agent-node@3.430.0":
+ version "3.430.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.430.0.tgz#efa200f7c21182d769b424ba4fff569857ff42f4"
+ integrity sha512-DPpFPL3mFMPtipFxjY7TKQBjnhmsPzYCr4Y+qna0oR6ij8jZOz2ILQDK33GxTRNh3+bV9YYbx+ZGDOnxoK5Mhw==
dependencies:
"@aws-sdk/types" "3.428.0"
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/types" "^2.3.5"
tslib "^2.5.0"
@@ -896,13 +896,13 @@
integrity sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==
"@commitlint/cli@^17.0.2":
- version "17.7.2"
- resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.7.2.tgz#3a0287373224db14968ab160b2b4988c693d3400"
- integrity sha512-t3N7TZq7lOeqTOyEgfGcaltHqEJf7YDlPg75MldeVPPyz14jZq/+mbGF9tueDLFX8R6RwdymrN6D+U5XwZ8Iwg==
+ version "17.8.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.8.0.tgz#917761331df4b7a0b97b2b31415b006847b6fd02"
+ integrity sha512-D3LdyZYbiRyAChfJMNlAd9f2P9vNQ7GWbI9gN2o7L5hF07QJDqj4z/pcJF3PjDbJWOaUUXla287RdDmmKqH2WQ==
dependencies:
"@commitlint/format" "^17.4.4"
- "@commitlint/lint" "^17.7.0"
- "@commitlint/load" "^17.7.2"
+ "@commitlint/lint" "^17.8.0"
+ "@commitlint/load" "^17.8.0"
"@commitlint/read" "^17.5.1"
"@commitlint/types" "^17.4.4"
execa "^5.0.0"
@@ -951,28 +951,28 @@
"@commitlint/types" "^17.4.4"
chalk "^4.1.0"
-"@commitlint/is-ignored@^17.7.0":
- version "17.7.0"
- resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.7.0.tgz#df9b284420bdb1aed5fdb2be44f4e98cc4826014"
- integrity sha512-043rA7m45tyEfW7Zv2vZHF++176MLHH9h70fnPoYlB1slKBeKl8BwNIlnPg4xBdRBVNPaCqvXxWswx2GR4c9Hw==
+"@commitlint/is-ignored@^17.8.0":
+ version "17.8.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.8.0.tgz#429a050cebe8dc56dd4fe4f4c23ea9e1a679dfc6"
+ integrity sha512-8bR6rxNcWaNprPBdE4ePIOwbxutTQGOsRPYWssX+zjGxnEljzaZSGzFUOMxapYILlf8Tts/O1wPQgG549Rdvdg==
dependencies:
"@commitlint/types" "^17.4.4"
semver "7.5.4"
-"@commitlint/lint@^17.7.0":
- version "17.7.0"
- resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.7.0.tgz#33f831298dc43679e4de6b088aea63d1f884c7e7"
- integrity sha512-TCQihm7/uszA5z1Ux1vw+Nf3yHTgicus/+9HiUQk+kRSQawByxZNESeQoX9ujfVd3r4Sa+3fn0JQAguG4xvvbA==
+"@commitlint/lint@^17.8.0":
+ version "17.8.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.8.0.tgz#d3a7fafe810db060aea15322e30384896da887f9"
+ integrity sha512-4ihwnqOY4TcJN6iz5Jv1LeYavvBllONwFyGxOIWmCT5s4PNMb43cws2TUdbXTZL1Vq59etGKd5LWYDFPVbs5EA==
dependencies:
- "@commitlint/is-ignored" "^17.7.0"
+ "@commitlint/is-ignored" "^17.8.0"
"@commitlint/parse" "^17.7.0"
"@commitlint/rules" "^17.7.0"
"@commitlint/types" "^17.4.4"
-"@commitlint/load@^17.7.2":
- version "17.7.2"
- resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.7.2.tgz#85730900a501c50f0bc890bb50e4a2167ee3085a"
- integrity sha512-XA7WTnsjHZ4YH6ZYsrnxgLdXzriwMMq+utZUET6spbOEEIPBCDLdOQXS26P+v3TTO4hUHOEhzUquaBv3jbBixw==
+"@commitlint/load@^17.8.0":
+ version "17.8.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.8.0.tgz#82f6c7555daecb4ce4b8a6282fcecc3665747578"
+ integrity sha512-9VnGXYJCP4tXmR4YrwP8n5oX6T5ZsHfPQq6WuUQOvAI+QsDQMaTGgTRXr7us+xsjz+b+mMBSagogqfUx2aixyw==
dependencies:
"@commitlint/config-validator" "^17.6.7"
"@commitlint/execute-rule" "^17.4.0"
@@ -1063,115 +1063,115 @@
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
-"@esbuild/android-arm64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz#74752a09301b8c6b9a415fbda9fb71406a62a7b7"
- integrity sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==
+"@esbuild/android-arm64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz#276c5f99604054d3dbb733577e09adae944baa90"
+ integrity sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==
-"@esbuild/android-arm@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.4.tgz#c27363e1e280e577d9b5c8fa7c7a3be2a8d79bf5"
- integrity sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==
+"@esbuild/android-arm@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.5.tgz#4a3cbf14758166abaae8ba9c01a80e68342a4eec"
+ integrity sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==
-"@esbuild/android-x64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.4.tgz#6c9ee03d1488973d928618100048b75b147e0426"
- integrity sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==
+"@esbuild/android-x64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.5.tgz#21a3d11cd4613d2d3c5ccb9e746c254eb9265b0a"
+ integrity sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==
-"@esbuild/darwin-arm64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz#64e2ee945e5932cd49812caa80e8896e937e2f8b"
- integrity sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==
+"@esbuild/darwin-arm64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz#714cb839f467d6a67b151ee8255886498e2b9bf6"
+ integrity sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==
-"@esbuild/darwin-x64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz#d8e26e1b965df284692e4d1263ba69a49b39ac7a"
- integrity sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==
+"@esbuild/darwin-x64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz#2c553e97a6d2b4ae76a884e35e6cbab85a990bbf"
+ integrity sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==
-"@esbuild/freebsd-arm64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz#29751a41b242e0a456d89713b228f1da4f45582f"
- integrity sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==
+"@esbuild/freebsd-arm64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz#d554f556718adb31917a0da24277bf84b6ee87f3"
+ integrity sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==
-"@esbuild/freebsd-x64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz#873edc0f73e83a82432460ea59bf568c1e90b268"
- integrity sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==
+"@esbuild/freebsd-x64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz#288f7358a3bb15d99e73c65c9adaa3dabb497432"
+ integrity sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==
-"@esbuild/linux-arm64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz#659f2fa988d448dbf5010b5cc583be757cc1b914"
- integrity sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==
+"@esbuild/linux-arm64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz#95933ae86325c93cb6b5e8333d22120ecfdc901b"
+ integrity sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==
-"@esbuild/linux-arm@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz#d5b13a7ec1f1c655ce05c8d319b3950797baee55"
- integrity sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==
+"@esbuild/linux-arm@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz#0acef93aa3e0579e46d33b666627bddb06636664"
+ integrity sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==
-"@esbuild/linux-ia32@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz#878cd8bf24c9847c77acdb5dd1b2ef6e4fa27a82"
- integrity sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==
+"@esbuild/linux-ia32@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz#b6e5c9e80b42131cbd6b1ddaa48c92835f1ed67f"
+ integrity sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==
-"@esbuild/linux-loong64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz#df890499f6e566b7de3aa2361be6df2b8d5fa015"
- integrity sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==
+"@esbuild/linux-loong64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz#e5f0cf95a180158b01ff5f417da796a1c09dfbea"
+ integrity sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==
-"@esbuild/linux-mips64el@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.4.tgz#76eae4e88d2ce9f4f1b457e93892e802851b6807"
- integrity sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==
+"@esbuild/linux-mips64el@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz#ae36fb86c7d5f641f3a0c8472e83dcb6ea36a408"
+ integrity sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==
-"@esbuild/linux-ppc64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz#c49032f4abbcfa3f747b543a106931fe3dce41ff"
- integrity sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==
+"@esbuild/linux-ppc64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz#7960cb1666f0340ddd9eef7b26dcea3835d472d0"
+ integrity sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==
-"@esbuild/linux-riscv64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz#0f815a090772138503ee0465a747e16865bf94b1"
- integrity sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==
+"@esbuild/linux-riscv64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz#32207df26af60a3a9feea1783fc21b9817bade19"
+ integrity sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==
-"@esbuild/linux-s390x@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz#8d2cca20cd4e7c311fde8701d9f1042664f8b92b"
- integrity sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==
+"@esbuild/linux-s390x@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz#b38d5681db89a3723862dfa792812397b1510a7d"
+ integrity sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==
-"@esbuild/linux-x64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz#f618bec2655de49bff91c588777e37b5e3169d4a"
- integrity sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==
+"@esbuild/linux-x64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz#46feba2ad041a241379d150f415b472fe3885075"
+ integrity sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==
-"@esbuild/netbsd-x64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz#7889744ca4d60f1538d62382b95e90a49687cef2"
- integrity sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==
+"@esbuild/netbsd-x64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz#3b5c1fb068f26bfc681d31f682adf1bea4ef0702"
+ integrity sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==
-"@esbuild/openbsd-x64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz#c3e436eb9271a423d2e8436fcb120e3fd90e2b01"
- integrity sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==
+"@esbuild/openbsd-x64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz#ca6830316ca68056c5c88a875f103ad3235e00db"
+ integrity sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==
-"@esbuild/sunos-x64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz#f63f5841ba8c8c1a1c840d073afc99b53e8ce740"
- integrity sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==
+"@esbuild/sunos-x64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz#9efc4eb9539a7be7d5a05ada52ee43cda0d8e2dd"
+ integrity sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==
-"@esbuild/win32-arm64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz#80be69cec92da4da7781cf7a8351b95cc5a236b0"
- integrity sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==
+"@esbuild/win32-arm64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz#29f8184afa7a02a956ebda4ed638099f4b8ff198"
+ integrity sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==
-"@esbuild/win32-ia32@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz#15dc0ed83d2794872b05d8edc4a358fecf97eb54"
- integrity sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==
+"@esbuild/win32-ia32@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz#f3de07afb292ecad651ae4bb8727789de2d95b05"
+ integrity sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==
-"@esbuild/win32-x64@0.19.4":
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz#d46a6e220a717f31f39ae80f49477cc3220be0f0"
- integrity sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==
+"@esbuild/win32-x64@0.19.5":
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz#faad84c41ba12e3a0acb52571df9bff37bee75f6"
+ integrity sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==
"@eslint-community/eslint-utils@^4.2.0":
version "4.4.0"
@@ -1304,21 +1304,21 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
-"@lerna/child-process@7.3.1":
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-7.3.1.tgz#ed9122a583adb828c26a5a6a662a3353e979495b"
- integrity sha512-9neRI51jOhyIGT3/xKUQZftzg78ZY5Ya8iBCmVQYWwo8rLiMqUqcgwIwFHFFYyY41Sb4/HXatQ0iiuTTB/vr8A==
+"@lerna/child-process@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-7.4.0.tgz#90e2ef119fed904845cad9977002f71354df2b68"
+ integrity sha512-KhocFx7HI04N2tUdKv/kJDy627m9TzIDrtudRTMTFVS8vKzGtxpfjgWZAnJ20hwQqe/MvvfrOhHsvDBrcBEW/g==
dependencies:
chalk "^4.1.0"
execa "^5.0.0"
strong-log-transformer "^2.1.0"
-"@lerna/create@7.3.1":
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/@lerna/create/-/create-7.3.1.tgz#9e968935deb2d5c11dd3cbfce52d4f62a4d2285c"
- integrity sha512-+gHt9rzWYaC0pxE/xMC8hQaLXJKW24rWlWJ7Vq6gETsl6D5v3rSy2VIlvoDE9WsvROnMSoXw2PZY371X79hNBw==
+"@lerna/create@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@lerna/create/-/create-7.4.0.tgz#5a7214b7f67e4804e7ce07d9e6c4275bfe85b3d5"
+ integrity sha512-VmuJCS/cC2itJjpMNNBWBl1YRfYNBjo6BR4+KVdDYPO2/WT+CWqv5gWGrm0bU5/djwGJ2BN96STzHnWegACK0A==
dependencies:
- "@lerna/child-process" "7.3.1"
+ "@lerna/child-process" "7.4.0"
"@npmcli/run-script" "6.0.2"
"@nx/devkit" ">=16.5.1 < 17"
"@octokit/plugin-enterprise-rest" "6.0.1"
@@ -2039,18 +2039,18 @@
"@smithy/types" "^2.3.5"
tslib "^2.5.0"
-"@smithy/config-resolver@^2.0.14":
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-2.0.14.tgz#16163e14053949f5a717be6f5802a7039e5ff4d1"
- integrity sha512-K1K+FuWQoy8j/G7lAmK85o03O89s2Vvh6kMFmzEmiHUoQCRH1rzbDtMnGNiaMHeSeYJ6y79IyTusdRG+LuWwtg==
+"@smithy/config-resolver@^2.0.15":
+ version "2.0.15"
+ resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-2.0.15.tgz#dff48ef54e989df4eeb90001a2fef9ae3c5bb884"
+ integrity sha512-a2Pfocla5nSrG2RyB8i20jcWgMyR71TUeFKm8pmrnZotr/X22tlg4y/EhSvBK2oTE8MKHlKh4YdpDO2AryJbGQ==
dependencies:
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/types" "^2.3.5"
"@smithy/util-config-provider" "^2.0.0"
"@smithy/util-middleware" "^2.0.4"
tslib "^2.5.0"
-"@smithy/credential-provider-imds@^2.0.0", "@smithy/credential-provider-imds@^2.0.16":
+"@smithy/credential-provider-imds@^2.0.0":
version "2.0.16"
resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.16.tgz#07da7ecd43eff92156ddc54f3b5330bbc128d5cd"
integrity sha512-tKa2xF+69TvGxJT+lnJpGrKxUuAZDLYXFhqnPEgnHz+psTpkpcB4QRjHj63+uj83KaeFJdTfW201eLZeRn6FfA==
@@ -2061,6 +2061,17 @@
"@smithy/url-parser" "^2.0.11"
tslib "^2.5.0"
+"@smithy/credential-provider-imds@^2.0.17":
+ version "2.0.17"
+ resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.17.tgz#004463c314b9c3df4883fe643f0b3855f1f64d40"
+ integrity sha512-2XcD414yrwbxxuYueTo7tzLC2/w3jj9FZqfenpv3MQkocdOEmuOVS0v9WHsY/nW6V+2EcR340rj/z5HnvsHncQ==
+ dependencies:
+ "@smithy/node-config-provider" "^2.1.2"
+ "@smithy/property-provider" "^2.0.12"
+ "@smithy/types" "^2.3.5"
+ "@smithy/url-parser" "^2.0.11"
+ tslib "^2.5.0"
+
"@smithy/eventstream-codec@^2.0.11":
version "2.0.11"
resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-2.0.11.tgz#1ba090ea5dbf956e32d3d0d0986ffb0d0af8c57d"
@@ -2116,7 +2127,7 @@
"@smithy/types" "^2.3.5"
tslib "^2.5.0"
-"@smithy/middleware-endpoint@^2.1.1":
+"@smithy/middleware-endpoint@^2.1.2":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-2.1.2.tgz#c6610f17b3c5773e4f272eb4de5c18a878607fe0"
integrity sha512-dua4r2EbSTRzNefz72snz+KDuXN73RCe1K+rGeemzUyYemxuh1jujFbLQbTU6DVlTgHkhtrbH0+kdOFY/SV4Qg==
@@ -2129,12 +2140,12 @@
"@smithy/util-middleware" "^2.0.4"
tslib "^2.5.0"
-"@smithy/middleware-retry@^2.0.16":
- version "2.0.16"
- resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-2.0.16.tgz#f87401a01317de351df5228e4591961d04663607"
- integrity sha512-Br5+0yoiMS0ugiOAfJxregzMMGIRCbX4PYo1kDHtLgvkA/d++aHbnHB819m5zOIAMPvPE7AThZgcsoK+WOsUTA==
+"@smithy/middleware-retry@^2.0.17":
+ version "2.0.17"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-2.0.17.tgz#bf154e441accef071e9f3455bc673c8e7cae14e6"
+ integrity sha512-ZYVU1MmshCTbEKTNc5h7/Pps1vhH5C7hRclQWnAbVYKkIT+PEGu9dSVqprzEo/nlMA8Zv4Dj5Y+fv3pRnUwElw==
dependencies:
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/protocol-http" "^3.0.7"
"@smithy/service-error-classification" "^2.0.4"
"@smithy/types" "^2.3.5"
@@ -2324,14 +2335,14 @@
bowser "^2.11.0"
tslib "^2.5.0"
-"@smithy/util-defaults-mode-node@^2.0.19":
- version "2.0.19"
- resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.19.tgz#8996479c76dd68baae65fd863180a802a66fdf5d"
- integrity sha512-7pScU4jBFADB2MBYKM3zb5onMh6Nn0X3IfaFVLYPyCarTIZDLUtUl1GtruzEUJPmDzP+uGeqOtU589HDY0Ni6g==
+"@smithy/util-defaults-mode-node@^2.0.20":
+ version "2.0.20"
+ resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.20.tgz#4381d74cb6c7cbca3a2609dc81a7437973d7cdd2"
+ integrity sha512-kJjcZ/Lzvs3sPDKBwlhZsFFcgPNIpB3CMb6/saCakawRzo0E+JkyS3ZZRjVR3ce29yHtwoP/0YLKC1PeH0Dffg==
dependencies:
- "@smithy/config-resolver" "^2.0.14"
- "@smithy/credential-provider-imds" "^2.0.16"
- "@smithy/node-config-provider" "^2.1.1"
+ "@smithy/config-resolver" "^2.0.15"
+ "@smithy/credential-provider-imds" "^2.0.17"
+ "@smithy/node-config-provider" "^2.1.2"
"@smithy/property-provider" "^2.0.12"
"@smithy/smithy-client" "^2.1.11"
"@smithy/types" "^2.3.5"
@@ -4593,10 +4604,10 @@ dagre-d3-es@7.0.10:
d3 "^7.8.2"
lodash-es "^4.17.21"
-daisyui@3.9.2:
- version "3.9.2"
- resolved "https://registry.yarnpkg.com/daisyui/-/daisyui-3.9.2.tgz#73c83d46ff86186568b211be2d231f4aee5a9ecc"
- integrity sha512-yJZ1QjHUaL+r9BkquTdzNHb7KIgAJVFh0zbOXql2Wu0r7zx5qZNLxclhjN0WLoIpY+o2h/8lqXg7ijj8oTigOw==
+daisyui@3.9.3:
+ version "3.9.3"
+ resolved "https://registry.yarnpkg.com/daisyui/-/daisyui-3.9.3.tgz#d8cd193feb57460d56a5fdf9e15063fd667842ec"
+ integrity sha512-8li177QCu6dqlEOzE3h/dAV1y9Movbjx5bzJIO/hNqMNZtJkbHM0trjTzbDejV7N57eNGdjBvAGtxZYKzS4jow==
dependencies:
colord "^2.9"
css-selector-tokenizer "^0.8"
@@ -5256,33 +5267,33 @@ esbuild-plugin-yaml@^0.0.1:
fs-extra "^9.1.0"
js-yaml "^4.0.0"
-esbuild@0.19.4, esbuild@^0.19.0:
- version "0.19.4"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.4.tgz#cdf5c4c684956d550bc3c6d0c01dac7fef6c75b1"
- integrity sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==
+esbuild@0.19.5, esbuild@^0.19.0:
+ version "0.19.5"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.5.tgz#53a0e19dfbf61ba6c827d51a80813cf071239a8c"
+ integrity sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==
optionalDependencies:
- "@esbuild/android-arm" "0.19.4"
- "@esbuild/android-arm64" "0.19.4"
- "@esbuild/android-x64" "0.19.4"
- "@esbuild/darwin-arm64" "0.19.4"
- "@esbuild/darwin-x64" "0.19.4"
- "@esbuild/freebsd-arm64" "0.19.4"
- "@esbuild/freebsd-x64" "0.19.4"
- "@esbuild/linux-arm" "0.19.4"
- "@esbuild/linux-arm64" "0.19.4"
- "@esbuild/linux-ia32" "0.19.4"
- "@esbuild/linux-loong64" "0.19.4"
- "@esbuild/linux-mips64el" "0.19.4"
- "@esbuild/linux-ppc64" "0.19.4"
- "@esbuild/linux-riscv64" "0.19.4"
- "@esbuild/linux-s390x" "0.19.4"
- "@esbuild/linux-x64" "0.19.4"
- "@esbuild/netbsd-x64" "0.19.4"
- "@esbuild/openbsd-x64" "0.19.4"
- "@esbuild/sunos-x64" "0.19.4"
- "@esbuild/win32-arm64" "0.19.4"
- "@esbuild/win32-ia32" "0.19.4"
- "@esbuild/win32-x64" "0.19.4"
+ "@esbuild/android-arm" "0.19.5"
+ "@esbuild/android-arm64" "0.19.5"
+ "@esbuild/android-x64" "0.19.5"
+ "@esbuild/darwin-arm64" "0.19.5"
+ "@esbuild/darwin-x64" "0.19.5"
+ "@esbuild/freebsd-arm64" "0.19.5"
+ "@esbuild/freebsd-x64" "0.19.5"
+ "@esbuild/linux-arm" "0.19.5"
+ "@esbuild/linux-arm64" "0.19.5"
+ "@esbuild/linux-ia32" "0.19.5"
+ "@esbuild/linux-loong64" "0.19.5"
+ "@esbuild/linux-mips64el" "0.19.5"
+ "@esbuild/linux-ppc64" "0.19.5"
+ "@esbuild/linux-riscv64" "0.19.5"
+ "@esbuild/linux-s390x" "0.19.5"
+ "@esbuild/linux-x64" "0.19.5"
+ "@esbuild/netbsd-x64" "0.19.5"
+ "@esbuild/openbsd-x64" "0.19.5"
+ "@esbuild/sunos-x64" "0.19.5"
+ "@esbuild/win32-arm64" "0.19.5"
+ "@esbuild/win32-ia32" "0.19.5"
+ "@esbuild/win32-x64" "0.19.5"
escalade@^3.1.1:
version "3.1.1"
@@ -8058,12 +8069,12 @@ leac@^0.6.0:
integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==
lerna@^7.2.0:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/lerna/-/lerna-7.3.1.tgz#eda0021dbd48287e9f1de3c69c48a2089ff0952c"
- integrity sha512-4Lt6nKIqCDqWgRlKu02g6+0Gfl5Hx9ZK3EIJTjMntea6QBuOgfSpJEj3j20osmE1tzFCkbAltJRyeLE1CImv+A==
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/lerna/-/lerna-7.4.0.tgz#e6dabe956cc771eabe90c97e5e4759eb5d5117ef"
+ integrity sha512-Dp5js6R7mygy3Ncxc/1HxDd5EgiE7mFqZbCAYKm6FzeOn/GLcqyOPJHLsck6PlSu/uvqUh1lZO4wGaJJQAcW2Q==
dependencies:
- "@lerna/child-process" "7.3.1"
- "@lerna/create" "7.3.1"
+ "@lerna/child-process" "7.4.0"
+ "@lerna/create" "7.4.0"
"@npmcli/run-script" "6.0.2"
"@nx/devkit" ">=16.5.1 < 17"
"@octokit/plugin-enterprise-rest" "6.0.1"
@@ -9828,10 +9839,10 @@ nested-error-stacks@^2.0.0:
resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5"
integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==
-next-i18next@14.0.0:
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/next-i18next/-/next-i18next-14.0.0.tgz#fd637c81df96c9d6f2cc4716037130ac4e5d6968"
- integrity sha512-umv8hOZoSoAA+td3ErfemyO/5Ib2pnYCdQ8/Oy+fncS2skFIL3hHKRer3Oa3Nfm4Xbv5p6DHWzm3NhT1j4tWwg==
+next-i18next@14.0.3:
+ version "14.0.3"
+ resolved "https://registry.yarnpkg.com/next-i18next/-/next-i18next-14.0.3.tgz#9c17e69483b3af4172b15454af2ef92c5f79be48"
+ integrity sha512-FtnjRMfhlamk8YyeyWqd+pndNL+3er83iMZnH4M4mhiGA93l0+vtBUvuObgOAMHDJGLLB2SS2xOOZq69oiJh7A==
dependencies:
"@babel/runtime" "^7.20.13"
"@types/hoist-non-react-statics" "^3.3.1"
@@ -11373,10 +11384,10 @@ react-timeago@7.2.0:
resolved "https://registry.yarnpkg.com/react-timeago/-/react-timeago-7.2.0.tgz#ae929d7423a63cbc3dc228e49d22fbf586d459ca"
integrity sha512-2KsBEEs+qRhKx/kekUVNSTIpop3Jwd7SRBm0R4Eiq3mPeswRGSsftY9FpKsE/lXLdURyQFiHeHFrIUxLYskG5g==
-react-zoom-pan-pinch@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.1.0.tgz#d87a66fd22a97f5dd56b54076411a9dce1f448cd"
- integrity sha512-a3LlP8QPgTikvteCNkZ3X6wIWC0lrg1geP5WkUJyx2MXXAhHQek3r17N1nT/esOiWGuPIECnsd9AGoK8jOeGcg==
+react-zoom-pan-pinch@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.2.0.tgz#6ce7d014a8dc4aa62ce83ca57f85e76cf2e934b8"
+ integrity sha512-7MS0wYWoXjr6PrmpgHOVpVyNQr9gj7LEr4xIvq6lBy62nuNwjdI1r+XxahQ0SDHhWrLuSF11e2PTL/YLengYyg==
react@18.2.0, react@^18.2.0:
version "18.2.0"