@research-copilot/plugin 1.1.16 → 1.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (799) hide show
  1. package/dist/.claude-plugin/plugin.json +1 -1
  2. package/dist/.codex-plugin/plugin.toml +1 -1
  3. package/dist/.cursor-plugin/plugin.json +1 -1
  4. package/dist/.gemini-plugin/plugin.json +1 -1
  5. package/dist/.opencode-plugin/plugin.json +1 -1
  6. package/dist/.windsurf-plugin/plugin.json +1 -1
  7. package/dist/skills/ablation-planner/SKILL.md +126 -0
  8. package/dist/skills/alphaxiv/SKILL.md +186 -0
  9. package/dist/skills/analyze-results/SKILL.md +45 -0
  10. package/dist/skills/arxiv/SKILL.md +210 -0
  11. package/dist/skills/auto-paper-improvement-loop/SKILL.md +574 -0
  12. package/dist/skills/auto-review-loop/SKILL.md +370 -0
  13. package/dist/skills/auto-review-loop-llm/SKILL.md +247 -0
  14. package/dist/skills/auto-review-loop-minimax/SKILL.md +290 -0
  15. package/dist/skills/benchmark-paper-template/SKILL.md +142 -0
  16. package/dist/skills/benchmark-paper-template/references/benchmark-design.md +180 -0
  17. package/dist/skills/benchmark-paper-template/references/checklist.md +113 -0
  18. package/dist/skills/benchmark-paper-template/references/construction-pipeline.md +127 -0
  19. package/dist/skills/benchmark-paper-template/references/experiments.md +159 -0
  20. package/dist/skills/benchmark-paper-template/references/gap-analysis.md +86 -0
  21. package/dist/skills/benchmark-paper-template/references/instantiation-template.md +194 -0
  22. package/dist/skills/benchmark-paper-template/references/orchestrator-notes.md +96 -0
  23. package/dist/skills/benchmark-paper-template/references/paper-structure.md +209 -0
  24. package/dist/skills/citation-audit/SKILL.md +494 -0
  25. package/dist/skills/claims-drafting/SKILL.md +239 -0
  26. package/dist/skills/comm-lit-review/SKILL.md +299 -0
  27. package/dist/skills/comm-lit-review/references/domain-taxonomy.md +57 -0
  28. package/dist/skills/comm-lit-review/references/output-template.md +37 -0
  29. package/dist/skills/comm-lit-review/references/source-policy.md +99 -0
  30. package/dist/skills/comm-lit-review/references/venue-tiering.md +112 -0
  31. package/dist/skills/composer/SKILL.md +840 -0
  32. package/dist/skills/composer/references/section_guides.md +675 -0
  33. package/dist/skills/composer/references/writing_standards.md +629 -0
  34. package/dist/skills/composer/scripts/chapter_quality_check.py +470 -0
  35. package/dist/skills/composer/scripts/final_evaluation.py +550 -0
  36. package/dist/skills/deepxiv/SKILL.md +142 -0
  37. package/dist/skills/dse-loop/SKILL.md +277 -0
  38. package/dist/skills/embodiment-description/SKILL.md +129 -0
  39. package/dist/skills/exa-search/SKILL.md +192 -0
  40. package/dist/skills/experiment-audit/SKILL.md +262 -0
  41. package/dist/skills/experiment-bridge/SKILL.md +316 -0
  42. package/dist/skills/experiment-plan/SKILL.md +249 -0
  43. package/dist/skills/experiment-queue/SKILL.md +380 -0
  44. package/dist/skills/experiment-queue/scripts/build_manifest.py +142 -0
  45. package/dist/skills/experiment-queue/scripts/queue_manager.py +426 -0
  46. package/dist/skills/feishu-notify/SKILL.md +155 -0
  47. package/dist/skills/figure-description/SKILL.md +138 -0
  48. package/dist/skills/figure-designer/SKILL.md +207 -0
  49. package/dist/skills/figure-designer/references/design-rules.md +99 -0
  50. package/dist/skills/figure-designer/references/experimental-results.md +127 -0
  51. package/dist/skills/figure-designer/references/motivated-example.md +138 -0
  52. package/dist/skills/figure-designer/references/solution-overview.md +145 -0
  53. package/dist/skills/figure-designer/references/tools.md +124 -0
  54. package/dist/skills/figure-spec/SKILL.md +252 -0
  55. package/dist/skills/figure-spec/scripts/figure_renderer.py +799 -0
  56. package/dist/skills/formula-derivation/SKILL.md +280 -0
  57. package/dist/skills/gemini-search/SKILL.md +205 -0
  58. package/dist/skills/grant-proposal/SKILL.md +625 -0
  59. package/dist/skills/humanizer/AGENTS.md +25 -0
  60. package/dist/skills/humanizer/SKILL.md +621 -0
  61. package/dist/skills/idea-creator/SKILL.md +311 -0
  62. package/dist/skills/idea-discovery/SKILL.md +340 -0
  63. package/dist/skills/idea-discovery-robot/SKILL.md +362 -0
  64. package/dist/skills/idea-evaluator/SKILL.md +265 -0
  65. package/dist/skills/idea-evaluator/references/fatal-flaws.md +192 -0
  66. package/dist/skills/idea-evaluator/references/five-dimensions.md +251 -0
  67. package/dist/skills/idea-evaluator/references/lifecycle-capability-matching.md +177 -0
  68. package/dist/skills/idea-evaluator/references/paradigm-elephant.md +112 -0
  69. package/dist/skills/idea-evaluator/references/paradigm-examples.md +107 -0
  70. package/dist/skills/idea-evaluator/references/paradigm-first-principles.md +115 -0
  71. package/dist/skills/idea-evaluator/references/paradigm-hamming.md +137 -0
  72. package/dist/skills/idea-evaluator/references/paradigm-shift-probe.md +160 -0
  73. package/dist/skills/idea-evaluator/references/paradigm-technology-cycle.md +116 -0
  74. package/dist/skills/idea-evaluator/references/worked-examples.md +206 -0
  75. package/dist/skills/interview-cheatsheet/SKILL.md +245 -0
  76. package/dist/skills/intro-drafter/SKILL.md +250 -0
  77. package/dist/skills/intro-drafter/references/contribution-patterns.md +116 -0
  78. package/dist/skills/intro-drafter/references/flowchart.md +204 -0
  79. package/dist/skills/intro-drafter/references/paper-types.md +155 -0
  80. package/dist/skills/intro-drafter/references/running-example.md +133 -0
  81. package/dist/skills/intro-drafter/references/worked-examples.md +161 -0
  82. package/dist/skills/invention-structuring/SKILL.md +188 -0
  83. package/dist/skills/jurisdiction-format/SKILL.md +192 -0
  84. package/dist/skills/kill-argument/SKILL.md +384 -0
  85. package/dist/skills/llm-wiki/.mise.toml +2 -0
  86. package/dist/skills/llm-wiki/.nvmrc +1 -0
  87. package/dist/skills/llm-wiki/AGENTS.md +132 -0
  88. package/dist/skills/llm-wiki/CHANGELOG.md +459 -0
  89. package/dist/skills/llm-wiki/CLAUDE.md +109 -0
  90. package/dist/skills/llm-wiki/HERMES.md +44 -0
  91. package/dist/skills/llm-wiki/SKILL.md +1133 -0
  92. package/dist/skills/llm-wiki/assets/graph-demo.gif +0 -0
  93. package/dist/skills/llm-wiki/assets/graph-preview.png +0 -0
  94. package/dist/skills/llm-wiki/deps/LICENSE-d3.txt +13 -0
  95. package/dist/skills/llm-wiki/deps/LICENSE-marked.txt +44 -0
  96. package/dist/skills/llm-wiki/deps/LICENSE-purify.txt +568 -0
  97. package/{LICENSE → dist/skills/llm-wiki/deps/LICENSE-roughjs.txt} +1 -1
  98. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/SKILL.md +261 -0
  99. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/references/config/first-time-setup.md +106 -0
  100. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/cdp.ts +179 -0
  101. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/constants.ts +13 -0
  102. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/defuddle-converter.ts +58 -0
  103. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/html-to-markdown.ts +135 -0
  104. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/legacy-converter.ts +629 -0
  105. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/main.ts +314 -0
  106. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/markdown-conversion-shared.ts +305 -0
  107. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/media-localizer.ts +317 -0
  108. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/package.json +14 -0
  109. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/paths.ts +29 -0
  110. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/package.json +9 -0
  111. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/src/index.test.ts +307 -0
  112. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/src/index.ts +523 -0
  113. package/dist/skills/llm-wiki/deps/d3.min.js +2 -0
  114. package/dist/skills/llm-wiki/deps/marked.min.js +6 -0
  115. package/dist/skills/llm-wiki/deps/purify.min.js +3 -0
  116. package/dist/skills/llm-wiki/deps/rough.min.js +7 -0
  117. package/dist/skills/llm-wiki/deps/youtube-transcript/SKILL.md +47 -0
  118. package/dist/skills/llm-wiki/deps/youtube-transcript/scripts/get_transcript.py +72 -0
  119. package/dist/skills/llm-wiki/docs/design/oriental-atlas/DESIGN.md +183 -0
  120. package/dist/skills/llm-wiki/docs/design/oriental-atlas/design-brief.md +170 -0
  121. package/dist/skills/llm-wiki/docs/design/oriental-atlas/oriental-editorial-atlas.html +1908 -0
  122. package/dist/skills/llm-wiki/docs/design/oriental-atlas/reviews/result-review.md +68 -0
  123. package/dist/skills/llm-wiki/docs/plans/2026-06-15-omp-tool-status-events-phased-plan.md +655 -0
  124. package/dist/skills/llm-wiki/docs/plans/2026-06-15-omp-tool-status-events-progress.json +913 -0
  125. package/dist/skills/llm-wiki/docs/spark/2026-06-15-omp-tool-status-events-design.md +174 -0
  126. package/dist/skills/llm-wiki/install.ps1 +87 -0
  127. package/dist/skills/llm-wiki/install.sh +722 -0
  128. package/dist/skills/llm-wiki/package-lock.json +10309 -0
  129. package/dist/skills/llm-wiki/package.json +24 -0
  130. package/dist/skills/llm-wiki/packages/graph-engine/package.json +33 -0
  131. package/dist/skills/llm-wiki/packages/graph-engine/src/anim/.gitkeep +1 -0
  132. package/dist/skills/llm-wiki/packages/graph-engine/src/anim/index.ts +179 -0
  133. package/dist/skills/llm-wiki/packages/graph-engine/src/diff.ts +121 -0
  134. package/dist/skills/llm-wiki/packages/graph-engine/src/graph-node.ts +37 -0
  135. package/dist/skills/llm-wiki/packages/graph-engine/src/index.ts +140 -0
  136. package/dist/skills/llm-wiki/packages/graph-engine/src/model/atlas.ts +18 -0
  137. package/dist/skills/llm-wiki/packages/graph-engine/src/model/index.ts +6 -0
  138. package/dist/skills/llm-wiki/packages/graph-engine/src/model/labels.ts +11 -0
  139. package/dist/skills/llm-wiki/packages/graph-engine/src/model/learning.ts +8 -0
  140. package/dist/skills/llm-wiki/packages/graph-engine/src/model/legacy-helpers.ts +1373 -0
  141. package/dist/skills/llm-wiki/packages/graph-engine/src/model/queue.ts +7 -0
  142. package/dist/skills/llm-wiki/packages/graph-engine/src/model/storage.ts +4 -0
  143. package/dist/skills/llm-wiki/packages/graph-engine/src/model/visibility.ts +9 -0
  144. package/dist/skills/llm-wiki/packages/graph-engine/src/render/.gitkeep +1 -0
  145. package/dist/skills/llm-wiki/packages/graph-engine/src/render/index.ts +59 -0
  146. package/dist/skills/llm-wiki/packages/graph-engine/src/render/legend.ts +25 -0
  147. package/dist/skills/llm-wiki/packages/graph-engine/src/render/model.ts +593 -0
  148. package/dist/skills/llm-wiki/packages/graph-engine/src/render/preview.ts +65 -0
  149. package/dist/skills/llm-wiki/packages/graph-engine/src/render/search.ts +48 -0
  150. package/dist/skills/llm-wiki/packages/graph-engine/src/render/static-renderer.ts +2783 -0
  151. package/dist/skills/llm-wiki/packages/graph-engine/src/render/toolbar.ts +40 -0
  152. package/dist/skills/llm-wiki/packages/graph-engine/src/render/viewport.ts +272 -0
  153. package/dist/skills/llm-wiki/packages/graph-engine/src/select/.gitkeep +1 -0
  154. package/dist/skills/llm-wiki/packages/graph-engine/src/select/index.ts +189 -0
  155. package/dist/skills/llm-wiki/packages/graph-engine/src/sim/index.ts +298 -0
  156. package/dist/skills/llm-wiki/packages/graph-engine/src/sim/pins.ts +96 -0
  157. package/dist/skills/llm-wiki/packages/graph-engine/src/themes/.gitkeep +1 -0
  158. package/dist/skills/llm-wiki/packages/graph-engine/src/themes/index.ts +8 -0
  159. package/dist/skills/llm-wiki/packages/graph-engine/src/themes/tokens.ts +107 -0
  160. package/dist/skills/llm-wiki/packages/graph-engine/src/types.ts +313 -0
  161. package/dist/skills/llm-wiki/packages/graph-engine/test/anim.test.ts +100 -0
  162. package/dist/skills/llm-wiki/packages/graph-engine/test/diff.test.ts +133 -0
  163. package/dist/skills/llm-wiki/packages/graph-engine/test/helpers.test.ts +275 -0
  164. package/dist/skills/llm-wiki/packages/graph-engine/test/learning.test.ts +259 -0
  165. package/dist/skills/llm-wiki/packages/graph-engine/test/preview.test.ts +56 -0
  166. package/dist/skills/llm-wiki/packages/graph-engine/test/queue.test.ts +114 -0
  167. package/dist/skills/llm-wiki/packages/graph-engine/test/render-model.test.ts +322 -0
  168. package/dist/skills/llm-wiki/packages/graph-engine/test/runtime-state.test.ts +281 -0
  169. package/dist/skills/llm-wiki/packages/graph-engine/test/search-and-legend.test.ts +111 -0
  170. package/dist/skills/llm-wiki/packages/graph-engine/test/select.test.ts +168 -0
  171. package/dist/skills/llm-wiki/packages/graph-engine/test/sim.test.ts +123 -0
  172. package/dist/skills/llm-wiki/packages/graph-engine/test/themes.test.ts +62 -0
  173. package/dist/skills/llm-wiki/packages/graph-engine/test/toolbar.test.ts +64 -0
  174. package/dist/skills/llm-wiki/packages/graph-engine/test/viewport.test.ts +167 -0
  175. package/dist/skills/llm-wiki/packages/graph-engine/tsconfig.json +17 -0
  176. package/dist/skills/llm-wiki/packages/graph-engine/vite.config.ts +15 -0
  177. package/dist/skills/llm-wiki/platforms/claude/CLAUDE.md +37 -0
  178. package/dist/skills/llm-wiki/platforms/claude/companions/llm-wiki-upgrade/SKILL.md +95 -0
  179. package/dist/skills/llm-wiki/platforms/codex/AGENTS.md +23 -0
  180. package/dist/skills/llm-wiki/scripts/adapter-state.sh +424 -0
  181. package/dist/skills/llm-wiki/scripts/build-graph-data.sh +395 -0
  182. package/dist/skills/llm-wiki/scripts/build-graph-html.sh +453 -0
  183. package/dist/skills/llm-wiki/scripts/cache.sh +352 -0
  184. package/dist/skills/llm-wiki/scripts/create-source-page.sh +100 -0
  185. package/dist/skills/llm-wiki/scripts/delete-helper.sh +68 -0
  186. package/dist/skills/llm-wiki/scripts/graph-analysis.js +732 -0
  187. package/dist/skills/llm-wiki/scripts/hook-session-start.sh +46 -0
  188. package/dist/skills/llm-wiki/scripts/init-wiki.sh +95 -0
  189. package/dist/skills/llm-wiki/scripts/lib/source-signal-eligibility.js +158 -0
  190. package/dist/skills/llm-wiki/scripts/lint-fix.sh +114 -0
  191. package/dist/skills/llm-wiki/scripts/lint-runner.sh +217 -0
  192. package/dist/skills/llm-wiki/scripts/runtime-context.sh +77 -0
  193. package/dist/skills/llm-wiki/scripts/shared-config.sh +83 -0
  194. package/dist/skills/llm-wiki/scripts/source-record-contract.tsv +10 -0
  195. package/dist/skills/llm-wiki/scripts/source-registry.sh +349 -0
  196. package/dist/skills/llm-wiki/scripts/source-registry.tsv +10 -0
  197. package/dist/skills/llm-wiki/scripts/source-signal-coverage.js +83 -0
  198. package/dist/skills/llm-wiki/scripts/validate-step1.sh +144 -0
  199. package/dist/skills/llm-wiki/scripts/wiki-compat.sh +267 -0
  200. package/dist/skills/llm-wiki/setup.sh +8 -0
  201. package/dist/skills/llm-wiki/templates/entity-template.md +30 -0
  202. package/dist/skills/llm-wiki/templates/graph-styles/wash/footer.html +27 -0
  203. package/dist/skills/llm-wiki/templates/graph-styles/wash/graph-wash-helpers.js +1326 -0
  204. package/dist/skills/llm-wiki/templates/graph-styles/wash/graph-wash.js +1009 -0
  205. package/dist/skills/llm-wiki/templates/graph-styles/wash/header.html +2002 -0
  206. package/dist/skills/llm-wiki/templates/index-en-template.md +51 -0
  207. package/dist/skills/llm-wiki/templates/index-template.md +51 -0
  208. package/dist/skills/llm-wiki/templates/log-en-template.md +11 -0
  209. package/dist/skills/llm-wiki/templates/log-template.md +11 -0
  210. package/dist/skills/llm-wiki/templates/overview-en-template.md +41 -0
  211. package/dist/skills/llm-wiki/templates/overview-template.md +41 -0
  212. package/dist/skills/llm-wiki/templates/purpose-en-template.md +16 -0
  213. package/dist/skills/llm-wiki/templates/purpose-template.md +16 -0
  214. package/dist/skills/llm-wiki/templates/query-template.md +19 -0
  215. package/dist/skills/llm-wiki/templates/schema-template.md +185 -0
  216. package/dist/skills/llm-wiki/templates/source-template.md +51 -0
  217. package/dist/skills/llm-wiki/templates/synthesis-template.md +25 -0
  218. package/dist/skills/llm-wiki/templates/topic-template.md +35 -0
  219. package/dist/skills/llm-wiki/tests/adapter-state.sh +338 -0
  220. package/dist/skills/llm-wiki/tests/browser/graph-density-preview.mjs +53 -0
  221. package/dist/skills/llm-wiki/tests/browser/graph-html-insights.mjs +41 -0
  222. package/dist/skills/llm-wiki/tests/browser/graph-node-slim.mjs +71 -0
  223. package/dist/skills/llm-wiki/tests/browser/graph-stage-4-5.mjs +717 -0
  224. package/dist/skills/llm-wiki/tests/expected/graph-data-empty.json +60 -0
  225. package/dist/skills/llm-wiki/tests/expected/graph-data-sample.json +396 -0
  226. package/dist/skills/llm-wiki/tests/expected/graph-interactive-basic.html +1736 -0
  227. package/dist/skills/llm-wiki/tests/expected/lint-output.txt +44 -0
  228. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/index.md +1 -0
  229. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/entities/Alpha.md +10 -0
  230. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/entities/Beta.md +7 -0
  231. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/entities/Delta.md +8 -0
  232. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/entities/Gamma.md +8 -0
  233. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/queries/20260422-abc.md +10 -0
  234. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/synthesis/Crystal.md +8 -0
  235. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/topics/Overview.md +9 -0
  236. package/dist/skills/llm-wiki/tests/fixtures/graph-data-empty-wiki/wiki/entities/.gitkeep +0 -0
  237. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/purpose.md +3 -0
  238. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/Attention.md +7 -0
  239. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/Decoder.md +7 -0
  240. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/Encoder.md +7 -0
  241. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/GPT.md +7 -0
  242. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/Transformer.md +13 -0
  243. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/sources/paper.md +9 -0
  244. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/topics/arch.md +12 -0
  245. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/topics/finetune.md +9 -0
  246. package/dist/skills/llm-wiki/tests/fixtures/graph-interactive-basic/wiki/graph-data.json +40 -0
  247. package/dist/skills/llm-wiki/tests/fixtures/graph-interactive-dense/wiki/graph-data.json +3965 -0
  248. package/dist/skills/llm-wiki/tests/fixtures/graph-interactive-multicomm/wiki/graph-data.json +212 -0
  249. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/index.md +14 -0
  250. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/entities/C++.md +6 -0
  251. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/entities/Lonely.md +4 -0
  252. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/entities/Other.md +8 -0
  253. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/entities/Real.md +7 -0
  254. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/sources/2026-01-01-test-source.md +15 -0
  255. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/sources/2026-02-01-inline-img.md +12 -0
  256. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/topics/AIbasic.md +3 -0
  257. package/dist/skills/llm-wiki/tests/graph-analysis-helper.regression-1.sh +237 -0
  258. package/dist/skills/llm-wiki/tests/graph-browser-stage-4-5.regression-1.sh +157 -0
  259. package/dist/skills/llm-wiki/tests/graph-build-failures.regression-1.sh +91 -0
  260. package/dist/skills/llm-wiki/tests/graph-data-confidence-merge.regression-1.sh +309 -0
  261. package/dist/skills/llm-wiki/tests/graph-data-source-paths.regression-1.sh +49 -0
  262. package/dist/skills/llm-wiki/tests/graph-html-a11y.regression-1.sh +47 -0
  263. package/dist/skills/llm-wiki/tests/graph-html-brand-link.regression-1.sh +47 -0
  264. package/dist/skills/llm-wiki/tests/graph-html-density.regression-1.sh +228 -0
  265. package/dist/skills/llm-wiki/tests/graph-html-drawer-neighbors.regression-1.sh +47 -0
  266. package/dist/skills/llm-wiki/tests/graph-html-insights.regression-1.sh +80 -0
  267. package/dist/skills/llm-wiki/tests/graph-html-long-label.regression-1.sh +92 -0
  268. package/dist/skills/llm-wiki/tests/graph-html-minimap.regression-1.sh +51 -0
  269. package/dist/skills/llm-wiki/tests/graph-html-mobile.regression-1.sh +48 -0
  270. package/dist/skills/llm-wiki/tests/graph-html-oriental-atlas-contract.regression-1.sh +94 -0
  271. package/dist/skills/llm-wiki/tests/graph-html-oriental-design-contract.regression-1.sh +82 -0
  272. package/dist/skills/llm-wiki/tests/graph-html-search.regression-1.sh +52 -0
  273. package/dist/skills/llm-wiki/tests/graph-html-styles.regression-1.sh +66 -0
  274. package/dist/skills/llm-wiki/tests/graph-html-toolbar.regression-1.sh +62 -0
  275. package/dist/skills/llm-wiki/tests/js/graph-wash-bootstrap.test.js +110 -0
  276. package/dist/skills/llm-wiki/tests/js/graph-wash-helpers.test.js +296 -0
  277. package/dist/skills/llm-wiki/tests/js/graph-wash-learning.test.js +260 -0
  278. package/dist/skills/llm-wiki/tests/js/graph-wash-queue.test.js +115 -0
  279. package/dist/skills/llm-wiki/tests/js/graph-wash-runtime-state.test.js +282 -0
  280. package/dist/skills/llm-wiki/tests/js/source-signal-coverage.test.js +48 -0
  281. package/dist/skills/llm-wiki/tests/js/source-signal-eligibility.test.js +202 -0
  282. package/dist/skills/llm-wiki/tests/lib/graph-html-engine-helpers.sh +110 -0
  283. package/dist/skills/llm-wiki/tests/lint-output.regression-1.sh +32 -0
  284. package/dist/skills/llm-wiki/tests/regression.sh +1754 -0
  285. package/dist/skills/llm-wiki/workbench/.claude/skills/.gitkeep +0 -0
  286. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/SKILL.md +590 -0
  287. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/__init__.py +1 -0
  288. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/accept_changes.py +135 -0
  289. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/comment.py +318 -0
  290. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/helpers/__init__.py +0 -0
  291. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
  292. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  293. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/pack.py +159 -0
  294. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  295. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  296. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  297. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  298. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  299. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  300. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  301. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  302. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  303. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  304. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  305. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  306. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  307. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  308. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  309. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  310. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  311. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  312. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  313. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  314. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  315. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  316. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  317. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  318. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  319. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  320. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  321. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  322. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  323. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  324. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  325. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  326. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  327. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  328. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  329. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  330. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  331. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  332. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  333. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/soffice.py +183 -0
  334. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/unpack.py +132 -0
  335. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validate.py +111 -0
  336. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/__init__.py +15 -0
  337. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/base.py +847 -0
  338. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/docx.py +446 -0
  339. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/pptx.py +275 -0
  340. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/redlining.py +247 -0
  341. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/comments.xml +3 -0
  342. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  343. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  344. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/commentsIds.xml +3 -0
  345. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/people.xml +3 -0
  346. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/SKILL.md +314 -0
  347. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/forms.md +294 -0
  348. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/reference.md +612 -0
  349. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/check_bounding_boxes.py +65 -0
  350. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/check_fillable_fields.py +11 -0
  351. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
  352. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/create_validation_image.py +37 -0
  353. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/extract_form_field_info.py +122 -0
  354. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/extract_form_structure.py +115 -0
  355. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/fill_fillable_fields.py +98 -0
  356. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  357. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/SKILL.md +232 -0
  358. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/editing.md +205 -0
  359. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/pptxgenjs.md +420 -0
  360. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/__init__.py +0 -0
  361. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/add_slide.py +195 -0
  362. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/clean.py +286 -0
  363. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  364. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
  365. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  366. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/pack.py +159 -0
  367. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  368. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  369. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  370. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  371. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  372. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  373. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  374. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  375. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  376. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  377. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  378. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  379. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  380. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  381. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  382. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  383. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  384. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  385. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  386. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  387. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  388. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  389. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  390. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  391. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  392. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  393. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  394. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  395. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  396. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  397. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  398. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  399. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  400. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  401. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  402. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  403. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  404. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  405. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  406. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/soffice.py +183 -0
  407. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/unpack.py +132 -0
  408. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validate.py +111 -0
  409. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/__init__.py +15 -0
  410. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/base.py +847 -0
  411. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/docx.py +446 -0
  412. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/pptx.py +275 -0
  413. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/redlining.py +247 -0
  414. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/thumbnail.py +289 -0
  415. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/SKILL.md +292 -0
  416. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  417. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  418. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  419. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/pack.py +159 -0
  420. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  421. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  422. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  423. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  424. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  425. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  426. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  427. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  428. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  429. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  430. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  431. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  432. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  433. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  434. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  435. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  436. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  437. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  438. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  439. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  440. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  441. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  442. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  443. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  444. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  445. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  446. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  447. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  448. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  449. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  450. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  451. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  452. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  453. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  454. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  455. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  456. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  457. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  458. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  459. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/soffice.py +183 -0
  460. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/unpack.py +132 -0
  461. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validate.py +111 -0
  462. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  463. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/base.py +847 -0
  464. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/docx.py +446 -0
  465. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/pptx.py +275 -0
  466. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/redlining.py +247 -0
  467. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/recalc.py +184 -0
  468. package/dist/skills/llm-wiki/workbench/AGENTS.md +110 -0
  469. package/dist/skills/llm-wiki/workbench/CLAUDE.md +54 -0
  470. package/dist/skills/llm-wiki/workbench/PRODUCT.md +1268 -0
  471. package/dist/skills/llm-wiki/workbench/docs/current-kb-retrieval-design.md +587 -0
  472. package/dist/skills/llm-wiki/workbench/docs/graph-evolution-1-design.md +210 -0
  473. package/dist/skills/llm-wiki/workbench/docs/stage-2-design.md +1139 -0
  474. package/dist/skills/llm-wiki/workbench/docs/stage-3-design.md +1269 -0
  475. package/dist/skills/llm-wiki/workbench/docs/stage-3.5-design.md +1164 -0
  476. package/dist/skills/llm-wiki/workbench/docs/stage-4-design.md +504 -0
  477. package/dist/skills/llm-wiki/workbench/docs/stage-4.5-design.md +195 -0
  478. package/dist/skills/llm-wiki/workbench/docs/superpowers/specs/2026-05-28-resizable-preview-layout-design.md +165 -0
  479. package/dist/skills/llm-wiki/workbench/docs/superpowers/specs/2026-05-28-settings-panel-scroll-fix.md +50 -0
  480. package/dist/skills/llm-wiki/workbench/server/package.json +29 -0
  481. package/dist/skills/llm-wiki/workbench/server/src/agent.ts +457 -0
  482. package/dist/skills/llm-wiki/workbench/server/src/artifacts.ts +248 -0
  483. package/dist/skills/llm-wiki/workbench/server/src/auth.ts +164 -0
  484. package/dist/skills/llm-wiki/workbench/server/src/config.ts +130 -0
  485. package/dist/skills/llm-wiki/workbench/server/src/conversations.test.ts +121 -0
  486. package/dist/skills/llm-wiki/workbench/server/src/conversations.ts +255 -0
  487. package/dist/skills/llm-wiki/workbench/server/src/digest/batch.ts +189 -0
  488. package/dist/skills/llm-wiki/workbench/server/src/digest/concurrency.test.ts +36 -0
  489. package/dist/skills/llm-wiki/workbench/server/src/digest/concurrency.ts +31 -0
  490. package/dist/skills/llm-wiki/workbench/server/src/digest/subagent.ts +91 -0
  491. package/dist/skills/llm-wiki/workbench/server/src/extensions/artifacts.ts +81 -0
  492. package/dist/skills/llm-wiki/workbench/server/src/extensions/knowledge-base.ts +263 -0
  493. package/dist/skills/llm-wiki/workbench/server/src/extensions/new-wiki.ts +42 -0
  494. package/dist/skills/llm-wiki/workbench/server/src/extensions/synthesis.ts +172 -0
  495. package/dist/skills/llm-wiki/workbench/server/src/graph-watcher.test.ts +196 -0
  496. package/dist/skills/llm-wiki/workbench/server/src/graph.test.ts +84 -0
  497. package/dist/skills/llm-wiki/workbench/server/src/graph.ts +379 -0
  498. package/dist/skills/llm-wiki/workbench/server/src/index.ts +1148 -0
  499. package/dist/skills/llm-wiki/workbench/server/src/knowledge-bases.test.ts +30 -0
  500. package/dist/skills/llm-wiki/workbench/server/src/knowledge-bases.ts +321 -0
  501. package/dist/skills/llm-wiki/workbench/server/src/pages.test.ts +16 -0
  502. package/dist/skills/llm-wiki/workbench/server/src/pages.ts +158 -0
  503. package/dist/skills/llm-wiki/workbench/server/src/retrieval.test.ts +151 -0
  504. package/dist/skills/llm-wiki/workbench/server/src/retrieval.ts +427 -0
  505. package/dist/skills/llm-wiki/workbench/server/src/tool-status-events.test.ts +363 -0
  506. package/dist/skills/llm-wiki/workbench/server/src/tool-status-events.ts +616 -0
  507. package/dist/skills/llm-wiki/workbench/server/src/wiki-init.test.ts +19 -0
  508. package/dist/skills/llm-wiki/workbench/server/src/wiki-init.ts +188 -0
  509. package/dist/skills/llm-wiki/workbench/server/tsconfig.json +10 -0
  510. package/dist/skills/llm-wiki/workbench/tsconfig.json +20 -0
  511. package/dist/skills/llm-wiki/workbench/web/components.json +21 -0
  512. package/dist/skills/llm-wiki/workbench/web/eslint.config.js +22 -0
  513. package/dist/skills/llm-wiki/workbench/web/index.html +13 -0
  514. package/dist/skills/llm-wiki/workbench/web/package.json +48 -0
  515. package/dist/skills/llm-wiki/workbench/web/src/App.tsx +749 -0
  516. package/dist/skills/llm-wiki/workbench/web/src/components/AddExternalDialog.tsx +373 -0
  517. package/dist/skills/llm-wiki/workbench/web/src/components/ArtifactView.tsx +15 -0
  518. package/dist/skills/llm-wiki/workbench/web/src/components/BatchDigestPanel.tsx +106 -0
  519. package/dist/skills/llm-wiki/workbench/web/src/components/ChatPanel.tsx +821 -0
  520. package/dist/skills/llm-wiki/workbench/web/src/components/CommandMenu.tsx +65 -0
  521. package/dist/skills/llm-wiki/workbench/web/src/components/ExportButtons.tsx +54 -0
  522. package/dist/skills/llm-wiki/workbench/web/src/components/GraphPanel.tsx +516 -0
  523. package/dist/skills/llm-wiki/workbench/web/src/components/GraphReader.tsx +48 -0
  524. package/dist/skills/llm-wiki/workbench/web/src/components/GraphSelection.tsx +100 -0
  525. package/dist/skills/llm-wiki/workbench/web/src/components/MarkdownView.tsx +56 -0
  526. package/dist/skills/llm-wiki/workbench/web/src/components/NewWikiDialog.tsx +101 -0
  527. package/dist/skills/llm-wiki/workbench/web/src/components/RefMenu.tsx +40 -0
  528. package/dist/skills/llm-wiki/workbench/web/src/components/RightDrawer.tsx +227 -0
  529. package/dist/skills/llm-wiki/workbench/web/src/components/SettingsPanel.tsx +331 -0
  530. package/dist/skills/llm-wiki/workbench/web/src/components/Sidebar.tsx +436 -0
  531. package/dist/skills/llm-wiki/workbench/web/src/components/ToolHistorySummary.tsx +123 -0
  532. package/dist/skills/llm-wiki/workbench/web/src/components/ToolStatusRunway.tsx +90 -0
  533. package/dist/skills/llm-wiki/workbench/web/src/components/renderers/DownloadOnlyRenderer.tsx +88 -0
  534. package/dist/skills/llm-wiki/workbench/web/src/components/renderers/HtmlRenderer.tsx +92 -0
  535. package/dist/skills/llm-wiki/workbench/web/src/components/ui/button.tsx +52 -0
  536. package/dist/skills/llm-wiki/workbench/web/src/components/ui/command.tsx +50 -0
  537. package/dist/skills/llm-wiki/workbench/web/src/components/ui/dialog.tsx +156 -0
  538. package/dist/skills/llm-wiki/workbench/web/src/components/ui/input.tsx +21 -0
  539. package/dist/skills/llm-wiki/workbench/web/src/components/ui/tooltip.tsx +57 -0
  540. package/dist/skills/llm-wiki/workbench/web/src/index.css +1737 -0
  541. package/dist/skills/llm-wiki/workbench/web/src/lib/api.ts +648 -0
  542. package/dist/skills/llm-wiki/workbench/web/src/lib/drawer-state.ts +79 -0
  543. package/dist/skills/llm-wiki/workbench/web/src/lib/graph-reader.ts +25 -0
  544. package/dist/skills/llm-wiki/workbench/web/src/lib/graph-selection-drawer.ts +35 -0
  545. package/dist/skills/llm-wiki/workbench/web/src/lib/graph-selection.ts +96 -0
  546. package/dist/skills/llm-wiki/workbench/web/src/lib/legacy-tool-status.ts +113 -0
  547. package/dist/skills/llm-wiki/workbench/web/src/lib/sse.ts +72 -0
  548. package/dist/skills/llm-wiki/workbench/web/src/lib/tool-status-format.ts +170 -0
  549. package/dist/skills/llm-wiki/workbench/web/src/lib/tool-status-model.ts +392 -0
  550. package/dist/skills/llm-wiki/workbench/web/src/lib/utils.ts +10 -0
  551. package/dist/skills/llm-wiki/workbench/web/src/lib/wiki-links.ts +32 -0
  552. package/dist/skills/llm-wiki/workbench/web/src/main.tsx +10 -0
  553. package/dist/skills/llm-wiki/workbench/web/test/api.test.ts +61 -0
  554. package/dist/skills/llm-wiki/workbench/web/test/chat-panel-tool-status.test.tsx +26 -0
  555. package/dist/skills/llm-wiki/workbench/web/test/graph-drawer-state.test.ts +78 -0
  556. package/dist/skills/llm-wiki/workbench/web/test/graph-reader-request.test.ts +32 -0
  557. package/dist/skills/llm-wiki/workbench/web/test/graph-reader.test.ts +62 -0
  558. package/dist/skills/llm-wiki/workbench/web/test/graph-selection-drawer.test.ts +56 -0
  559. package/dist/skills/llm-wiki/workbench/web/test/graph-selection.test.ts +83 -0
  560. package/dist/skills/llm-wiki/workbench/web/test/tool-history-summary.test.tsx +124 -0
  561. package/dist/skills/llm-wiki/workbench/web/test/tool-status-format.test.ts +107 -0
  562. package/dist/skills/llm-wiki/workbench/web/test/tool-status-model.test.ts +324 -0
  563. package/dist/skills/llm-wiki/workbench/web/test/tool-status-runway.test.ts +134 -0
  564. package/dist/skills/llm-wiki/workbench/web/test/wiki-links.test.ts +23 -0
  565. package/dist/skills/llm-wiki/workbench/web/tsconfig.app.json +30 -0
  566. package/dist/skills/llm-wiki/workbench/web/tsconfig.json +7 -0
  567. package/dist/skills/llm-wiki/workbench/web/tsconfig.node.json +24 -0
  568. package/dist/skills/llm-wiki/workbench/web/vite.config.ts +26 -0
  569. package/dist/skills/mean-reviewer/SECURITY.md +23 -0
  570. package/dist/skills/mean-reviewer/SKILL.md +203 -0
  571. package/dist/skills/mean-reviewer/examples/13446_1000_Layer_Networks_for_.pdf +0 -0
  572. package/dist/skills/mean-reviewer/examples/13446_mean_reviewer.md +116 -0
  573. package/dist/skills/mean-reviewer/examples/13446_mean_reviewer_author_rebuttal_simulated.md +282 -0
  574. package/dist/skills/mean-reviewer/examples/13446_mean_reviewer_reply.md +91 -0
  575. package/dist/skills/mean-reviewer/examples/13446_official_review.json +973 -0
  576. package/dist/skills/mean-reviewer/examples/ChatGPT_AC_Roleplay.jpeg +0 -0
  577. package/dist/skills/medical-imaging-review/SKILL.md +295 -0
  578. package/dist/skills/medical-imaging-review/references/CITATION_INTEGRITY.md +233 -0
  579. package/dist/skills/medical-imaging-review/references/DOMAINS.md +302 -0
  580. package/dist/skills/medical-imaging-review/references/HALLUCINATION_PATTERNS.md +211 -0
  581. package/dist/skills/medical-imaging-review/references/MCP_SETUP.md +216 -0
  582. package/dist/skills/medical-imaging-review/references/PARADIGM.md +221 -0
  583. package/dist/skills/medical-imaging-review/references/QUALITY_CHECKLIST.md +169 -0
  584. package/dist/skills/medical-imaging-review/references/TEMPLATES.md +291 -0
  585. package/dist/skills/medical-imaging-review/references/WORKFLOW.md +289 -0
  586. package/dist/skills/mermaid-diagram/SKILL.md +379 -0
  587. package/dist/skills/meta-apply/SKILL.md +137 -0
  588. package/dist/skills/meta-optimize/SKILL.md +253 -0
  589. package/dist/skills/monitor-experiment/SKILL.md +98 -0
  590. package/dist/skills/novelty-check/SKILL.md +89 -0
  591. package/dist/skills/openalex/SKILL.md +228 -0
  592. package/dist/skills/overleaf-sync/SKILL.md +220 -0
  593. package/dist/skills/paper-claim-audit/SKILL.md +340 -0
  594. package/dist/skills/paper-compile/SKILL.md +253 -0
  595. package/dist/skills/paper-figure/SKILL.md +279 -0
  596. package/dist/skills/paper-illustration/SKILL.md +690 -0
  597. package/dist/skills/paper-illustration-image2/SKILL.md +383 -0
  598. package/dist/skills/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
  599. package/dist/skills/paper-plan/SKILL.md +278 -0
  600. package/dist/skills/paper-poster/SKILL.md +19 -0
  601. package/dist/skills/paper-poster-html/DESIGN_FINAL.md +176 -0
  602. package/dist/skills/paper-poster-html/IMPLEMENTATION_CONVENTIONS.md +161 -0
  603. package/dist/skills/paper-poster-html/LICENSES/posterly-MIT.txt +21 -0
  604. package/dist/skills/paper-poster-html/NOTICE.md +57 -0
  605. package/dist/skills/paper-poster-html/SKILL.md +357 -0
  606. package/dist/skills/paper-poster-html/scripts/_posterly/__init__.py +0 -0
  607. package/dist/skills/paper-poster-html/scripts/_posterly/canvas.py +200 -0
  608. package/dist/skills/paper-poster-html/scripts/_posterly/measure.py +588 -0
  609. package/dist/skills/paper-poster-html/scripts/_posterly/polish.py +498 -0
  610. package/dist/skills/paper-poster-html/scripts/_posterly/preflight.py +489 -0
  611. package/dist/skills/paper-poster-html/scripts/_posterly/render.py +215 -0
  612. package/dist/skills/paper-poster-html/scripts/_posterly/textutil.py +16 -0
  613. package/dist/skills/paper-poster-html/scripts/_posterly/verify_final.py +171 -0
  614. package/dist/skills/paper-poster-html/scripts/asset_check.py +897 -0
  615. package/dist/skills/paper-poster-html/scripts/extract_pdf_figures.py +666 -0
  616. package/dist/skills/paper-poster-html/scripts/poster_check.py +251 -0
  617. package/dist/skills/paper-poster-html/scripts/preprocess_figures.py +238 -0
  618. package/dist/skills/paper-poster-html/scripts/render_preview.py +217 -0
  619. package/dist/skills/paper-poster-html/scripts/run_gates.py +556 -0
  620. package/dist/skills/paper-poster-html/scripts/style_check.py +1324 -0
  621. package/dist/skills/paper-poster-html/templates/COMPONENTS.md +462 -0
  622. package/dist/skills/paper-poster-html/templates/landscape_4col.html +1032 -0
  623. package/dist/skills/paper-poster-html/templates/landscape_hero.html +1046 -0
  624. package/dist/skills/paper-poster-html/templates/portrait_2col.html +947 -0
  625. package/dist/skills/paper-poster-html/templates/tokens/acl.json +9 -0
  626. package/dist/skills/paper-poster-html/templates/tokens/cvpr.json +9 -0
  627. package/dist/skills/paper-poster-html/templates/tokens/generic.json +9 -0
  628. package/dist/skills/paper-poster-html/templates/tokens/iclr.json +9 -0
  629. package/dist/skills/paper-poster-html/templates/tokens/icml.json +9 -0
  630. package/dist/skills/paper-poster-html/templates/tokens/neurips.json +9 -0
  631. package/dist/skills/paper-slide-deck/SKILL.md +464 -0
  632. package/dist/skills/paper-slide-deck/references/analysis-framework.md +392 -0
  633. package/dist/skills/paper-slide-deck/references/base-prompt.md +70 -0
  634. package/dist/skills/paper-slide-deck/references/content-rules.md +95 -0
  635. package/dist/skills/paper-slide-deck/references/figure-container-template.md +177 -0
  636. package/dist/skills/paper-slide-deck/references/modification-guide.md +85 -0
  637. package/dist/skills/paper-slide-deck/references/outline-template.md +437 -0
  638. package/dist/skills/paper-slide-deck/references/styles/academic-paper.md +109 -0
  639. package/dist/skills/paper-slide-deck/references/styles/blueprint.md +67 -0
  640. package/dist/skills/paper-slide-deck/references/styles/bold-editorial.md +70 -0
  641. package/dist/skills/paper-slide-deck/references/styles/chalkboard.md +68 -0
  642. package/dist/skills/paper-slide-deck/references/styles/corporate.md +69 -0
  643. package/dist/skills/paper-slide-deck/references/styles/dark-atmospheric.md +69 -0
  644. package/dist/skills/paper-slide-deck/references/styles/editorial-infographic.md +73 -0
  645. package/dist/skills/paper-slide-deck/references/styles/fantasy-animation.md +69 -0
  646. package/dist/skills/paper-slide-deck/references/styles/intuition-machine.md +72 -0
  647. package/dist/skills/paper-slide-deck/references/styles/minimal.md +64 -0
  648. package/dist/skills/paper-slide-deck/references/styles/notion.md +69 -0
  649. package/dist/skills/paper-slide-deck/references/styles/pixel-art.md +67 -0
  650. package/dist/skills/paper-slide-deck/references/styles/scientific.md +73 -0
  651. package/dist/skills/paper-slide-deck/references/styles/sketch-notes.md +66 -0
  652. package/dist/skills/paper-slide-deck/references/styles/vector-illustration.md +72 -0
  653. package/dist/skills/paper-slide-deck/references/styles/vintage.md +73 -0
  654. package/dist/skills/paper-slide-deck/references/styles/watercolor.md +68 -0
  655. package/dist/skills/paper-slide-deck/scripts/apply-template.ts +282 -0
  656. package/dist/skills/paper-slide-deck/scripts/detect-figures.ts +283 -0
  657. package/dist/skills/paper-slide-deck/scripts/extract-figure.ts +140 -0
  658. package/dist/skills/paper-slide-deck/scripts/generate-slides.py +182 -0
  659. package/dist/skills/paper-slide-deck/scripts/merge-to-pdf.ts +116 -0
  660. package/dist/skills/paper-slide-deck/scripts/merge-to-pptx.ts +137 -0
  661. package/dist/skills/paper-slide-deck/scripts/package-lock.json +899 -0
  662. package/dist/skills/paper-slide-deck/scripts/package.json +8 -0
  663. package/dist/skills/paper-slides/SKILL.md +571 -0
  664. package/dist/skills/paper-talk/SKILL.md +381 -0
  665. package/dist/skills/paper-write/SKILL.md +411 -0
  666. package/dist/skills/paper-write/templates/IEEEtran.bst +2409 -0
  667. package/dist/skills/paper-write/templates/IEEEtran.cls +6347 -0
  668. package/dist/skills/paper-write/templates/aaai2026.bst +1493 -0
  669. package/dist/skills/paper-write/templates/aaai2026.sty +315 -0
  670. package/dist/skills/paper-write/templates/aaai2026.tex +952 -0
  671. package/dist/skills/paper-write/templates/acl.sty +312 -0
  672. package/dist/skills/paper-write/templates/acl2026.tex +377 -0
  673. package/dist/skills/paper-write/templates/acl_natbib.bst +1940 -0
  674. package/dist/skills/paper-write/templates/acm.bst +3081 -0
  675. package/dist/skills/paper-write/templates/acm_mm2026.tex +204 -0
  676. package/dist/skills/paper-write/templates/acmart.cls +3520 -0
  677. package/dist/skills/paper-write/templates/cvpr.bst +1448 -0
  678. package/dist/skills/paper-write/templates/cvpr.sty +508 -0
  679. package/dist/skills/paper-write/templates/cvpr2026.tex +63 -0
  680. package/dist/skills/paper-write/templates/iclr2026.tex +84 -0
  681. package/dist/skills/paper-write/templates/iclr2026_conference.bst +1440 -0
  682. package/dist/skills/paper-write/templates/iclr2026_conference.sty +246 -0
  683. package/dist/skills/paper-write/templates/icml2025.tex +87 -0
  684. package/dist/skills/paper-write/templates/icml2026.sty +767 -0
  685. package/dist/skills/paper-write/templates/icml2026.tex +662 -0
  686. package/dist/skills/paper-write/templates/ieee_conference.tex +89 -0
  687. package/dist/skills/paper-write/templates/ieee_journal.tex +93 -0
  688. package/dist/skills/paper-write/templates/math_commands.tex +48 -0
  689. package/dist/skills/paper-write/templates/neurips2025.tex +80 -0
  690. package/dist/skills/paper-write/templates/neurips2026.tex +493 -0
  691. package/dist/skills/paper-write/templates/neurips_2026.sty +437 -0
  692. package/dist/skills/paper-writing/SKILL.md +632 -0
  693. package/dist/skills/patent-novelty-check/SKILL.md +153 -0
  694. package/dist/skills/patent-pipeline/SKILL.md +344 -0
  695. package/dist/skills/patent-review/SKILL.md +202 -0
  696. package/dist/skills/pixel-art/SKILL.md +139 -0
  697. package/dist/skills/pre-submission-reviewer/SKILL.md +247 -0
  698. package/dist/skills/pre-submission-reviewer/references/forbidden-patterns.md +163 -0
  699. package/dist/skills/pre-submission-reviewer/references/grammar-rules.md +135 -0
  700. package/dist/skills/pre-submission-reviewer/references/latex-rules.md +158 -0
  701. package/dist/skills/pre-submission-reviewer/references/logic-and-structure.md +125 -0
  702. package/dist/skills/pre-submission-reviewer/references/section-guides.md +169 -0
  703. package/dist/skills/prior-art-search/SKILL.md +146 -0
  704. package/dist/skills/proof-checker/SKILL.md +499 -0
  705. package/dist/skills/proof-writer/SKILL.md +222 -0
  706. package/dist/skills/qzcli/SKILL.md +316 -0
  707. package/dist/skills/rebuttal/SKILL.md +304 -0
  708. package/dist/skills/render-html/SKILL.md +299 -0
  709. package/dist/skills/render-html/scripts/render_html.py +905 -0
  710. package/dist/skills/render-html/scripts/templates/academic.html +342 -0
  711. package/dist/skills/render-html/scripts/templates/dashboard.html +333 -0
  712. package/dist/skills/research-lit/SKILL.md +353 -0
  713. package/dist/skills/research-paper-writing/SKILL.md +99 -0
  714. package/dist/skills/research-paper-writing/agents/openai.yaml +4 -0
  715. package/dist/skills/research-paper-writing/references/abstract.md +102 -0
  716. package/dist/skills/research-paper-writing/references/conclusion.md +35 -0
  717. package/dist/skills/research-paper-writing/references/does-my-writing-flow-source.md +45 -0
  718. package/dist/skills/research-paper-writing/references/examples/abstract/template-a.md +21 -0
  719. package/dist/skills/research-paper-writing/references/examples/abstract/template-b.md +34 -0
  720. package/dist/skills/research-paper-writing/references/examples/abstract/template-c.md +28 -0
  721. package/dist/skills/research-paper-writing/references/examples/abstract-examples.md +13 -0
  722. package/dist/skills/research-paper-writing/references/examples/index.md +21 -0
  723. package/dist/skills/research-paper-writing/references/examples/introduction/novel-task-challenge-decomposition.md +18 -0
  724. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-not-recommended-abstract-only.md +30 -0
  725. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-version-1-one-contribution-multi-advantages.md +30 -0
  726. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-version-2-two-contributions.md +34 -0
  727. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-version-3-new-module-on-existing-pipeline.md +18 -0
  728. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-version-4-observation-driven.md +16 -0
  729. package/dist/skills/research-paper-writing/references/examples/introduction/technical-challenge-version-1-existing-task.md +32 -0
  730. package/dist/skills/research-paper-writing/references/examples/introduction/technical-challenge-version-2-existing-task-insight-backed-by-traditional.md +33 -0
  731. package/dist/skills/research-paper-writing/references/examples/introduction/technical-challenge-version-3-novel-task.md +21 -0
  732. package/dist/skills/research-paper-writing/references/examples/introduction/version-1-task-then-application.md +14 -0
  733. package/dist/skills/research-paper-writing/references/examples/introduction/version-2-application-first.md +10 -0
  734. package/dist/skills/research-paper-writing/references/examples/introduction/version-3-general-to-specific-setting.md +14 -0
  735. package/dist/skills/research-paper-writing/references/examples/introduction/version-4-open-with-challenge.md +20 -0
  736. package/dist/skills/research-paper-writing/references/examples/introduction-examples.md +25 -0
  737. package/dist/skills/research-paper-writing/references/examples/method/example-of-the-three-elements.md +67 -0
  738. package/dist/skills/research-paper-writing/references/examples/method/method-writing-common-issues-note.md +10 -0
  739. package/dist/skills/research-paper-writing/references/examples/method/module-design-instant-ngp.md +55 -0
  740. package/dist/skills/research-paper-writing/references/examples/method/module-motivation-patterns.md +15 -0
  741. package/dist/skills/research-paper-writing/references/examples/method/module-triad-neural-body.md +19 -0
  742. package/dist/skills/research-paper-writing/references/examples/method/neural-body-annotated-figure-text.md +66 -0
  743. package/dist/skills/research-paper-writing/references/examples/method/overview-template.md +30 -0
  744. package/dist/skills/research-paper-writing/references/examples/method/pre-writing-questions.md +17 -0
  745. package/dist/skills/research-paper-writing/references/examples/method/section-skeleton.md +9 -0
  746. package/dist/skills/research-paper-writing/references/examples/method-examples.md +24 -0
  747. package/dist/skills/research-paper-writing/references/experiments.md +102 -0
  748. package/dist/skills/research-paper-writing/references/introduction.md +408 -0
  749. package/dist/skills/research-paper-writing/references/method.md +196 -0
  750. package/dist/skills/research-paper-writing/references/paper-review.md +86 -0
  751. package/dist/skills/research-paper-writing/references/related-work.md +41 -0
  752. package/dist/skills/research-pipeline/SKILL.md +257 -0
  753. package/dist/skills/research-proposal/SKILL.md +573 -0
  754. package/dist/skills/research-proposal/assets/proposal_scaffold_en.md +323 -0
  755. package/dist/skills/research-proposal/assets/proposal_scaffold_zh.md +346 -0
  756. package/dist/skills/research-proposal/references/DOMAIN_TEMPLATES.md +518 -0
  757. package/dist/skills/research-proposal/references/LITERATURE_WORKFLOW.md +529 -0
  758. package/dist/skills/research-proposal/references/QUALITY_CHECKLIST.md +325 -0
  759. package/dist/skills/research-proposal/references/STRUCTURE_GUIDE.md +398 -0
  760. package/dist/skills/research-proposal/references/WRITING_STYLE_GUIDE.md +661 -0
  761. package/dist/skills/research-refine/SKILL.md +716 -0
  762. package/dist/skills/research-refine-pipeline/SKILL.md +186 -0
  763. package/dist/skills/research-review/SKILL.md +119 -0
  764. package/dist/skills/research-wiki/SKILL.md +373 -0
  765. package/dist/skills/resubmit-pipeline/SKILL.md +427 -0
  766. package/dist/skills/result-to-claim/SKILL.md +190 -0
  767. package/dist/skills/run-experiment/SKILL.md +227 -0
  768. package/dist/skills/scientific-figure-making/SKILL.md +38 -0
  769. package/dist/skills/scientific-figure-making/references/api.md +152 -0
  770. package/dist/skills/scientific-figure-making/references/common-patterns.md +74 -0
  771. package/dist/skills/scientific-figure-making/references/demos.md +30 -0
  772. package/dist/skills/scientific-figure-making/references/design-theory.md +138 -0
  773. package/dist/skills/scientific-figure-making/references/tutorials.md +135 -0
  774. package/dist/skills/semantic-scholar/SKILL.md +219 -0
  775. package/dist/skills/serverless-modal/SKILL.md +324 -0
  776. package/dist/skills/slides-polish/SKILL.md +563 -0
  777. package/dist/skills/specification-writing/SKILL.md +211 -0
  778. package/dist/skills/strategist/SKILL.md +670 -0
  779. package/dist/skills/strategist/references/quality_standards.md +336 -0
  780. package/dist/skills/strategist/references/search_strategy.md +459 -0
  781. package/dist/skills/strategist/scripts/evaluate_samples.py +300 -0
  782. package/dist/skills/strategist/scripts/gap_analysis.py +399 -0
  783. package/dist/skills/system-profile/SKILL.md +103 -0
  784. package/dist/skills/tech-paper-template/SKILL.md +192 -0
  785. package/dist/skills/tech-paper-template/references/consistency-checks.md +166 -0
  786. package/dist/skills/tech-paper-template/references/paper-types.md +127 -0
  787. package/dist/skills/tech-paper-template/references/thinking-template.md +194 -0
  788. package/dist/skills/tech-paper-template/references/worked-examples.md +124 -0
  789. package/dist/skills/training-check/SKILL.md +83 -0
  790. package/dist/skills/vast-gpu/SKILL.md +380 -0
  791. package/dist/skills/vibe-research-workflow/SKILL.md +189 -0
  792. package/dist/skills/vibe-research-workflow/references/behavior-guidelines.md +149 -0
  793. package/dist/skills/vibe-research-workflow/references/tool-selection.md +144 -0
  794. package/dist/skills/vibe-research-workflow/references/vibe-coding.md +154 -0
  795. package/dist/skills/vibe-research-workflow/references/vibe-figure.md +131 -0
  796. package/dist/skills/vibe-research-workflow/references/vibe-writing.md +181 -0
  797. package/dist/skills/wiki-enrich/SKILL.md +254 -0
  798. package/dist/skills/writing-systems-papers/SKILL.md +184 -0
  799. package/package.json +1 -1
@@ -0,0 +1,3520 @@
1
+ %%
2
+ %% This is file `acmart.cls',
3
+ %% generated with the docstrip utility.
4
+ %%
5
+ %% The original source files were:
6
+ %%
7
+ %% acmart.dtx (with options: `class')
8
+ %%
9
+ %% IMPORTANT NOTICE:
10
+ %%
11
+ %% For the copyright see the source file.
12
+ %%
13
+ %% Any modified versions of this file must be renamed
14
+ %% with new filenames distinct from acmart.cls.
15
+ %%
16
+ %% For distribution of the original source see the terms
17
+ %% for copying and modification in the file acmart.dtx.
18
+ %%
19
+ %% This generated file may be distributed as long as the
20
+ %% original source files, as listed above, are part of the
21
+ %% same distribution. (The sources need not necessarily be
22
+ %% in the same archive or directory.)
23
+ %% \CharacterTable
24
+ %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
25
+ %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
26
+ %% Digits \0\1\2\3\4\5\6\7\8\9
27
+ %% Exclamation \! Double quote \" Hash (number) \#
28
+ %% Dollar \$ Percent \% Ampersand \&
29
+ %% Acute accent \' Left paren \( Right paren \)
30
+ %% Asterisk \* Plus \+ Comma \,
31
+ %% Minus \- Point \. Solidus \/
32
+ %% Colon \: Semicolon \; Less than \<
33
+ %% Equals \= Greater than \> Question mark \?
34
+ %% Commercial at \@ Left bracket \[ Backslash \\
35
+ %% Right bracket \] Circumflex \^ Underscore \_
36
+ %% Grave accent \` Left brace \{ Vertical bar \|
37
+ %% Right brace \} Tilde \~}
38
+
39
+ \NeedsTeXFormat{LaTeX2e}
40
+ \ProvidesClass{acmart}
41
+ [2022/10/24 v1.88 Typesetting articles for the Association for Computing Machinery]
42
+ \def\@classname{acmart}
43
+ \InputIfFileExists{acmart-preload-hook.tex}{%
44
+ \ClassWarning{\@classname}{%
45
+ I am loading acmart-preload-hook.tex. You are fully responsible
46
+ for any problems from now on.}}{}
47
+ \RequirePackage{xkeyval}
48
+ \RequirePackage{xstring}
49
+ \RequirePackage{iftex}
50
+ \define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
51
+ manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
52
+ sigplan, sigchi, sigchi-a, acmengage, acmcp}[manuscript]{}{%
53
+ \ClassError{\@classname}{The option format must be manuscript,
54
+ acmsmall, acmlarge, acmtog, sigconf, siggraph,
55
+ sigplan, sigchi or sigchi-a}}
56
+ \def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
57
+ \@DeclareACMFormat{manuscript}
58
+ \@DeclareACMFormat{acmsmall}
59
+ \@DeclareACMFormat{acmlarge}
60
+ \@DeclareACMFormat{acmtog}
61
+ \@DeclareACMFormat{sigconf}
62
+ \@DeclareACMFormat{siggraph}
63
+ \@DeclareACMFormat{sigplan}
64
+ \@DeclareACMFormat{sigchi}
65
+ \@DeclareACMFormat{sigchi-a}
66
+ \@DeclareACMFormat{acmengage}
67
+ \@DeclareACMFormat{acmcp}
68
+ \ExecuteOptionsX{format}
69
+ \define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
70
+ \if@ACM@screen
71
+ \PackageInfo{\@classname}{Using screen mode}%
72
+ \else
73
+ \PackageInfo{\@classname}{Not using screen mode}%
74
+ \fi}{\PackageError{\@classname}{The option screen can be either true or
75
+ false}}
76
+ \ExecuteOptionsX{screen=false}
77
+ \define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{%
78
+ \if@ACM@urlbreakonhyphens
79
+ \PackageInfo{\@classname}{Using breaking urls on hyphens}%
80
+ \else
81
+ \PackageInfo{\@classname}{Not breaking urls on hyphens}%
82
+ \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or
83
+ false}}
84
+ \ExecuteOptionsX{urlbreakonhyphens=true}
85
+ \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
86
+ \if@ACM@acmthm
87
+ \PackageInfo{\@classname}{Requiring acmthm}%
88
+ \else
89
+ \PackageInfo{\@classname}{Suppressing acmthm}%
90
+ \fi}{\PackageError{\@classname}{The option acmthm can be either true or
91
+ false}}
92
+ \ExecuteOptionsX{acmthm=true}
93
+ \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
94
+ \if@ACM@review
95
+ \PackageInfo{\@classname}{Using review mode}%
96
+ \AtBeginDocument{\@ACM@printfoliostrue}%
97
+ \else
98
+ \PackageInfo{\@classname}{Not using review mode}%
99
+ \fi}{\PackageError{\@classname}{The option review can be either true or
100
+ false}}
101
+ \ExecuteOptionsX{review=false}
102
+ \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
103
+ \if@ACM@authorversion
104
+ \PackageInfo{\@classname}{Using authorversion mode}%
105
+ \else
106
+ \PackageInfo{\@classname}{Not using authorversion mode}%
107
+ \fi}{\PackageError{\@classname}{The option authorversion can be either true or
108
+ false}}
109
+ \ExecuteOptionsX{authorversion=false}
110
+ \define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{%
111
+ \if@ACM@nonacm
112
+ \PackageInfo{\@classname}{Using nonacm mode}%
113
+ \AtBeginDocument{\@ACM@printacmreffalse}%
114
+ % in 'nonacm' mode we disable the "ACM Reference Format"
115
+ % printing by default, but this can be re-enabled by the
116
+ % user using \settopmatter{printacmref=true}
117
+ \else
118
+ \PackageInfo{\@classname}{Not using nonacm mode}%
119
+ \fi}{\PackageError{\@classname}{The option nonacm can be either true or
120
+ false}}
121
+ \ExecuteOptionsX{nonacm=false}
122
+ \define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{%
123
+ \PackageError{\@classname}{The option balance can be either true or
124
+ false}}
125
+ \ExecuteOptionsX{balance}
126
+ \define@boolkey+{acmart.cls}[@ACM@]{pbalance}[true]{}{%
127
+ \PackageError{\@classname}{The option pbalance can be either true or
128
+ false}}
129
+ \ExecuteOptionsX{pbalance=false}
130
+ \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
131
+ \if@ACM@natbib
132
+ \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
133
+ \else
134
+ \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
135
+ \fi}{\PackageError{\@classname}{The option natbib can be either true or
136
+ false}}
137
+ \ExecuteOptionsX{natbib=true}
138
+ \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
139
+ \if@ACM@anonymous
140
+ \PackageInfo{\@classname}{Using anonymous mode}%
141
+ \else
142
+ \PackageInfo{\@classname}{Not using anonymous mode}%
143
+ \fi}{\PackageError{\@classname}{The option anonymous can be either true or
144
+ false}}
145
+ \ExecuteOptionsX{anonymous=false}
146
+ \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
147
+ \if@ACM@timestamp
148
+ \PackageInfo{\@classname}{Using timestamp mode}%
149
+ \else
150
+ \PackageInfo{\@classname}{Not using timestamp mode}%
151
+ \fi}{\PackageError{\@classname}{The option timestamp can be either true or
152
+ false}}
153
+ \ExecuteOptionsX{timestamp=false}
154
+ \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
155
+ \if@ACM@authordraft
156
+ \PackageInfo{\@classname}{Using authordraft mode}%
157
+ \@ACM@timestamptrue
158
+ \@ACM@reviewtrue
159
+ \else
160
+ \PackageInfo{\@classname}{Not using authordraft mode}%
161
+ \fi}{\PackageError{\@classname}{The option authordraft can be either true or
162
+ false}}
163
+ \ExecuteOptionsX{authordraft=false}
164
+ \def\ACM@fontsize{}
165
+ \DeclareOptionX{8pt}{\edef\ACM@fontsize{\CurrentOption}}
166
+ \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
167
+ \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
168
+ \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
169
+ \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
170
+ \def\ACM@languages{}
171
+ \DeclareOptionX{language}{%
172
+ \ifx\ACM@languages\@empty
173
+ \gdef\ACM@languages{english}\fi
174
+ \g@addto@macro\ACM@languages{, #1}}
175
+ \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
176
+ \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
177
+ \ProcessOptionsX
178
+ \ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
179
+ \newif\if@ACM@manuscript
180
+ \newif\if@ACM@journal
181
+ \newif\if@ACM@journal@bibstrip
182
+ \newif\if@ACM@sigchiamode
183
+ \newif\if@ACM@engage
184
+ \@ACM@engagefalse
185
+ \newif\if@ACM@acmcp
186
+ \@ACM@acmcpfalse
187
+ \ifnum\ACM@format@nr=5\relax % siggraph
188
+ \ClassWarning{\@classname}{%
189
+ The format siggraph is now obsolete.\MessageBreak
190
+ I am switching to sigconf.}
191
+ \setkeys{acmart.cls}{format=sigconf}
192
+ \fi
193
+ \ifnum\ACM@format@nr=7\relax % sigchi
194
+ \ClassWarning{\@classname}{%
195
+ The format sigchi is now obsolete.\MessageBreak
196
+ I am switching to sigconf.}
197
+ \setkeys{acmart.cls}{format=sigconf}
198
+ \fi
199
+ \ifnum\ACM@format@nr=8\relax % sigchi
200
+ \ClassWarning{\@classname}{%
201
+ ACM SIGCHI has retired the SIGCHI-A template\MessageBreak
202
+ effective immediately. ACM is keeping this template\MessageBreak
203
+ option available to authors who are working on legacy\MessageBreak
204
+ documents only. ACM will not, under any circumstances,\MessageBreak
205
+ accept documents in this format for publication and\MessageBreak
206
+ will not offer technical support to the authors who use\MessageBreak
207
+ this template.\MessageBreak
208
+ ACM SIGCHI is directing Conference leaders and\MessageBreak
209
+ authors to publish their articles using the SIGCONF\MessageBreak
210
+ template call.}
211
+ \fi
212
+ \ifnum\ACM@format@nr=0\relax
213
+ \@ACM@manuscripttrue
214
+ \else
215
+ \@ACM@manuscriptfalse
216
+ \fi
217
+ \@ACM@sigchiamodefalse
218
+ \ifcase\ACM@format@nr
219
+ \relax % manuscript
220
+ \@ACM@journaltrue
221
+ \or % acmsmall
222
+ \@ACM@journaltrue
223
+ \or % acmlarge
224
+ \@ACM@journaltrue
225
+ \or % acmtog
226
+ \@ACM@journaltrue
227
+ \or % sigconf
228
+ \@ACM@journalfalse
229
+ \or % siggraph
230
+ \@ACM@journalfalse
231
+ \or % sigplan
232
+ \@ACM@journalfalse
233
+ \or % sigchi
234
+ \@ACM@journalfalse
235
+ \or % sigchi-a
236
+ \@ACM@journalfalse
237
+ \@ACM@sigchiamodetrue
238
+ \or % acmengage
239
+ \@ACM@journalfalse
240
+ \@ACM@engagetrue
241
+ \or % acmcp
242
+ \@ACM@journaltrue
243
+ \@ACM@acmcptrue
244
+ \AtBeginDocument{\@ACM@printacmreffalse}%
245
+ \fi
246
+ \if@ACM@journal
247
+ \@ACM@journal@bibstriptrue
248
+ \else
249
+ \@ACM@journal@bibstripfalse
250
+ \fi
251
+ \ifx\ACM@fontsize\@empty
252
+ \ifcase\ACM@format@nr
253
+ \relax % manuscript
254
+ \def\ACM@fontsize{9pt}%
255
+ \or % acmsmall
256
+ \def\ACM@fontsize{10pt}%
257
+ \or % acmlarge
258
+ \def\ACM@fontsize{10pt}%
259
+ \or % acmtog
260
+ \def\ACM@fontsize{9pt}%
261
+ \or % sigconf
262
+ \def\ACM@fontsize{9pt}%
263
+ \or % siggraph
264
+ \def\ACM@fontsize{9pt}%
265
+ \or % sigplan
266
+ \def\ACM@fontsize{10pt}%
267
+ \or % sigchi
268
+ \def\ACM@fontsize{9pt}%
269
+ \or % sigchi-a
270
+ \def\ACM@fontsize{10pt}%
271
+ \or % acmengage
272
+ \def\ACM@fontsize{10pt}%
273
+ \or % acmcp
274
+ \def\ACM@fontsize{9pt}%
275
+ \fi
276
+ \fi
277
+ \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
278
+ \LoadClass[\ACM@fontsize, reqno]{amsart}
279
+ \RequirePackage{microtype}
280
+ \RequirePackage{etoolbox}
281
+ \RequirePackage{booktabs}
282
+ \RequirePackage{refcount}
283
+ \RequirePackage{totpages}
284
+ \RequirePackage{environ}
285
+ \if@ACM@manuscript
286
+ \RequirePackage{setspace}
287
+ \onehalfspacing
288
+ \fi
289
+ \RequirePackage{textcase}
290
+ \if@ACM@acmcp
291
+ \RequirePackage{framed}
292
+ \RequirePackage{zref-savepos, zref-user}
293
+ \fi
294
+ \newdimen\@ACM@acmcp@delta
295
+ \@ACM@acmcp@delta=0pt\relax
296
+ \if@ACM@natbib
297
+ \RequirePackage{natbib}
298
+ \renewcommand{\bibsection}{%
299
+ \section*{\refname}%
300
+ \phantomsection\addcontentsline{toc}{section}{\refname}%
301
+ }
302
+ \renewcommand{\bibfont}{\bibliofont}
303
+ \renewcommand\setcitestyle[1]{
304
+ \@for\@tempa:=#1\do
305
+ {\def\@tempb{round}\ifx\@tempa\@tempb
306
+ \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
307
+ \def\@tempb{square}\ifx\@tempa\@tempb
308
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
309
+ \def\@tempb{angle}\ifx\@tempa\@tempb
310
+ \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
311
+ \def\@tempb{curly}\ifx\@tempa\@tempb
312
+ \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
313
+ \def\@tempb{semicolon}\ifx\@tempa\@tempb
314
+ \renewcommand\NAT@sep{;}\fi
315
+ \def\@tempb{colon}\ifx\@tempa\@tempb
316
+ \renewcommand\NAT@sep{;}\fi
317
+ \def\@tempb{comma}\ifx\@tempa\@tempb
318
+ \renewcommand\NAT@sep{,}\fi
319
+ \def\@tempb{authoryear}\ifx\@tempa\@tempb
320
+ \NAT@numbersfalse\fi
321
+ \def\@tempb{numbers}\ifx\@tempa\@tempb
322
+ \NAT@numberstrue\NAT@superfalse\fi
323
+ \def\@tempb{super}\ifx\@tempa\@tempb
324
+ \NAT@numberstrue\NAT@supertrue\fi
325
+ \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
326
+ \let\bibstyle=\@gobble\fi
327
+ \def\@tempb{bibstyle}\ifx\@tempa\@tempb
328
+ \let\bibstyle=\@citestyle\fi
329
+ \def\@tempb{sort}\ifx\@tempa\@tempb
330
+ \def\NAT@sort{\@ne}\fi
331
+ \def\@tempb{nosort}\ifx\@tempa\@tempb
332
+ \def\NAT@sort{\z@}\fi
333
+ \def\@tempb{compress}\ifx\@tempa\@tempb
334
+ \def\NAT@cmprs{\@ne}\fi
335
+ \def\@tempb{nocompress}\ifx\@tempa\@tempb
336
+ \def\NAT@cmprs{\z@}\fi
337
+ \def\@tempb{sort&compress}\ifx\@tempa\@tempb
338
+ \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
339
+ \def\@tempb{mcite}\ifx\@tempa\@tempb
340
+ \let\NAT@merge\@ne\fi
341
+ \def\@tempb{merge}\ifx\@tempa\@tempb
342
+ \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
343
+ \def\@tempb{elide}\ifx\@tempa\@tempb
344
+ \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
345
+ \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
346
+ \NAT@longnamestrue\fi
347
+ \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
348
+ \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
349
+ \expandafter\NAT@find@eq\@tempa=\relax\@nil
350
+ \if\@tempc\relax\else
351
+ \expandafter\NAT@rem@eq\@tempc
352
+ \def\@tempb{open}\ifx\@tempa\@tempb
353
+ \xdef\NAT@open{\@tempc}\fi
354
+ \def\@tempb{close}\ifx\@tempa\@tempb
355
+ \xdef\NAT@close{\@tempc}\fi
356
+ \def\@tempb{aysep}\ifx\@tempa\@tempb
357
+ \xdef\NAT@aysep{\@tempc}\fi
358
+ \def\@tempb{yysep}\ifx\@tempa\@tempb
359
+ \xdef\NAT@yrsep{\@tempc}\fi
360
+ \def\@tempb{notesep}\ifx\@tempa\@tempb
361
+ \xdef\NAT@cmt{\@tempc}\fi
362
+ \def\@tempb{citesep}\ifx\@tempa\@tempb
363
+ \xdef\NAT@sep{\@tempc}\fi
364
+ \fi
365
+ }%
366
+ \NAT@@setcites
367
+ }
368
+ \renewcommand\citestyle[1]{%
369
+ \ifcsname bibstyle@#1\endcsname%
370
+ \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
371
+ \else%
372
+ \@latex@error{Undefined `#1' citestyle}%
373
+ \fi
374
+ }%
375
+ \fi
376
+ \newcommand{\bibstyle@acmauthoryear}{%
377
+ \setcitestyle{%
378
+ authoryear,%
379
+ open={[},close={]},citesep={;},%
380
+ aysep={},yysep={,},%
381
+ notesep={, }}}
382
+ \newcommand{\bibstyle@acmnumeric}{%
383
+ \setcitestyle{%
384
+ numbers,sort&compress,%
385
+ open={[},close={]},citesep={,},%
386
+ notesep={, }}}
387
+ \if@ACM@natbib
388
+ \citestyle{acmnumeric}
389
+ \fi
390
+ \if@ACM@journal
391
+ \renewcommand\keywordsname{Additional Key Words and Phrases}%
392
+ \else
393
+ \renewcommand\keywordsname{Keywords}%
394
+ \fi
395
+ \if@ACM@engage
396
+ \renewcommand\abstractname{Synopsis}%
397
+ \fi
398
+ \ifx\ACM@languages\@empty
399
+ \else
400
+ \RequirePackage[\ACM@languages]{babel}%
401
+ \addto\captionsenglish{%
402
+ \if@ACM@journal
403
+ \renewcommand\keywordsname{Additional Key Words and Phrases}%
404
+ \else
405
+ \renewcommand\keywordsname{Keywords}%
406
+ \fi
407
+ \renewcommand\acksname{Acknowledgements}%
408
+ \if@ACM@engage
409
+ \renewcommand\abstractname{Synopsis}%
410
+ \fi
411
+ }%
412
+ \addto\captionsfrench{%
413
+ \if@ACM@journal
414
+ \renewcommand\keywordsname{Mots Clés et Phrases Supplémentaires}%
415
+ \else
416
+ \renewcommand\keywordsname{Mots clés}%
417
+ \fi
418
+ \renewcommand\acksname{Remerciements}%
419
+ }%
420
+ \addto\captionsgerman{%
421
+ \if@ACM@journal
422
+ \renewcommand\keywordsname{Zusätzliche Schlagwörter und Phrasen}%
423
+ \else
424
+ \renewcommand\keywordsname{Schlagwörter}%
425
+ \fi
426
+ \renewcommand\acksname{Danksagungen}%
427
+ }%
428
+ \addto\captionsspanish{%
429
+ \if@ACM@journal
430
+ \renewcommand\keywordsname{Palabras y Frases Claves Adicionales}%
431
+ \else
432
+ \renewcommand\keywordsname{Palabras claves}%
433
+ \fi
434
+ \renewcommand\acksname{Expresiones de gratitud}%
435
+ }%
436
+ \fi
437
+ \newcommand\ACM@lang@check[1]{%
438
+ \ifx\ACM@languages\@empty\relax
439
+ \ClassError{\@classname}{%
440
+ Command \string#1 \MessageBreak is used in monlingual document}{%
441
+ You used a command (\string#1) \MessageBreak
442
+ that does not have a meaning \MessageBreak
443
+ unless are languages are defined. \MessageBreak
444
+ Please choose the languages in \string\documentclass
445
+ \MessageBreak
446
+ (e.g. \string\documentclass[languages={french, english}]{acmart}),
447
+ \MessageBreak
448
+ or delete the command.}%
449
+ \fi}
450
+ \def\@translatedtitle{}
451
+ \newcommand\translatedtitle[2]{\ACM@lang@check{\translatedtitle}%
452
+ \g@addto@macro\@translatedtitle{\par\foreignlanguage{#1}{#2}}}
453
+ \def\@translatedsubtitle{}
454
+ \newcommand\translatedsubtitle[2]{\ACM@lang@check{\translatedsubtitle}%
455
+ \g@addto@macro\@translatedsubtitle{\par\foreignlanguage{#1}{#2}}}
456
+ \def\@translatedkeywords{}
457
+ \newcommand\translatedkeywords[2]{\ACM@lang@check{\translatedkeywords}%
458
+ \g@addto@macro\@translatedkeywords{\@mktranslatedkeywords{#1}{#2}}}
459
+ \def\@translatedabstracts{}
460
+ \newenvironment{translatedabstract}[1]{\Collect@Body
461
+ \@savetranslatedabstract\@mktranslatedabstract{#1}}{}
462
+ \long\def\@savetranslatedabstract#1{\if@ACM@maketitle@typeset
463
+ \ClassError{\@classname}{Abstract must be defined before maketitle
464
+ command. Please move it!}\fi
465
+ \ACM@lang@check{translatedabstract}%
466
+ \g@addto@macro\@translatedabstracts{\bgroup#1\egroup}}
467
+ \def\@startsection#1#2#3#4#5#6{%
468
+ \if@noskipsec \leavevmode \fi
469
+ \par
470
+ \@tempskipa #4\relax
471
+ \@afterindenttrue
472
+ \ifdim \@tempskipa <\z@
473
+ \@tempskipa -\@tempskipa \@afterindentfalse
474
+ \fi
475
+ \if@nobreak
476
+ \everypar{}%
477
+ \else
478
+ \addpenalty\@secpenalty\addvspace\@tempskipa
479
+ \fi
480
+ \@ifstar
481
+ {\@ssect{#3}{#4}{#5}{#6}}%
482
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
483
+ \def\@sect#1#2#3#4#5#6[#7]#8{%
484
+ \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
485
+ \ifnum #2>\c@secnumdepth
486
+ \let\@svsec\@empty
487
+ \else
488
+ \refstepcounter{#1}%
489
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
490
+ \fi
491
+ \@tempskipa #5\relax
492
+ \ifdim \@tempskipa>\z@
493
+ \begingroup
494
+ #6{%
495
+ \@hangfrom{\hskip #3\relax\@svsec}%
496
+ \interlinepenalty \@M #8\@@par}%
497
+ \endgroup
498
+ \csname #1mark\endcsname{#7}%
499
+ \ifnum #2>\c@secnumdepth \else
500
+ \@tochangmeasure{\csname the#1\endcsname}%
501
+ \fi
502
+ \addcontentsline{toc}{#1}{%
503
+ \ifnum #2>\c@secnumdepth \else
504
+ \protect\numberline{\csname the#1\endcsname}%
505
+ \fi
506
+ #7}%
507
+ \else
508
+ \def\@svsechd{%
509
+ #6{\hskip #3\relax
510
+ \@svsec #8}%
511
+ \csname #1mark\endcsname{#7}%
512
+ \ifnum #2>\c@secnumdepth \else
513
+ \@tochangmeasure{\csname the#1\endcsname\space}%
514
+ \fi
515
+ \addcontentsline{toc}{#1}{%
516
+ \ifnum #2>\c@secnumdepth \else
517
+ \protect\numberline{\csname the#1\endcsname}%
518
+ \fi
519
+ #7}}%
520
+ \fi
521
+ \@xsect{#5}}
522
+ \def\@xsect#1{%
523
+ \@tempskipa #1\relax
524
+ \ifdim \@tempskipa>\z@
525
+ \par \nobreak
526
+ \vskip \@tempskipa
527
+ \@afterheading
528
+ \else
529
+ \@nobreakfalse
530
+ \global\@noskipsectrue
531
+ \everypar{%
532
+ \if@noskipsec
533
+ \global\@noskipsecfalse
534
+ {\setbox\z@\lastbox}%
535
+ \clubpenalty\@M
536
+ \begingroup \@svsechd \endgroup
537
+ \unskip
538
+ \@tempskipa #1\relax
539
+ \hskip -\@tempskipa
540
+ \else
541
+ \clubpenalty \@clubpenalty
542
+ \everypar{}%
543
+ \fi}%
544
+ \fi
545
+ \ignorespaces}
546
+ \def\@seccntformat#1{\csname the#1\endcsname\quad}
547
+ \def\@ssect#1#2#3#4#5{%
548
+ \@tempskipa #3\relax
549
+ \ifdim \@tempskipa>\z@
550
+ \begingroup
551
+ #4{%
552
+ \@hangfrom{\hskip #1}%
553
+ \interlinepenalty \@M #5\@@par}%
554
+ \endgroup
555
+ \else
556
+ \def\@svsechd{#4{\hskip #1\relax #5}}%
557
+ \fi
558
+ \@xsect{#3}}
559
+ \def\@starttoc#1#2{\begingroup\makeatletter
560
+ \setTrue{#1}%
561
+ \par\removelastskip\vskip\z@skip
562
+ \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
563
+ {.5\linespacing}{\centering\contentsnamefont}{#2}%
564
+ \@input{\jobname.#1}%
565
+ \if@filesw
566
+ \@xp\newwrite\csname tf@#1\endcsname
567
+ \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
568
+ \fi
569
+ \global\@nobreakfalse \endgroup
570
+ \addvspace{32\p@\@plus14\p@}%
571
+ }
572
+ \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
573
+ \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
574
+ \def\l@subsubsection{\@tocline{3}{0pt}{1pc}{5pc}{}}
575
+ \def\@makefntext{\noindent\@makefnmark}
576
+ \if@ACM@sigchiamode
577
+ \long\def\@footnotetext#1{\marginpar{%
578
+ \reset@font\small
579
+ \interlinepenalty\interfootnotelinepenalty
580
+ \protected@edef\@currentlabel{%
581
+ \csname p@footnote\endcsname\@thefnmark
582
+ }%
583
+ \color@begingroup
584
+ \@makefntext{%
585
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
586
+ \color@endgroup}}%
587
+ \fi
588
+ \long\def\@mpfootnotetext#1{%
589
+ \global\setbox\@mpfootins\vbox{%
590
+ \unvbox\@mpfootins
591
+ \reset@font\footnotesize
592
+ \hsize\columnwidth
593
+ \@parboxrestore
594
+ \protected@edef\@currentlabel
595
+ {\csname p@mpfootnote\endcsname\@thefnmark}%
596
+ \color@begingroup\centering
597
+ \@makefntext{%
598
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
599
+ \color@endgroup}}
600
+ \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
601
+ \RequirePackage{hyperxmp}
602
+ \let\@footnotemark@nolink\@footnotemark
603
+ \let\@footnotetext@nolink\@footnotetext
604
+ \RequirePackage[bookmarksnumbered,unicode]{hyperref}
605
+ \pdfstringdefDisableCommands{%
606
+ \def\addtocounter#1#2{}%
607
+ \def\unskip{}%
608
+ \def\textbullet{- }%
609
+ \def\textrightarrow{ -> }%
610
+ \def\footnotemark{}%
611
+ }
612
+ \urlstyle{rm}
613
+ \ifcase\ACM@format@nr
614
+ \relax % manuscript
615
+ \or % acmsmall
616
+ \or % acmlarge
617
+ \or % acmtog
618
+ \or % sigconf
619
+ \or % siggraph
620
+ \or % sigplan
621
+ \urlstyle{sf}
622
+ \or % sigchi
623
+ \or % sigchi-a
624
+ \urlstyle{sf}
625
+ \or % acmengage
626
+ \or % acmcp
627
+ \fi
628
+ \AtEndPreamble{%
629
+ \if@ACM@urlbreakonhyphens
630
+ \def\do@url@hyp{\do\-}%
631
+ \fi
632
+ \if@ACM@screen
633
+ \hypersetup{colorlinks,
634
+ linkcolor=ACMPurple,
635
+ citecolor=ACMPurple,
636
+ urlcolor=ACMDarkBlue,
637
+ filecolor=ACMDarkBlue}
638
+ \else
639
+ \hypersetup{hidelinks}
640
+ \fi
641
+ \hypersetup{pdflang={en},
642
+ pdfdisplaydoctitle}}
643
+ \if@ACM@natbib
644
+ \let\citeN\cite
645
+ \let\cite\citep
646
+ \let\citeANP\citeauthor
647
+ \let\citeNN\citeyearpar
648
+ \let\citeyearNP\citeyear
649
+ \let\citeNP\citealt
650
+ \DeclareRobustCommand\citeA
651
+ {\begingroup\NAT@swafalse
652
+ \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
653
+ \providecommand\newblock{}%
654
+ \else
655
+ \AtBeginDocument{%
656
+ \let\shortcite\cite%
657
+ \providecommand\citename[1]{#1}}
658
+ \fi
659
+ \newcommand\shortcite[2][]{%
660
+ \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi}
661
+ \def\bibliographystyle#1{%
662
+ \ifx\@begindocumenthook\@undefined\else
663
+ \expandafter\AtBeginDocument
664
+ \fi
665
+ {\if@filesw
666
+ \immediate\write\@auxout{\string\bibstyle{#1}}%
667
+ \fi}}
668
+ \RequirePackage{graphicx}
669
+ \RequirePackage[prologue]{xcolor}
670
+ \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
671
+ \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
672
+ \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
673
+ \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
674
+ \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
675
+ \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
676
+ \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
677
+ \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
678
+ \if@ACM@authordraft
679
+ \RequirePackage{draftwatermark}
680
+ \SetWatermarkFontSize{0.5in}
681
+ \SetWatermarkColor[gray]{.9}
682
+ \SetWatermarkText{\parbox{12em}{\centering
683
+ Unpublished working draft.\\
684
+ Not for distribution.}}
685
+ \else
686
+ \if@ACM@sigchiamode
687
+ \if@ACM@nonacm\else
688
+ \RequirePackage{draftwatermark}
689
+ \SetWatermarkFontSize{0.5in}
690
+ \SetWatermarkColor[gray]{.9}
691
+ \SetWatermarkText{\parbox{12em}{\centering
692
+ Legacy document. \\
693
+ Not for publication in an ACM venue}}
694
+ \fi
695
+ \fi
696
+ \fi
697
+ \RequirePackage{geometry}
698
+ \ifcase\ACM@format@nr
699
+ \relax % manuscript
700
+ \geometry{letterpaper,head=13pt,
701
+ marginparwidth=6pc,heightrounded}%
702
+ \or % acmsmall
703
+ \geometry{twoside=true,
704
+ includeheadfoot, head=13pt, foot=2pc,
705
+ paperwidth=6.75in, paperheight=10in,
706
+ top=58pt, bottom=44pt, inner=46pt, outer=46pt,
707
+ marginparwidth=2pc,heightrounded
708
+ }%
709
+ \or % acmlarge
710
+ \geometry{twoside=true, head=13pt, foot=2pc,
711
+ paperwidth=8.5in, paperheight=11in,
712
+ includeheadfoot,
713
+ top=78pt, bottom=114pt, inner=81pt, outer=81pt,
714
+ marginparwidth=4pc,heightrounded
715
+ }%
716
+ \or % acmtog
717
+ \geometry{twoside=true, head=13pt, foot=2pc,
718
+ paperwidth=8.5in, paperheight=11in,
719
+ includeheadfoot, columnsep=24pt,
720
+ top=52pt, bottom=75pt, inner=52pt, outer=52pt,
721
+ marginparwidth=2pc,heightrounded
722
+ }%
723
+ \or % sigconf
724
+ \geometry{twoside=true, head=13pt,
725
+ paperwidth=8.5in, paperheight=11in,
726
+ includeheadfoot, columnsep=2pc,
727
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt,
728
+ marginparwidth=2pc,heightrounded
729
+ }%
730
+ \or % siggraph
731
+ \geometry{twoside=true, head=13pt,
732
+ paperwidth=8.5in, paperheight=11in,
733
+ includeheadfoot, columnsep=2pc,
734
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt,
735
+ marginparwidth=2pc,heightrounded
736
+ }%
737
+ \or % sigplan
738
+ \geometry{twoside=true, head=13pt,
739
+ paperwidth=8.5in, paperheight=11in,
740
+ includeheadfoot=false, columnsep=2pc,
741
+ top=1in, bottom=1in, inner=0.75in, outer=0.75in,
742
+ marginparwidth=2pc,heightrounded
743
+ }%
744
+ \or % sigchi
745
+ \geometry{twoside=true, head=13pt,
746
+ paperwidth=8.5in, paperheight=11in,
747
+ includeheadfoot, columnsep=2pc,
748
+ top=66pt, bottom=73pt, inner=54pt, outer=54pt,
749
+ marginparwidth=2pc,heightrounded
750
+ }%
751
+ \or % sigchi-a
752
+ \geometry{twoside=false, head=13pt,
753
+ paperwidth=11in, paperheight=8.5in,
754
+ includeheadfoot, marginparsep=72pt,
755
+ marginparwidth=170pt, columnsep=20pt,
756
+ top=72pt, bottom=72pt, left=314pt, right=72pt
757
+ }%
758
+ \@mparswitchfalse
759
+ \reversemarginpar
760
+ \or % acmengage
761
+ \geometry{twoside=true, head=13pt,
762
+ paperwidth=8.5in, paperheight=11in,
763
+ includeheadfoot, columnsep=2pc,
764
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt,
765
+ marginparwidth=2pc,heightrounded
766
+ }%
767
+ \or % acmcp
768
+ \geometry{twoside=true,
769
+ includeheadfoot, head=13pt, foot=2pc,
770
+ paperwidth=6.75in, paperheight=10in,
771
+ top=58pt, bottom=44pt, inner=46pt, outer=46pt,
772
+ marginparwidth=2pc,heightrounded
773
+ }%
774
+ \fi
775
+ \setlength\parindent{10\p@}
776
+ \setlength\parskip{\z@}
777
+ \ifcase\ACM@format@nr
778
+ \relax % manuscript
779
+ \or % acmsmall
780
+ \or % acmlarge
781
+ \or % acmtog
782
+ \setlength\parindent{9\p@}%
783
+ \or % sigconf
784
+ \or % siggraph
785
+ \or % sigplan
786
+ \or % sigchi
787
+ \or % sigchi-a
788
+ \or % acmengage
789
+ \or % acmcp
790
+ \fi
791
+ \setlength\normalparindent{\parindent}
792
+ \def\copyrightpermissionfootnoterule{\kern-3\p@
793
+ \hrule \@width \columnwidth \kern 2.6\p@}
794
+ \RequirePackage{manyfoot}
795
+ \SelectFootnoteRule[2]{copyrightpermission}
796
+ \DeclareNewFootnote{authorsaddresses}
797
+ \SelectFootnoteRule[2]{copyrightpermission}
798
+ \DeclareNewFootnote{copyrightpermission}
799
+ \def\footnoterule{\kern-3\p@
800
+ \hrule \@width 4pc \kern 2.6\p@}
801
+ \def\endminipage{%
802
+ \par
803
+ \unskip
804
+ \ifvoid\@mpfootins\else
805
+ \vskip\skip\@mpfootins
806
+ \normalcolor
807
+ \unvbox\@mpfootins
808
+ \fi
809
+ \@minipagefalse
810
+ \color@endgroup
811
+ \egroup
812
+ \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
813
+ \def\@textbottom{\vskip \z@ \@plus 1pt}
814
+ \let\@texttop\relax
815
+ \ifcase\ACM@format@nr
816
+ \relax % manuscript
817
+ \or % acmsmall
818
+ \or % acmlarge
819
+ \or % acmtog
820
+ \flushbottom
821
+ \or % sigconf
822
+ \flushbottom
823
+ \or % siggraph
824
+ \flushbottom
825
+ \or % sigplan
826
+ \flushbottom
827
+ \or % sigchi
828
+ \flushbottom
829
+ \or % sigchi-a
830
+ \or % acmengage
831
+ \flushbottom
832
+ \or % acmcp
833
+ \flushbottom
834
+ \fi
835
+ \ifPDFTeX
836
+ \input{glyphtounicode}
837
+ \pdfglyphtounicode{f_f}{FB00}
838
+ \pdfglyphtounicode{f_f_i}{FB03}
839
+ \pdfglyphtounicode{f_f_l}{FB04}
840
+ \pdfglyphtounicode{f_i}{FB01}
841
+ \pdfglyphtounicode{t_t}{0074 0074}
842
+ \pdfglyphtounicode{f_t}{0066 0074}
843
+ \pdfglyphtounicode{T_h}{0054 0068}
844
+ \pdfgentounicode=1
845
+ \RequirePackage{cmap}
846
+ \fi
847
+ \newif\if@ACM@newfonts
848
+ \@ACM@newfontstrue
849
+ \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
850
+ have the libertine package installed. Please upgrade your
851
+ TeX}\@ACM@newfontsfalse}
852
+ \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
853
+ have the inconsolata (zi4.sty) package installed. Please upgrade your
854
+ TeX}\@ACM@newfontsfalse}
855
+ \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
856
+ have the newtxmath package installed. Please upgrade your
857
+ TeX}\@ACM@newfontsfalse}
858
+ \if@ACM@newfonts
859
+ \RequirePackage[T1]{fontenc}
860
+ % Note that the order in which packages are loaded matters,
861
+ % and the correct order depends on the LaTeX engine used.
862
+ % See https://github.com/borisveytsman/acmart/issues/402
863
+ % and https://github.com/borisveytsman/acmart/issues/410
864
+ \ifxetex
865
+ \RequirePackage[libertine]{newtxmath}
866
+ \RequirePackage[tt=false]{libertine}
867
+ \setmonofont[StylisticSet=3]{inconsolata}
868
+ \else
869
+ \ifluatex
870
+ \RequirePackage[libertine]{newtxmath}
871
+ \RequirePackage[tt=false]{libertine}
872
+ \setmonofont[StylisticSet=3]{inconsolata}
873
+ \else
874
+ \RequirePackage[tt=false, type1=true]{libertine}
875
+ \RequirePackage[varqu]{zi4}
876
+ \RequirePackage[libertine]{newtxmath}
877
+ \fi
878
+ \fi
879
+ \fi
880
+ \let\liningnums\@undefined
881
+ \AtEndPreamble{%
882
+ \DeclareTextFontCommand{\liningnums}{\libertineLF}}
883
+ \if@ACM@sigchiamode
884
+ \renewcommand{\familydefault}{\sfdefault}
885
+ \fi
886
+ \newif\if@Description@present
887
+ \@Description@presenttrue
888
+ \newif\if@undescribed@images
889
+ \@undescribed@imagesfalse
890
+ \newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces}
891
+ \AtEndDocument{\if@undescribed@images
892
+ \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi}
893
+ \AtBeginEnvironment{figure}{\@Description@presentfalse
894
+ \let\@vspace\@vspace@orig
895
+ \let\@vspacer\@vspacer@orig}
896
+ \AtBeginEnvironment{figure*}{\@Description@presentfalse
897
+ \let\@vspace\@vspace@orig
898
+ \let\@vspacer\@vspacer@orig}
899
+ \AtEndEnvironment{figure}{\if@Description@present\else
900
+ \global\@undescribed@imagestrue
901
+ \ClassWarning{\@classname}{A possible image without description}\fi}
902
+ \AtEndEnvironment{figure*}{\if@Description@present\else
903
+ \global\@undescribed@imagestrue
904
+ \ClassWarning{\@classname}{A possible image without description}\fi}
905
+ \AtBeginEnvironment{table}{\let\@vspace\@vspace@orig
906
+ \let\@vspacer\@vspacer@orig}
907
+ \AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig
908
+ \let\@vspacer\@vspacer@orig}
909
+ \AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig
910
+ \let\@vspacer\@vspacer@orig}
911
+ \AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig
912
+ \let\@vspacer\@vspacer@orig}
913
+ \AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig
914
+ \let\@vspacer\@vspacer@orig}
915
+ \AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig
916
+ \let\@vspacer\@vspacer@orig}
917
+ \AtBeginEnvironment{minted}{\let\@vspace\@vspace@orig
918
+ \let\@vspacer\@vspacer@orig}
919
+ \AtBeginEnvironment{minted*}{\let\@vspace\@vspace@orig
920
+ \let\@vspacer\@vspacer@orig}
921
+ \AtBeginEnvironment{listing}{\let\@vspace\@vspace@orig
922
+ \let\@vspacer\@vspacer@orig}
923
+ \AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig
924
+ \let\@vspacer\@vspacer@orig}
925
+
926
+ \RequirePackage{caption, float}
927
+ \captionsetup[table]{position=top}
928
+ \if@ACM@journal
929
+ \captionsetup{labelfont={sf, small},
930
+ textfont={sf, small}, margin=\z@}
931
+ \captionsetup[figure]{name={Fig.}}
932
+ \else
933
+ \captionsetup{labelfont={bf},
934
+ textfont={bf}, labelsep=colon, margin=\z@}
935
+ \ifcase\ACM@format@nr
936
+ \relax % manuscript
937
+ \or % acmsmall
938
+ \or % acmlarge
939
+ \or % acmtog
940
+ \or % sigconf
941
+ \or % siggraph
942
+ \captionsetup{textfont={it}}
943
+ \or % sigplan
944
+ \captionsetup{labelfont={bf},
945
+ textfont={normalfont}, labelsep=period, margin=\z@}
946
+ \or % sigchi
947
+ \captionsetup[figure]{labelfont={bf, small},
948
+ textfont={bf, small}}
949
+ \captionsetup[table]{labelfont={bf, small},
950
+ textfont={bf, small}}
951
+ \or % sigchi-a
952
+ \captionsetup[figure]{labelfont={bf, small},
953
+ textfont={bf, small}}
954
+ \captionsetup[table]{labelfont={bf, small},
955
+ textfont={bf, small}}
956
+ \or % acmengage
957
+ \or % acmcp
958
+ \fi
959
+ \fi
960
+ \newfloat{sidebar}{}{sbar}
961
+ \floatname{sidebar}{Sidebar}
962
+ \renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
963
+ \long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig
964
+ \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}%
965
+ \marginpar{\small#1}\egroup}
966
+ \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
967
+ \long\def\@marginfigure#1{\bgroup
968
+ \let\@vspace\@vspace@orig
969
+ \let\@vspacer\@vspacer@orig
970
+ \captionsetup{type=figure}%
971
+ \marginpar{\@Description@presentfalse\centering
972
+ \small#1\if@Description@present\else
973
+ \global\@undescribed@imagestrue
974
+ \ClassWarning{\@classname}{A possible image without description}
975
+ \fi}%
976
+ \egroup}
977
+ \newenvironment{margintable}{\Collect@Body\@margintable}{}
978
+ \long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig
979
+ \let\@vspacer\@vspacer@orig\captionsetup{type=table}%
980
+ \marginpar{\centering\small#1}\egroup}
981
+ \newdimen\fulltextwidth
982
+ \fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
983
+ \if@ACM@sigchiamode
984
+ \def\@dblfloat{\bgroup\let\@vspace\@vspace@orig
985
+ \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth
986
+ \let\@endfloatbox\@endwidefloatbox
987
+ \def\@fpsadddefault{\def\@fps{tp}}%
988
+ \@float}
989
+ \fi
990
+ \if@ACM@sigchiamode
991
+ \def\end@dblfloat{%
992
+ \end@float\egroup}
993
+ \fi
994
+ \def\@endwidefloatbox{%
995
+ \par\vskip\z@skip
996
+ \@minipagefalse
997
+ \outer@nobreak
998
+ \egroup
999
+ \color@endbox
1000
+ \global\setbox\@currbox=\vbox{\moveleft
1001
+ \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
1002
+ \wd\@currbox=\textwidth
1003
+ }
1004
+ \ifcase\ACM@format@nr
1005
+ \relax % manuscript
1006
+ \or % acmsmall
1007
+ \or % acmlarge
1008
+ \or % acmtog
1009
+ \or % sigconf
1010
+ \or % siggraph
1011
+ \or % sigplan
1012
+ \def\labelenumi{\theenumi.}
1013
+ \def\labelenumii{\theenumii.}
1014
+ \def\labelenumiii{\theenumiii.}
1015
+ \def\labelenumiv{\theenumiv.}
1016
+ \or % sigchi
1017
+ \or % sigchi-a
1018
+ \or % acmengage
1019
+ \or % acmcp
1020
+ \fi
1021
+ \newdimen\@ACM@labelwidth
1022
+ \AtBeginDocument{%
1023
+ \setlength\labelsep{4pt}
1024
+ \setlength{\@ACM@labelwidth}{6.5pt}
1025
+
1026
+ %% First-level list: when beginning after the first line of an
1027
+ %% indented paragraph or ending before an indented paragraph, labels
1028
+ %% should not hang to the left of the preceding/following text.
1029
+ \setlength\leftmargini{\z@}
1030
+ \addtolength\leftmargini{\parindent}
1031
+ \addtolength\leftmargini{2\labelsep}
1032
+ \addtolength\leftmargini{\@ACM@labelwidth}
1033
+
1034
+ %% Second-level and higher lists.
1035
+ \setlength\leftmarginii{\z@}
1036
+ \addtolength\leftmarginii{0.5\labelsep}
1037
+ \addtolength\leftmarginii{\@ACM@labelwidth}
1038
+ \setlength\leftmarginiii{\leftmarginii}
1039
+ \setlength\leftmarginiv{\leftmarginiii}
1040
+ \setlength\leftmarginv{\leftmarginiv}
1041
+ \setlength\leftmarginvi{\leftmarginv}
1042
+ \@listi}
1043
+ \newskip\listisep
1044
+ \listisep\smallskipamount
1045
+ \def\@listI{\leftmargin\leftmargini
1046
+ \labelwidth\leftmargini \advance\labelwidth-\labelsep
1047
+ \listparindent\z@
1048
+ \topsep\listisep}
1049
+ \let\@listi\@listI
1050
+ \def\@listii{\leftmargin\leftmarginii
1051
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
1052
+ \topsep\z@skip}
1053
+ \def\@listiii{\leftmargin\leftmarginiii
1054
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
1055
+ \def\@listiv{\leftmargin\leftmarginiv
1056
+ \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
1057
+ \def\@listv{\leftmargin\leftmarginv
1058
+ \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
1059
+ \def\@listvi{\leftmargin\leftmarginvi
1060
+ \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
1061
+ \renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
1062
+ \renewenvironment{description}{\list{}{%
1063
+ \labelwidth\@ACM@labelwidth
1064
+ \let\makelabel\descriptionlabel}%
1065
+ }{
1066
+ \endlist
1067
+ }
1068
+ \let\enddescription=\endlist % for efficiency
1069
+ \newif\if@ACM@maketitle@typeset
1070
+ \@ACM@maketitle@typesetfalse
1071
+ \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
1072
+ ACMJCSS,%
1073
+ CIE,%
1074
+ CSUR,%
1075
+ DGOV,%
1076
+ DLT,%
1077
+ DTRAP,%
1078
+ FAC,%
1079
+ GAMES,%
1080
+ HEALTH,%
1081
+ IMWUT,%
1082
+ JACM,%
1083
+ JATS,%
1084
+ JDIQ,%
1085
+ JDS,%
1086
+ JEA,%
1087
+ JERIC,%
1088
+ JETC,%
1089
+ JOCCH,%
1090
+ JRC,%
1091
+ PACMCGIT,%
1092
+ PACMHCI,%
1093
+ PACMNET,%
1094
+ PACMPL,%
1095
+ POMACS,%
1096
+ TAAS,%
1097
+ TACCESS,%
1098
+ TACO,%
1099
+ TALG,%
1100
+ TALLIP,%
1101
+ TAP,%
1102
+ TCPS,%
1103
+ TDS,%
1104
+ TEAC,%
1105
+ TECS,%
1106
+ TELO,%
1107
+ THRI,%
1108
+ TIIS,%
1109
+ TIOT,%
1110
+ TISSEC,%
1111
+ TIST,%
1112
+ TKDD,%
1113
+ TMIS,%
1114
+ TOCE,%
1115
+ TOCHI,%
1116
+ TOCL,%
1117
+ TOCS,%
1118
+ TOCT,%
1119
+ TODAES,%
1120
+ TODS,%
1121
+ TOG,%
1122
+ TOIS,%
1123
+ TOIT,%
1124
+ TOMACS,%
1125
+ TOMM,%
1126
+ TOMPECS,%
1127
+ TOMS,%
1128
+ TOPC,%
1129
+ TOPS,%
1130
+ TOPLAS,%
1131
+ TORS,%
1132
+ TOS,%
1133
+ TOSEM,%
1134
+ TOSN,%
1135
+ TQC,%
1136
+ TRETS,%
1137
+ TSAS,%
1138
+ TSC,%
1139
+ TSLP,%
1140
+ TWEB,%
1141
+ FACMP%
1142
+ }{%
1143
+ \ifcase\@journalCode@nr
1144
+ \relax % ACMJCSS
1145
+ \def\@journalName{ACM Journal on Computing and Sustainable Societies}%
1146
+ \def\@journalNameShort{ACM J. Comput. Sustain. Soc.}%
1147
+ \def\@permissionCodeOne{2834-5533}%
1148
+ \or % CIE
1149
+ \def\@journalName{ACM Computers in Entertainment}%
1150
+ \def\@journalNameShort{ACM Comput. Entertain.}%
1151
+ \def\@permissionCodeOne{1544-3574}%
1152
+ \or % CSUR
1153
+ \def\@journalName{ACM Computing Surveys}%
1154
+ \def\@journalNameShort{ACM Comput. Surv.}%
1155
+ \def\@permissionCodeOne{0360-0300}%
1156
+ \or % DGOV
1157
+ \def\@journalName{Digital Government: Research and Practice}%
1158
+ \def\@journalNameShort{Digit. Gov. Res. Pract.}%
1159
+ \def\@permissionCodeOne{2639-0175}%
1160
+ \or % DLT
1161
+ \def\@journalName{Distributed Ledger Technologies: Research and Practice}%
1162
+ \def\@journalNameShort{Distrib. Ledger Technol.}%
1163
+ \def\@permissionCodeOne{2769-6472}%
1164
+ \or % DTRAP
1165
+ \def\@journalName{Digital Threats: Research and Practice}%
1166
+ \def\@journalNameShort{Digit. Threat. Res. Pract.}%
1167
+ \def\@permissionCodeOne{2576-5337}%
1168
+ \or % FAC
1169
+ \def\@journalName{Formal Aspects of Computing}%
1170
+ \def\@journalNameShort{Form. Asp. Comput.}%
1171
+ \def\@permissionCodeOne{0934-5043}%
1172
+ \def\@permissionCodeTwo{1433-299X}%
1173
+ \or % GAMES
1174
+ \def\@journalName{ACM Games: Research and Practice}%
1175
+ \def\@journalNameShort{ACM Games}%
1176
+ \def\@permissionCodeOne{2832-5516}%
1177
+ \or % HEALTH
1178
+ \def\@journalName{ACM Transactions on Computing for Healthcare}%
1179
+ \def\@journalNameShort{ACM Trans. Comput. Healthcare}%
1180
+ \def\@permissionCodeOne{2637-8051}%
1181
+ \or % IMWUT
1182
+ \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
1183
+ Wearable and Ubiquitous Technologies}%
1184
+ \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
1185
+ \def\@permissionCodeOne{2474-9567}%
1186
+ \@ACM@screentrue
1187
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1188
+ \or % JACM
1189
+ \def\@journalName{Journal of the ACM}%
1190
+ \def\@journalNameShort{J. ACM}%
1191
+ \def\@permissionCodeOne{0004-5411}%
1192
+ \or % JATS
1193
+ \def\@journalName{Journal on Autonomous Transportation Systems}%
1194
+ \def\@journalNameShort{ACM J. Auton. Transport. Syst.}%
1195
+ \def\@permissionCodeOne{2833-0528}%
1196
+ \or % JDIQ
1197
+ \def\@journalName{ACM Journal of Data and Information Quality}%
1198
+ \def\@journalNameShort{ACM J. Data Inform. Quality}%
1199
+ \def\@permissionCodeOne{1936-1955}%
1200
+ \or % JDS
1201
+ \def\@journalName{ACM/JMS Journal of Data Science}%
1202
+ \def\@journalNameShort{ACM/IMS J. Data Sci.}%
1203
+ \def\@permissionCodeOne{2831-3194}%
1204
+ \def\@permissionCodeTwo{2831-3194}%
1205
+ \or % JEA
1206
+ \def\@journalName{ACM Journal of Experimental Algorithmics}%
1207
+ \def\@journalNameShort{ACM J. Exp. Algor.}%
1208
+ \def\@permissionCodeOne{1084-6654}%
1209
+ \or % JERIC
1210
+ \def\@journalName{ACM Journal of Educational Resources in Computing}%
1211
+ \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
1212
+ \def\@permissionCodeOne{1073-0516}%
1213
+ \or % JETC
1214
+ \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
1215
+ \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
1216
+ \def\@permissionCodeOne{1550-4832}%
1217
+ \or % JOCCH
1218
+ \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
1219
+ \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
1220
+ \def\@permissionCodeOne{1556-4673}%
1221
+ \def\@permissionCodeTwo{1556-4711}%
1222
+ \or % JRC
1223
+ \def\@journalName{ACM Journal on Responsible Computing}%
1224
+ \def\@journalNameShort{ACM J. Responsib. Comput.}%
1225
+ \def\@permissionCodeOne{2832-0565}%
1226
+ \or % PACMCGIT
1227
+ \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}%
1228
+ \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}%
1229
+ \def\@permissionCodeOne{2577-6193}%
1230
+ \@ACM@screentrue
1231
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1232
+ \or % PACMHCI
1233
+ \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
1234
+ \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
1235
+ \def\@permissionCodeOne{2573-0142}%
1236
+ \@ACM@screentrue
1237
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1238
+ \or % PACMNET
1239
+ \def\@journalName{Proceedings of the ACM on Networkng}%
1240
+ \def\@journalNameShort{Proc. ACM Netw.}%
1241
+ \def\@permissionCodeOne{2834-5509}%
1242
+ \or % PACMPL
1243
+ \def\@journalName{Proceedings of the ACM on Programming Languages}%
1244
+ \def\@journalNameShort{Proc. ACM Program. Lang.}%
1245
+ \def\@permissionCodeOne{2475-1421}%
1246
+ \@ACM@screentrue
1247
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1248
+ \or % POMACS
1249
+ \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
1250
+ \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
1251
+ \def\@permissionCodeOne{2476-1249}%
1252
+ \@ACM@screentrue
1253
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1254
+ \or % TAAS
1255
+ \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
1256
+ \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
1257
+ \def\@permissionCodeOne{1556-4665}%
1258
+ \or % TACCESS
1259
+ \def\@journalName{ACM Transactions on Accessible Computing}%
1260
+ \def\@journalNameShort{ACM Trans. Access. Comput.}%
1261
+ \def\@permissionCodeOne{1936-7228}%
1262
+ \or % TACO
1263
+ \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
1264
+ \def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
1265
+ \def\@permissionCodeOne{1544-3566}%
1266
+ \def\@permissionCodeTwo{1544-3973}%
1267
+ \or % TALG
1268
+ \def\@journalName{ACM Transactions on Algorithms}%
1269
+ \def\@journalNameShort{ACM Trans. Algor.}%
1270
+ \def\@permissionCodeOne{1549-6325}%
1271
+ \or % TALLIP
1272
+ \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
1273
+ \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
1274
+ \def\@permissionCodeOne{2375-4699}%
1275
+ \or % TAP
1276
+ \def\@journalName{ACM Transactions on Applied Perception}%
1277
+ \def\@journalNameShort{ACM Trans. Appl. Percept.}%
1278
+ \def\@permissionCodeOne{1544-3558}%
1279
+ \or % TCPS
1280
+ \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
1281
+ \def\@journalNameShort{ACM Trans. Cyber-Phys. Syst.}%
1282
+ \def\@permissionCodeOne{2378-962X}%
1283
+ \or % TDS
1284
+ \def\@journalName{ACM/IMS Transactions on Data Science}%
1285
+ \def\@journalNameShort{ACM/IMS Trans. Data Sci.}%
1286
+ \def\@permissionCodeOne{2577-3224}%
1287
+ \or % TEAC
1288
+ \def\@journalName{ACM Transactions on Economics and Computation}%
1289
+ \def\@journalNameShort{ACM Trans. Econ. Comput.}%
1290
+ \def\@permissionCodeOne{2167-8375}%
1291
+ \or % TECS
1292
+ \def\@journalName{ACM Transactions on Embedded Computing Systems}%
1293
+ \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
1294
+ \def\@permissionCodeOne{1539-9087}%
1295
+ \or % TELO
1296
+ \def\@journalName{ACM Transactions on Evolutionary Learning}%
1297
+ \def\@journalNameShort{ACM Trans. Evol. Learn.}%
1298
+ \def\@permissionCodeOne{2688-3007}%
1299
+ \or % THRI
1300
+ \def\@journalName{ACM Transactions on Human-Robot Interaction}%
1301
+ \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
1302
+ \def\@permissionCodeOne{2573-9522}%
1303
+ \or % TIIS
1304
+ \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
1305
+ \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
1306
+ \def\@permissionCodeOne{2160-6455}%
1307
+ \or % TIOT
1308
+ \def\@journalName{ACM Transactions on Internet of Things}%
1309
+ \def\@journalNameShort{ACM Trans. Internet Things}%
1310
+ \def\@permissionCodeOne{2577-6207}%
1311
+ \or % TISSEC
1312
+ \def\@journalName{ACM Transactions on Information and System Security}%
1313
+ \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
1314
+ \def\@permissionCodeOne{1094-9224}%
1315
+ \or % TIST
1316
+ \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
1317
+ \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
1318
+ \def\@permissionCodeOne{2157-6904}%
1319
+ \or % TKDD
1320
+ \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
1321
+ \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
1322
+ \def\@permissionCodeOne{1556-4681}%
1323
+ \or % TMIS
1324
+ \def\@journalName{ACM Transactions on Management Information Systems}%
1325
+ \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
1326
+ \def\@permissionCodeOne{2158-656X}%
1327
+ \or % TOCE
1328
+ \def\@journalName{ACM Transactions on Computing Education}%
1329
+ \def\@journalNameShort{ACM Trans. Comput. Educ.}%
1330
+ \def\@permissionCodeOne{1946-6226}%
1331
+ \or % TOCHI
1332
+ \def\@journalName{ACM Transactions on Computer-Human Interaction}%
1333
+ \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
1334
+ \def\@permissionCodeOne{1073-0516}%
1335
+ \or % TOCL
1336
+ \def\@journalName{ACM Transactions on Computational Logic}%
1337
+ \def\@journalNameShort{ACM Trans. Comput. Logic}%
1338
+ \def\@permissionCodeOne{1529-3785}%
1339
+ \or % TOCS
1340
+ \def\@journalName{ACM Transactions on Computer Systems}%
1341
+ \def\@journalNameShort{ACM Trans. Comput. Syst.}%
1342
+ \def\@permissionCodeOne{0734-2071}%
1343
+ \or % TOCT
1344
+ \def\@journalName{ACM Transactions on Computation Theory}%
1345
+ \def\@journalNameShort{ACM Trans. Comput. Theory}%
1346
+ \def\@permissionCodeOne{1942-3454}%
1347
+ \or % TODAES
1348
+ \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
1349
+ \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
1350
+ \def\@permissionCodeOne{1084-4309}%
1351
+ \or % TODS
1352
+ \def\@journalName{ACM Transactions on Database Systems}%
1353
+ \def\@journalNameShort{ACM Trans. Datab. Syst.}%
1354
+ \def\@permissionCodeOne{0362-5915}%
1355
+ \or % TOG
1356
+ \def\@journalName{ACM Transactions on Graphics}%
1357
+ \def\@journalNameShort{ACM Trans. Graph.}%
1358
+ \def\@permissionCodeOne{0730-0301}
1359
+ \or % TOIS
1360
+ \def\@journalName{ACM Transactions on Information Systems}%
1361
+ \def\@journalNameShort{ACM Trans. Inf. Syst.}%
1362
+ \def\@permissionCodeOne{1046-8188}%
1363
+ \or % TOIT
1364
+ \def\@journalName{ACM Transactions on Internet Technology}%
1365
+ \def\@journalNameShort{ACM Trans. Internet Technol.}%
1366
+ \def\@permissionCodeOne{1533-5399}%
1367
+ \or % TOMACS
1368
+ \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
1369
+ \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
1370
+ \def\@permissionCodeOne{1049-3301}%
1371
+ \def\@permissionCodeTwo{1558-1195}%
1372
+ \or % TOMM
1373
+ \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
1374
+ \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
1375
+ \def\@permissionCodeOne{1551-6857}%
1376
+ \def\@permissionCodeTwo{1551-6865}%
1377
+ \or % TOMPECS
1378
+ \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
1379
+ \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
1380
+ \def\@permissionCodeOne{2376-3639}%
1381
+ \or % TOMS
1382
+ \def\@journalName{ACM Transactions on Mathematical Software}%
1383
+ \def\@journalNameShort{ACM Trans. Math. Softw.}%
1384
+ \def\@permissionCodeOne{0098-3500}%
1385
+ \or % TOPC
1386
+ \def\@journalName{ACM Transactions on Parallel Computing}%
1387
+ \def\@journalNameShort{ACM Trans. Parallel Comput.}%
1388
+ \def\@permissionCodeOne{2329-4949}%
1389
+ \def\@permissionCodeTwo{2329-4957}%
1390
+ \or % TOPS
1391
+ \def\@journalName{ACM Transactions on Privacy and Security}%
1392
+ \def\@journalNameShort{ACM Trans. Priv. Sec.}%
1393
+ \def\@permissionCodeOne{2471-2566}%
1394
+ \or % TOPLAS
1395
+ \def\@journalName{ACM Transactions on Programming Languages and Systems}%
1396
+ \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
1397
+ \def\@permissionCodeOne{0164-0925}%
1398
+ \or % TORS
1399
+ \def\@journalName{ACM Transactions on Recommender Systems}%
1400
+ \def\@journalNameShort{ACM Trans. Recomm. Syst.}%
1401
+ \def\@permissionCodeOne{2770-6699}%
1402
+ \or % TOS
1403
+ \def\@journalName{ACM Transactions on Storage}%
1404
+ \def\@journalNameShort{ACM Trans. Storage}%
1405
+ \def\@permissionCodeOne{1553-3077}%
1406
+ \or % TOSEM
1407
+ \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
1408
+ \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
1409
+ \def\@permissionCodeOne{1049-331X}%
1410
+ \or % TOSN
1411
+ \def\@journalName{ACM Transactions on Sensor Networks}%
1412
+ \def\@journalNameShort{ACM Trans. Sensor Netw.}%
1413
+ \def\@permissionCodeOne{1550-4859}%
1414
+ \or % TQC
1415
+ \def\@journalName{ACM Transactions on Quantum Computing}%
1416
+ \def\@journalNameShort{ACM Trans. Quantum Comput.}%
1417
+ \def\@permissionCodeOne{2643-6817}%
1418
+ \or % TRETS
1419
+ \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
1420
+ \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
1421
+ \def\@permissionCodeOne{1936-7406}%
1422
+ \or % TSAS
1423
+ \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
1424
+ \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
1425
+ \def\@permissionCodeOne{2374-0353}%
1426
+ \or % TSC
1427
+ \def\@journalName{ACM Transactions on Social Computing}%
1428
+ \def\@journalNameShort{ACM Trans. Soc. Comput.}%
1429
+ \def\@permissionCodeOne{2469-7818}%
1430
+ \or % TSLP
1431
+ \def\@journalName{ACM Transactions on Speech and Language Processing}%
1432
+ \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
1433
+ \def\@permissionCodeOne{1550-4875}%
1434
+ \or % TWEB
1435
+ \def\@journalName{ACM Transactions on the Web}%
1436
+ \def\@journalNameShort{ACM Trans. Web}%
1437
+ \def\@permissionCodeOne{1559-1131}%
1438
+ \else % FACMP, a dummy journal
1439
+ \def\@journalName{ACM Just Accepted}%
1440
+ \def\@journalNameShort{ACM Accepted}%
1441
+ \def\@permissionCodeOne{XXXX-XXXX}%
1442
+ \fi
1443
+ \ClassInfo{\@classname}{Using journal code \@journalCode}%
1444
+ }{%
1445
+ \ClassError{\@classname}{Incorrect journal #1}%
1446
+ }%
1447
+ \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}%
1448
+ \global\@ACM@journal@bibstriptrue}
1449
+ \def\@journalCode@nr{0}
1450
+ \def\@journalName{}%
1451
+ \def\@journalNameShort{\@journalName}%
1452
+ \def\@permissionCodeOne{XXXX-XXXX}%
1453
+ \def\@permissionCodeTwo{}%
1454
+ \newcommand\acmConference[4][]{%
1455
+ \gdef\acmConference@shortname{#1}%
1456
+ \gdef\acmConference@name{#2}%
1457
+ \gdef\acmConference@date{#3}%
1458
+ \gdef\acmConference@venue{#4}%
1459
+ \ifx\acmConference@shortname\@empty
1460
+ \gdef\acmConference@shortname{#2}%
1461
+ \fi
1462
+ \global\@ACM@journal@bibstripfalse
1463
+ }
1464
+ \if@ACM@journal\else
1465
+ \acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
1466
+ DC, USA}%
1467
+ \fi
1468
+ \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
1469
+ \acmBooktitle{}
1470
+ \ifx\acmConference@name\@undefined\else
1471
+ \acmBooktitle{Proceedings of \acmConference@name
1472
+ \ifx\acmConference@name\acmConference@shortname\else
1473
+ \ (\acmConference@shortname)\fi}
1474
+ \fi
1475
+ \def\@editorsAbbrev{(Ed.)}
1476
+ \def\@acmEditors{}
1477
+ \def\editor#1{\ifx\@acmEditors\@empty
1478
+ \gdef\@acmEditors{#1}%
1479
+ \else
1480
+ \gdef\@editorsAbbrev{(Eds.)}%
1481
+ \g@addto@macro\@acmEditors{\and#1}%
1482
+ \fi}
1483
+ \def\subtitle#1{\def\@subtitle{#1}}
1484
+ \subtitle{}
1485
+ \newcount\num@authorgroups
1486
+ \num@authorgroups=0\relax
1487
+ \newcount\num@authors
1488
+ \num@authors=0\relax
1489
+ \newif\if@insideauthorgroup
1490
+ \@insideauthorgroupfalse
1491
+ \renewcommand\author[2][]{%
1492
+ \IfSubStr{\detokenize{#2}}{,}{\ClassWarning{\@classname}{Do not put several
1493
+ authors in the same \string\author\space macro!}}{}%
1494
+ \global\advance\num@authors by 1\relax
1495
+ \if@insideauthorgroup\else
1496
+ \global\advance\num@authorgroups by 1\relax
1497
+ \global\@insideauthorgrouptrue
1498
+ \fi
1499
+ \ifx\addresses\@empty
1500
+ \if@ACM@anonymous
1501
+ \gdef\addresses{\@author{Anonymous Author(s)%
1502
+ \ifx\@acmSubmissionID\@empty\else\\Submission Id:
1503
+ \@acmSubmissionID\fi}}%
1504
+ \gdef\authors{Anonymous Author(s)}%
1505
+ \else
1506
+ \expandafter\gdef\expandafter\addresses\expandafter{%
1507
+ \expandafter\@author\expandafter{%
1508
+ \csname typeset@author\the\num@authors\endcsname{#2}}}%
1509
+ \gdef\authors{#2}%
1510
+ \fi
1511
+ \else
1512
+ \if@ACM@anonymous\else
1513
+ \expandafter\g@addto@macro\expandafter\addresses\expandafter{%
1514
+ \expandafter\and\expandafter\@author\expandafter{%
1515
+ \csname typeset@author\the\num@authors\endcsname{#2}}}%
1516
+ \g@addto@macro\authors{\and#2}%
1517
+ \fi
1518
+ \fi
1519
+ \if@ACM@anonymous
1520
+ \ifx\shortauthors\@empty
1521
+ \gdef\shortauthors{Anon.
1522
+ \ifx\@acmSubmissionID\@empty\else Submission Id:
1523
+ \@acmSubmissionID\fi}%
1524
+ \fi
1525
+ \else
1526
+ \def\@tempa{#1}%
1527
+ \ifx\@tempa\@empty
1528
+ \ifx\shortauthors\@empty
1529
+ \gdef\shortauthors{#2}%
1530
+ \else
1531
+ \g@addto@macro\shortauthors{\and#2}%
1532
+ \fi
1533
+ \else
1534
+ \ifx\shortauthors\@empty
1535
+ \gdef\shortauthors{#1}%
1536
+ \else
1537
+ \g@addto@macro\shortauthors{\and#1}%
1538
+ \fi
1539
+ \fi
1540
+ \fi}
1541
+ \newcommand{\affiliation}[2][]{%
1542
+ \global\@insideauthorgroupfalse
1543
+ \if@ACM@anonymous\else
1544
+ \g@addto@macro\addresses{\affiliation{#1}{#2}}%
1545
+ \fi}
1546
+ \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
1547
+ [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}
1548
+ \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
1549
+ \def\@additionalaffiliation#1{\bgroup
1550
+ \def\position##1{\ignorespaces}%
1551
+ \def\institution##1{##1\ignorespaces}%
1552
+ \def\department{\@ifnextchar[{\@department}{\@department[]}}%
1553
+ \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
1554
+ \let\streetaddress\position
1555
+ \let\city\position
1556
+ \let\state\position
1557
+ \let\postcode\position
1558
+ \let\country\position
1559
+ Also with #1\unskip.\egroup}
1560
+ \renewcommand{\email}[2][]{%
1561
+ \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
1562
+ addresses in the same \string\email\space macro!}}{}%
1563
+ \if@ACM@anonymous\else
1564
+ \g@addto@macro\addresses{\email{#1}{#2}}%
1565
+ \fi}
1566
+ \def\orcid#1{\unskip\ignorespaces%
1567
+ \IfBeginWith{#1}{http}{%
1568
+ \expandafter\gdef\csname
1569
+ typeset@author\the\num@authors\endcsname##1{%
1570
+ \href{#1}{##1}}}{%
1571
+ \expandafter\gdef\csname
1572
+ typeset@author\the\num@authors\endcsname##1{%
1573
+ \href{https://orcid.org/#1}{##1}}}}
1574
+ \def\authorsaddresses#1{\def\@authorsaddresses{#1}}
1575
+ \authorsaddresses{\@mkauthorsaddresses}
1576
+ \newcommand\@mktranslatedkeywords[2]{\bgroup
1577
+ \selectlanguage{#1}%
1578
+ {\@specialsection{\keywordsname}%
1579
+ \noindent#2\par}\egroup}
1580
+ \def\@titlenotes{}
1581
+ \def\titlenote#1{%
1582
+ \g@addto@macro\@title{\footnotemark}%
1583
+ \if@ACM@anonymous
1584
+ \g@addto@macro\@titlenotes{%
1585
+ \stepcounter{footnote}\footnotetext{Title note}}%
1586
+ \else
1587
+ \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
1588
+ \fi}
1589
+ \def\@subtitlenotes{}
1590
+ \def\subtitlenote#1{%
1591
+ \g@addto@macro\@subtitle{\footnotemark}%
1592
+ \if@ACM@anonymous
1593
+ \g@addto@macro\@subtitlenotes{%
1594
+ \stepcounter{footnote}\footnotetext{Subtitle note}}%
1595
+ \else
1596
+ \g@addto@macro\@subtitlenotes{%
1597
+ \stepcounter{footnote}\footnotetext{#1}}%
1598
+ \fi}
1599
+ \def\@authornotes{}
1600
+ \def\authornote#1{%
1601
+ \if@ACM@anonymous\else
1602
+ \g@addto@macro\addresses{\@authornotemark}%
1603
+ \g@addto@macro\@authornotes{%
1604
+ \stepcounter{footnote}\footnotetext{#1}}%
1605
+ \fi}
1606
+ \newcommand\authornotemark[1][\relax]{%
1607
+ \ifx#1\relax\relax\relax
1608
+ \g@addto@macro\addresses{\@authornotemark}%
1609
+ \else
1610
+ \g@addto@macro\addresses{\@@authornotemark{#1}}%
1611
+ \fi}
1612
+ \def\acmVolume#1{\def\@acmVolume{#1}}
1613
+ \acmVolume{1}
1614
+ \def\acmNumber#1{\def\@acmNumber{#1}}
1615
+ \acmNumber{1}
1616
+ \def\acmArticle#1{\def\@acmArticle{#1}}
1617
+ \acmArticle{}
1618
+ \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
1619
+ \acmArticleSeq{\@acmArticle}
1620
+ \def\acmYear#1{\def\@acmYear{#1}}
1621
+ \acmYear{\the\year}
1622
+ \def\acmMonth#1{\def\@acmMonth{#1}}
1623
+ \acmMonth{\the\month}
1624
+ \def\@acmPubDate{\ifcase\@acmMonth\or
1625
+ January\or February\or March\or April\or May\or June\or
1626
+ July\or August\or September\or October\or November\or
1627
+ December\fi~\@acmYear}
1628
+ \def\acmPrice#1{\def\@acmPrice{#1}}
1629
+ \acmPrice{15.00}
1630
+ \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
1631
+ \acmSubmissionID{}
1632
+ \def\acmISBN#1{\def\@acmISBN{#1}}
1633
+ \acmISBN{978-x-xxxx-xxxx-x/YY/MM}
1634
+ \def\acmDOI#1{\def\@acmDOI{#1}}
1635
+ \acmDOI{10.1145/nnnnnnn.nnnnnnn}
1636
+ \newlength\@ACM@badge@width
1637
+ \setlength\@ACM@badge@width{3pc}
1638
+ \newlength\@ACM@title@width
1639
+ \newlength\@ACM@badge@skip
1640
+ \setlength\@ACM@badge@skip{1pt}
1641
+ \def\@acmBadgeR{}
1642
+ \def\@acmBadgeL{}
1643
+ \newcommand\acmBadgeR[2][]{%
1644
+ \ifx\@acmBadgeR\@empty
1645
+ \gdef\@acmBadgeR{%
1646
+ \smash{%
1647
+ \raisebox{0.5\height}{%
1648
+ \href{#1}{\includegraphics[width=\@ACM@badge@width]{#2}}}}}%
1649
+ \else
1650
+ \g@addto@macro{\@acmBadgeR}{%
1651
+ \hspace{\@ACM@badge@skip}%
1652
+ \smash{%
1653
+ \raisebox{0.5\height}{%
1654
+ \href{#1}{\includegraphics[width=\@ACM@badge@width]{#2}}}}}%
1655
+ \fi}
1656
+ \newcommand\acmBadgeL[2][]{%
1657
+ \ifx\@acmBadgeL\@empty
1658
+ \gdef\@acmBadgeL{%
1659
+ \smash{%
1660
+ \raisebox{0.5\height}{%
1661
+ \href{#1}{\includegraphics[width=\@ACM@badge@width]{#2}}}}}%
1662
+ \else
1663
+ \g@addto@macro{\@acmBadgeL}{%
1664
+ \hspace{\@ACM@badge@skip}%
1665
+ \smash{%
1666
+ \raisebox{0.5\height}{%
1667
+ \href{#1}{\includegraphics[width=\@ACM@badge@width]{#2}}}}}%
1668
+ \fi}
1669
+ \let\acmBadge=\acmBadgeR
1670
+ \def\startPage#1{\def\@startPage{#1}}
1671
+ \startPage{}
1672
+ \def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
1673
+ obsolete. I am going to ignore it}}
1674
+ \def\keywords#1{\def\@keywords{#1}}
1675
+ \let\@keywords\@empty
1676
+ \AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty
1677
+ \ifnum\getrefnumber{TotPages}>2\relax
1678
+ \ClassWarningNoLine{\@classname}{ACM keywords are mandatory
1679
+ for papers over two pages}%
1680
+ \fi\fi\fi}
1681
+ \renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
1682
+ \long\def\@saveabstract#1{\if@ACM@maketitle@typeset
1683
+ \ClassError{\@classname}{Abstract must be defined before maketitle
1684
+ command. Please move it!}\fi
1685
+ \long\gdef\@abstract{#1}}
1686
+ \@saveabstract{}
1687
+ \long\def\@lempty{}
1688
+ \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
1689
+ \if@ACM@printccs
1690
+ \ClassInfo{\@classname}{Printing CCS}%
1691
+ \else
1692
+ \ClassInfo{\@classname}{Suppressing CCS}%
1693
+ \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}
1694
+ \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
1695
+ \if@ACM@printacmref
1696
+ \ClassInfo{\@classname}{Printing bibformat}%
1697
+ \else
1698
+ \ClassInfo{\@classname}{Suppressing bibformat}%
1699
+ \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}
1700
+ \AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else
1701
+ \ifnum\getrefnumber{TotPages}>1\relax
1702
+ \ClassWarningNoLine{\@classname}{%
1703
+ ACM reference format is mandatory \MessageBreak
1704
+ for papers over one page. \MessageBreak
1705
+ Please add printacmref=true to the \MessageBreak
1706
+ \string\settopmatter\space command.}%
1707
+ \fi\fi\fi}
1708
+ \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
1709
+ \if@ACM@printfolios
1710
+ \ClassInfo{\@classname}{Printing folios}%
1711
+ \else
1712
+ \ClassInfo{\@classname}{Suppressing folios}%
1713
+ \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}
1714
+ \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
1715
+ \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
1716
+ #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
1717
+ numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
1718
+ \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
1719
+ \settopmatter{printccs=true, printacmref=true}
1720
+ \if@ACM@manuscript
1721
+ \settopmatter{printfolios=true}
1722
+ \else
1723
+ \if@ACM@journal
1724
+ \settopmatter{printfolios=true}
1725
+ \else
1726
+ \settopmatter{printfolios=false}
1727
+ \fi
1728
+ \fi
1729
+ \settopmatter{authorsperrow=0}
1730
+ \def\@received{}
1731
+ \newcommand\received[2][]{\def\@tempa{#1}%
1732
+ \ifx\@tempa\@empty
1733
+ \ifx\@received\@empty
1734
+ \gdef\@received{Received #2}%
1735
+ \else
1736
+ \g@addto@macro{\@received}{; revised #2}%
1737
+ \fi
1738
+ \else
1739
+ \ifx\@received\@empty
1740
+ \gdef\@received{#1 #2}%
1741
+ \else
1742
+ \g@addto@macro{\@received}{; #1 #2}%
1743
+ \fi
1744
+ \fi}
1745
+ \AtEndDocument{%
1746
+ \ifx\@received\@empty\else
1747
+ \par\bigskip\noindent\small\normalfont\@received\par
1748
+ \fi}
1749
+ \define@choicekey+{ACM}{articletype}[\ACM@ArticleType\ACM@ArticleType@nr]{%
1750
+ Research,Review,Discussion,Invited,Position}[Review]{%
1751
+ \ifcase\ACM@ArticleType@nr
1752
+ \relax % Research
1753
+ \colorlet{@ACM@Article@color}{ACMBlue}%
1754
+ \or % Review
1755
+ \colorlet{@ACM@Article@color}{ACMOrange}%
1756
+ \or % Discussion
1757
+ \colorlet{@ACM@Article@color}{ACMGreen}%
1758
+ \or % Invited
1759
+ \colorlet{@ACM@Article@color}{ACMPurple}%
1760
+ \or % Position
1761
+ \colorlet{@ACM@Article@color}{ACMRed}%
1762
+ \fi
1763
+ }{%
1764
+ \ClassError{\@classname}{Article Type must be Research, Review,\MessageBreak
1765
+ Discussion, Invited, or Position}}
1766
+ \def\acmArticleType#1{\setkeys{ACM}{articletype=#1}}
1767
+ \if@ACM@acmcp
1768
+ \acmArticleType{Research}%
1769
+ \fi
1770
+ % \end{macrocode}
1771
+ \newenvironment{@ACM@color@frame}{%
1772
+ \def\FrameCommand{\hspace*{-6.5pc}%
1773
+ \colorbox{@ACM@Article@color!10!white}}%
1774
+ \MakeFramed {\advance\hsize
1775
+ -6.5pc\relax\FrameRestore}}{\zsaveposy{@ACM@acmcpframe@y}%
1776
+ \endMakeFramed}
1777
+ \def\acmCodeLink#1{%
1778
+ \ifx\@acmCodeDataLink\@empty
1779
+ \gdef\@acmCodeDataLink{\url{#1}}%
1780
+ \else
1781
+ \g@addto@macro{\@acmCodeDataLink}{\\ \url{#1}}%
1782
+ \fi}
1783
+ \def\@acmCodeDataLink{}
1784
+ \let\acmDataLink\acmCodeLink
1785
+ \RequirePackage{comment}
1786
+ \excludecomment{CCSXML}
1787
+ \let\@concepts\@empty
1788
+ \newcounter{@concepts}
1789
+ \newcommand\ccsdesc[2][100]{%
1790
+ \ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
1791
+ \def\textrightarrow{$\rightarrow$}
1792
+ \def\ccsdesc@parse#1~#2~#3~{%
1793
+ \stepcounter{@concepts}%
1794
+ \expandafter\ifx\csname CCS@General@#2\endcsname\relax
1795
+ \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
1796
+ \textbf{#2}}%
1797
+ \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
1798
+ \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
1799
+ \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
1800
+ \csname CCS@Punctuation@#2\endcsname
1801
+ \csname CCS@Specific@#2\endcsname}%
1802
+ \fi
1803
+ \ifx#3\relax\relax\else
1804
+ \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
1805
+ \textrightarrow\ }%
1806
+ \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
1807
+ \addtocounter{@concepts}{-1}%
1808
+ \ifnum#1>499\textbf{#3}\else
1809
+ \ifnum#1>299\textit{#3}\else
1810
+ #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}%
1811
+ \fi
1812
+ \ccsdesc@parse@finish}
1813
+ \AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax
1814
+ \ifnum\getrefnumber{TotPages}>2\relax
1815
+ \ClassWarningNoLine{\@classname}{CCS concepts are mandatory
1816
+ for papers over two pages}%
1817
+ \fi\fi\fi}
1818
+ \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
1819
+ \newif\if@printcopyright
1820
+ \@printcopyrighttrue
1821
+ \newif\if@printpermission
1822
+ \@printpermissiontrue
1823
+ \newif\if@acmowned
1824
+ \@acmownedtrue
1825
+ \define@choicekey*{ACM@}{acmcopyrightmode}[%
1826
+ \acm@copyrightinput\acm@copyrightmode]{none,%
1827
+ acmcopyright,acmlicensed,rightsretained,%
1828
+ usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
1829
+ licensedcagov,licensedcagovmixed,othergov,licensedothergov,%
1830
+ iw3c2w3,iw3c2w3g,cc}{%
1831
+ \@printpermissiontrue
1832
+ \@printcopyrighttrue
1833
+ \@acmownedtrue
1834
+ \ifnum\acm@copyrightmode=0\relax % none
1835
+ \@printpermissionfalse
1836
+ \@printcopyrightfalse
1837
+ \@acmownedfalse
1838
+ \fi
1839
+ \ifnum\acm@copyrightmode=2\relax % acmlicensed
1840
+ \@acmownedfalse
1841
+ \fi
1842
+ \ifnum\acm@copyrightmode=3\relax % rightsretained
1843
+ \@acmownedfalse
1844
+ \AtBeginDocument{\acmPrice{}}%
1845
+ \fi
1846
+ \ifnum\acm@copyrightmode=4\relax % usgov
1847
+ \@printpermissiontrue
1848
+ \@printcopyrightfalse
1849
+ \@acmownedfalse
1850
+ \AtBeginDocument{\acmPrice{}}%
1851
+ \fi
1852
+ \ifnum\acm@copyrightmode=6\relax % cagov
1853
+ \@acmownedfalse
1854
+ \fi
1855
+ \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
1856
+ \@acmownedfalse
1857
+ \fi
1858
+ \ifnum\acm@copyrightmode=9\relax % licensedcagov
1859
+ \@acmownedfalse
1860
+ \fi
1861
+ \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
1862
+ \@acmownedfalse
1863
+ \fi
1864
+ \ifnum\acm@copyrightmode=11\relax % othergov
1865
+ \@acmownedtrue
1866
+ \fi
1867
+ \ifnum\acm@copyrightmode=12\relax % licensedothergov
1868
+ \@acmownedfalse
1869
+ \fi
1870
+ \ifnum\acm@copyrightmode=13\relax % iw3c2w3
1871
+ \@acmownedfalse
1872
+ \AtBeginDocument{\acmPrice{}}%
1873
+ \fi
1874
+ \ifnum\acm@copyrightmode=14\relax % iw3c2w3g
1875
+ \@acmownedfalse
1876
+ \AtBeginDocument{\acmPrice{}}%
1877
+ \fi
1878
+ \ifnum\acm@copyrightmode=15\relax % cc
1879
+ \@acmownedfalse
1880
+ \AtBeginDocument{\acmPrice{}}%
1881
+ \fi}
1882
+ \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
1883
+ \setcopyright{acmcopyright}
1884
+ \newcommand\setcctype[2][4.0]{%
1885
+ \def\ACM@cc@version{#1}%
1886
+ \def\ACM@cc@type{#2}}
1887
+ \setcctype{by}
1888
+ \def\@copyrightowner{%
1889
+ \ifcase\acm@copyrightmode\relax % none
1890
+ \or % acmcopyright
1891
+ Association for Computing Machinery.
1892
+ \or % acmlicensed
1893
+ Copyright held by the owner/author(s). Publication rights licensed to
1894
+ ACM\@.
1895
+ \or % rightsretained
1896
+ Copyright held by the owner/author(s).
1897
+ \or % usgov
1898
+ \or % usgovmixed
1899
+ Association for Computing Machinery.
1900
+ \or % cagov
1901
+ Crown in Right of Canada.
1902
+ \or %cagovmixed
1903
+ Association for Computing Machinery.
1904
+ \or %licensedusgovmixed
1905
+ Copyright held by the owner/author(s). Publication rights licensed to
1906
+ ACM\@.
1907
+ \or % licensedcagov
1908
+ Crown in Right of Canada. Publication rights licensed to
1909
+ ACM\@.
1910
+ \or %licensedcagovmixed
1911
+ Copyright held by the owner/author(s). Publication rights licensed to
1912
+ ACM\@.
1913
+ \or % othergov
1914
+ Association for Computing Machinery.
1915
+ \or % licensedothergov
1916
+ Copyright held by the owner/author(s). Publication rights licensed to
1917
+ ACM\@.
1918
+ \or % ic2w3www
1919
+ IW3C2 (International World Wide Web Conference Committee), published
1920
+ under Creative Commons CC-BY~4.0 License.
1921
+ \or % ic2w3wwwgoogle
1922
+ IW3C2 (International World Wide Web Conference Committee), published
1923
+ under Creative Commons CC-BY-NC-ND~4.0 License.
1924
+ \or % cc
1925
+ Copyright held by the owner/author(s).
1926
+ \fi}
1927
+ \def\@formatdoi#1{\url{https://doi.org/#1}}
1928
+ \def\@ACM@copyright@check@cc{%
1929
+ \if@ACM@nonacm
1930
+ \ClassInfo{\@classname}{Using CC license with a non-acm
1931
+ material}%
1932
+ \else
1933
+ \if@ACM@engage
1934
+ \ClassInfo{\@classname}{Using CC license with ACM Enage
1935
+ material}%
1936
+ \else
1937
+ \ClassError{\@classname}{%
1938
+ Sorry, Creative Commons licenses are\MessageBreak
1939
+ currently not used with ACM publications\MessageBreak
1940
+ typeset by the authors}{Please use nonacm
1941
+ option or ACM Engage class to enable CC licenses}%
1942
+ \fi
1943
+ \fi}
1944
+ \def\@copyrightpermission{%
1945
+ \ifcase\acm@copyrightmode\relax % none
1946
+ \or % acmcopyright
1947
+ Permission to make digital or hard copies of all or part of this
1948
+ work for personal or classroom use is granted without fee provided
1949
+ that copies are not made or distributed for profit or commercial
1950
+ advantage and that copies bear this notice and the full citation on
1951
+ the first page. Copyrights for components of this work owned by
1952
+ others than ACM must be honored. Abstracting with credit is
1953
+ permitted. To copy otherwise, or republish, to post on servers or to
1954
+ redistribute to lists, requires prior specific permission
1955
+ and\hspace*{.5pt}/or a fee. Request permissions from
1956
+ permissions@acm.org.
1957
+ \or % acmlicensed
1958
+ Permission to make digital or hard copies of all or part of this
1959
+ work for personal or classroom use is granted without fee provided
1960
+ that copies are not made or distributed for profit or commercial
1961
+ advantage and that copies bear this notice and the full citation on
1962
+ the first page. Copyrights for components of this work owned by
1963
+ others than the author(s) must be honored. Abstracting with credit
1964
+ is permitted. To copy otherwise, or republish, to post on servers
1965
+ or to redistribute to lists, requires prior specific permission
1966
+ and\hspace*{.5pt}/or a fee. Request permissions from
1967
+ permissions@acm.org.
1968
+ \or % rightsretained
1969
+ Permission to make digital or hard copies of part or all of this work
1970
+ for personal or classroom use is granted without fee provided that
1971
+ copies are not made or distributed for profit or commercial advantage
1972
+ and that copies bear this notice and the full citation on the first
1973
+ page. Copyrights for third-party components of this work must be
1974
+ honored. For all other uses, contact the
1975
+ owner\hspace*{.5pt}/author(s).
1976
+ \or % usgov
1977
+ This paper is authored by an employee(s) of the United States
1978
+ Government and is in the public domain. Non-exclusive copying or
1979
+ redistribution is allowed, provided that the article citation is
1980
+ given and the authors and agency are clearly identified as its
1981
+ source.
1982
+ \or % usgovmixed
1983
+ ACM acknowledges that this contribution was authored or co-authored
1984
+ by an employee, contractor, or affiliate of the United States
1985
+ government. As such, the United States government retains a
1986
+ nonexclusive, royalty-free right to publish or reproduce this
1987
+ article, or to allow others to do so, for government purposes only.
1988
+ \or % cagov
1989
+ This article was authored by employees of the Government of Canada.
1990
+ As such, the Canadian government retains all interest in the
1991
+ copyright to this work and grants to ACM a nonexclusive,
1992
+ royalty-free right to publish or reproduce this article, or to allow
1993
+ others to do so, provided that clear attribution is given both to
1994
+ the authors and the Canadian government agency employing them.
1995
+ Permission to make digital or hard copies for personal or classroom
1996
+ use is granted. Copies must bear this notice and the full citation
1997
+ on the first page. Copyrights for components of this work owned by
1998
+ others than the Canadian Government must be honored. To copy
1999
+ otherwise, distribute, republish, or post, requires prior specific
2000
+ permission and\hspace*{.5pt}/or a fee. Request permissions from
2001
+ permissions@acm.org.
2002
+ \or % cagovmixed
2003
+ ACM acknowledges that this contribution was co-authored by an
2004
+ affiliate of the national government of Canada. As such, the Crown
2005
+ in Right of Canada retains an equal interest in the copyright.
2006
+ Reprints must include clear attribution to ACM and the author's
2007
+ government agency affiliation. Permission to make digital or hard
2008
+ copies for personal or classroom use is granted. Copies must bear
2009
+ this notice and the full citation on the first page. Copyrights for
2010
+ components of this work owned by others than ACM must be honored.
2011
+ To copy otherwise, distribute, republish, or post, requires prior
2012
+ specific permission and\hspace*{.5pt}/or a fee. Request permissions
2013
+ from permissions@acm.org.
2014
+ \or % licensedusgovmixed
2015
+ Publication rights licensed to ACM\@. ACM acknowledges that this
2016
+ contribution was authored or co-authored by an employee, contractor
2017
+ or affiliate of the United States government. As such, the
2018
+ Government retains a nonexclusive, royalty-free right to publish or
2019
+ reproduce this article, or to allow others to do so, for Government
2020
+ purposes only.
2021
+ \or % licensedcagov
2022
+ This article was authored by employees of the Government of Canada.
2023
+ As such, the Canadian government retains all interest in the
2024
+ copyright to this work and grants to ACM a nonexclusive,
2025
+ royalty-free right to publish or reproduce this article, or to allow
2026
+ others to do so, provided that clear attribution is given both to
2027
+ the authors and the Canadian government agency employing them.
2028
+ Permission to make digital or hard copies for personal or classroom
2029
+ use is granted. Copies must bear this notice and the full citation
2030
+ on the first page. Copyrights for components of this work owned by
2031
+ others than the Canadian Government must be honored. To copy
2032
+ otherwise, distribute, republish, or post, requires prior specific
2033
+ permission and\hspace*{.5pt}/or a fee. Request permissions from
2034
+ permissions@acm.org.
2035
+ \or % licensedcagovmixed
2036
+ Publication rights licensed to ACM\@. ACM acknowledges that this
2037
+ contribution was authored or co-authored by an employee, contractor
2038
+ or affiliate of the national government of Canada. As such, the
2039
+ Government retains a nonexclusive, royalty-free right to publish or
2040
+ reproduce this article, or to allow others to do so, for Government
2041
+ purposes only.
2042
+ \or % othergov
2043
+ ACM acknowledges that this contribution was authored or co-authored
2044
+ by an employee, contractor or affiliate of a national government. As
2045
+ such, the Government retains a nonexclusive, royalty-free right to
2046
+ publish or reproduce this article, or to allow others to do so, for
2047
+ Government purposes only.
2048
+ \or % licensedothergov
2049
+ Publication rights licensed to ACM\@. ACM acknowledges that this
2050
+ contribution was authored or co-authored by an employee, contractor
2051
+ or affiliate of a national government. As such, the Government
2052
+ retains a nonexclusive, royalty-free right to publish or reproduce
2053
+ this article, or to allow others to do so, for Government purposes
2054
+ only.
2055
+ \or % iw3c2w3
2056
+ This paper is published under the Creative Commons Attribution~4.0
2057
+ International (CC-BY~4.0) license. Authors reserve their rights to
2058
+ disseminate the work on their personal and corporate Web sites with
2059
+ the appropriate attribution.
2060
+ \or % iw3c2w3g
2061
+ This paper is published under the Creative Commons
2062
+ Attribution-NonCommercial-NoDerivs~4.0 International
2063
+ (CC-BY-NC-ND~4.0) license. Authors reserve their rights to
2064
+ disseminate the work on their personal and corporate Web sites with
2065
+ the appropriate attribution.
2066
+ \or % CC
2067
+ \@ACM@copyright@check@cc
2068
+ \IfEq{\ACM@cc@type}{zero}{%
2069
+ \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0/legalcode}}{%
2070
+ \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version/legalcode}}%
2071
+ \href{\ACM@CC@Url}{\includegraphics[height=5ex]{doclicense-CC-\ACM@cc@type-88x31}}\\
2072
+ \href{\ACM@CC@Url}{%
2073
+ This work is licensed under a Creative Commons
2074
+ \IfEq{\ACM@cc@type}{zero}{CC0 1.0 Universal}{%
2075
+ \IfEq{\ACM@cc@type}{by}{Attribution}{}%
2076
+ \IfEq{\ACM@cc@type}{by-sa}{Attribution-ShareAlike}{}%
2077
+ \IfEq{\ACM@cc@type}{by-nd}{Attribution-NoDerivatives}{}%
2078
+ \IfEq{\ACM@cc@type}{by-nc}{Attribution-NonCommercial}{}%
2079
+ \IfEq{\ACM@cc@type}{by-nc-sa}{Attribution-NonCommercial-ShareAlike}{}%
2080
+ \IfEq{\ACM@cc@type}{by-nc-nd}{Attribution-NonCommercial-NoDerivatives}{}%
2081
+ ~\IfEq{\ACM@cc@version}{4.0}{4.0 International}{3.0 Unported}%
2082
+ }
2083
+ License.}%
2084
+ \fi}
2085
+ \def\copyrightyear#1{\def\@copyrightyear{#1}}
2086
+ \copyrightyear{\@acmYear}
2087
+ \def\@teaserfigures{}
2088
+ \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
2089
+ \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
2090
+ \renewcommand{\thanks}[1]{%
2091
+ \@ifnotempty{#1}{%
2092
+ \if@ACM@anonymous
2093
+ \g@addto@macro\thankses{\thanks{A note}}%
2094
+ \else
2095
+ \g@addto@macro\thankses{\thanks{#1}}%
2096
+ \fi}}
2097
+ \newcommand{\anon}[2][ANONYMIZED]{%
2098
+ \if@ACM@anonymous%
2099
+ {\color{ACMOrange}#1}%
2100
+ \else%
2101
+ #2%
2102
+ \fi}
2103
+ \ifx\@beginmaketitlehook\@undefined
2104
+ \let\@beginmaketitlehook\@empty
2105
+ \fi
2106
+ \def\AtBeginMaketitle{\g@addto@macro\@beginmaketitlehook}
2107
+ \def\@acmengagemetadata{}
2108
+ \def\setengagemetadata#1#2{%
2109
+ \g@addto@macro{\@acmengagemetadata}{%
2110
+ \@setengagemetadata{#1}{#2}}}
2111
+ \newbox\mktitle@bx
2112
+ \def\maketitle{\@beginmaketitlehook
2113
+ \@ACM@maketitle@typesettrue
2114
+ \if@ACM@anonymous
2115
+ % Anonymize omission of \author-s
2116
+ \ifnum\num@authorgroups=0\author{}\fi
2117
+ \fi
2118
+ \begingroup
2119
+ \let\@vspace\@vspace@orig
2120
+ \let\@vspacer\@vspacer@orig
2121
+ \let\@footnotemark\@footnotemark@nolink
2122
+ \let\@footnotetext\@footnotetext@nolink
2123
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
2124
+ \hsize=\textwidth
2125
+ \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
2126
+ \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
2127
+ \@printtopmatter
2128
+ \if@ACM@sigchiamode\@mkauthors\fi
2129
+ \setcounter{footnote}{0}%
2130
+ \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
2131
+ \@titlenotes
2132
+ \@subtitlenotes
2133
+ \@authornotes
2134
+ \let\@makefnmark\relax
2135
+ \let\@thefnmark\relax
2136
+ \let\@makefntext\noindent
2137
+ \ifx\@empty\thankses\else
2138
+ \footnotetextauthorsaddresses{%
2139
+ \def\par{\let\par\@par}\parindent\z@\@setthanks}%
2140
+ \fi
2141
+ \if@ACM@acmcp\else
2142
+ \ifx\@empty\@authorsaddresses\else
2143
+ \if@ACM@anonymous\else
2144
+ \if@ACM@journal@bibstrip
2145
+ \footnotetextauthorsaddresses{%
2146
+ \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
2147
+ \fi
2148
+ \fi
2149
+ \fi
2150
+ \fi
2151
+ \if@ACM@nonacm
2152
+ \ifnum\acm@copyrightmode=15\relax % cc
2153
+ \footnotetextcopyrightpermission{\@copyrightpermission}%
2154
+ \fi
2155
+ \else
2156
+ \if@ACM@acmcp\else
2157
+ \footnotetextcopyrightpermission{%
2158
+ \if@ACM@authordraft
2159
+ \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
2160
+ Unpublished working draft. Not for distribution.}}%
2161
+ \color[gray]{0.9}%
2162
+ \fi
2163
+ \parindent\z@\parskip0.1\baselineskip
2164
+ \if@ACM@authorversion\else
2165
+ \if@printpermission\@copyrightpermission\par\fi
2166
+ \fi
2167
+ \if@ACM@manuscript\else
2168
+ \if@ACM@journal@bibstrip\else % Print the conference information
2169
+ \if@ACM@engage
2170
+ {\itshape \@acmBooktitle, \@acmYear.}\par
2171
+ \else
2172
+ {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
2173
+ \fi
2174
+ \fi
2175
+ \fi
2176
+ \if@printcopyright
2177
+ \copyright\ \@copyrightyear\ \@copyrightowner\\
2178
+ \else
2179
+ \@copyrightyear.\
2180
+ \fi
2181
+ \if@ACM@manuscript
2182
+ Manuscript submitted to ACM\\
2183
+ \else
2184
+ \if@ACM@authorversion
2185
+ This is the author's version of the work. It is posted here for
2186
+ your personal use. Not for redistribution. The definitive Version
2187
+ of Record was published in
2188
+ \if@ACM@journal@bibstrip
2189
+ \emph{\@journalName}%
2190
+ \else
2191
+ \emph{\@acmBooktitle}%
2192
+ \fi
2193
+ \ifx\@acmDOI\@empty
2194
+ .
2195
+ \else
2196
+ , \@formatdoi{\@acmDOI}.
2197
+ \fi\\
2198
+ \else
2199
+ \if@ACM@nonacm\else
2200
+ \if@ACM@journal@bibstrip
2201
+ \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
2202
+ \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
2203
+ \@formatdoi{\@acmDOI}%
2204
+ \else % Conference
2205
+ \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN
2206
+ \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
2207
+ \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
2208
+ \fi
2209
+ \fi
2210
+ \fi
2211
+ \fi}%
2212
+ \fi
2213
+ \fi
2214
+ \endgroup
2215
+ \if@ACM@engage\@typesetengagemetadata\fi
2216
+ \setcounter{footnote}{0}%
2217
+ \@mkabstract
2218
+ \ifx\@translatedabstracts\@empty\else
2219
+ \@translatedabstracts\fi
2220
+ \if@ACM@printccs
2221
+ \ifx\@concepts\@empty\else\bgroup
2222
+ {\@specialsection{CCS Concepts}%
2223
+ \noindent\@concepts\par}\egroup
2224
+ \fi
2225
+ \fi
2226
+ \if@ACM@acmcp\else
2227
+ \ifx\@keywords\@empty\else\bgroup
2228
+ {\@specialsection{\keywordsname}%
2229
+ \noindent\@keywords\par}\egroup
2230
+ \fi
2231
+ \ifx\@translatedkeywords\@empty\else
2232
+ \@translatedkeywords
2233
+ \fi
2234
+ \fi
2235
+ \let\metadata@authors=\authors
2236
+ \nxandlist{, }{, }{, }\metadata@authors
2237
+ \def\@ACM@checkaffil{}%
2238
+ \hypersetup{%
2239
+ pdfauthor={\metadata@authors},
2240
+ pdftitle={\@title},
2241
+ pdfsubject={\@concepts},
2242
+ pdfkeywords={\@keywords},
2243
+ pdfcreator={LaTeX with acmart
2244
+ \csname ver@acmart.cls\endcsname\space
2245
+ and hyperref
2246
+ \csname ver@hyperref.sty\endcsname}}%
2247
+ \andify\authors
2248
+ \andify\shortauthors
2249
+ \global\let\authors=\authors
2250
+ \global\let\shortauthors=\shortauthors
2251
+ \if@ACM@printacmref
2252
+ \@mkbibcitation
2253
+ \fi
2254
+ \global\@topnum\z@ % this prevents floats from falling
2255
+ % at the top of page 1
2256
+ \global\@botnum\z@ % we do not want them to be on the bottom either
2257
+ \@printendtopmatter
2258
+ \@afterindentfalse
2259
+ \@afterheading
2260
+ \if@ACM@acmcp
2261
+ \set@ACM@acmcpbox
2262
+ \AtEndDocument{\end@ACM@color@frame}%
2263
+ \@ACM@color@frame
2264
+ \fi
2265
+ }
2266
+ \newbox\@ACM@acmcpbox
2267
+ \def\set@ACM@acmcpbox{%
2268
+ \bgroup
2269
+ \hsize=5pc
2270
+ \global\setbox\@ACM@acmcpbox=\vbox{%
2271
+ \setlength{\parindent}{\z@}%
2272
+ {\includegraphics[width=\hsize]{acm-jdslogo}\par}%
2273
+ \scriptsize
2274
+ \ifnum\getrefnumber{TotPages}>1\else
2275
+ \zrefused{@ACM@acmcpbox@y}%
2276
+ \zrefused{@ACM@acmcpframe@y}%
2277
+ \@tempdima=\dimexpr\zposy{@ACM@acmcpbox@y}sp -
2278
+ \zposy{@ACM@acmcpframe@y}sp+0.3\FrameSep+
2279
+ \@ACM@acmcp@delta\relax
2280
+ \ifdim\@tempdima>0pt\relax
2281
+ \vspace*{\@tempdima}%
2282
+ \protected@write\@auxout{}%
2283
+ {\string\global\@ACM@acmcp@delta=\the\@tempdima\relax}%
2284
+ \fi
2285
+ \fi
2286
+ \ifx\@acmCodeDataLink\@empty\else\bigskip
2287
+ Code and data links:\\ \@acmCodeDataLink\par\bigskip
2288
+ \fi
2289
+ \ifx\@keywords\@empty\else\bigskip
2290
+ Keywords: \@keywords\par
2291
+ \fi
2292
+ \ifx\@empty\@authorsaddresses\else\bigskip\@setauthorsaddresses\fi
2293
+ \zsaveposy{@ACM@acmcpbox@y}%
2294
+ }
2295
+ \egroup}
2296
+ \def\@specialsection#1{%
2297
+ \let\@vspace\@vspace@orig
2298
+ \let\@vspacer\@vspacer@orig
2299
+ \ifcase\ACM@format@nr
2300
+ \relax % manuscript
2301
+ \par\medskip\small\noindent#1: %
2302
+ \or % acmsmall
2303
+ \par\medskip\small\noindent#1: %
2304
+ \or % acmlarge
2305
+ \par\medskip\small\noindent#1: %
2306
+ \or % acmtog
2307
+ \par\medskip\small\noindent#1: %
2308
+ \or % sigconf
2309
+ \section*{#1}%
2310
+ \or % siggraph
2311
+ \section*{#1}%
2312
+ \or % sigplan
2313
+ \noindentparagraph*{#1:~}%
2314
+ \or % sigchi
2315
+ \section*{#1}%
2316
+ \or % sigchi-a
2317
+ \section*{#1}%
2318
+ \or % acmengage
2319
+ \section*{#1}%
2320
+ \or % acmcp
2321
+ \section*{#1}%
2322
+ \fi
2323
+ \let\@vspace\@vspace@acm
2324
+ \let\@vspacer\@vspacer@acm
2325
+ }
2326
+ \def\@printtopmatter{%
2327
+ \ifx\@startPage\@empty
2328
+ \gdef\@startPage{1}%
2329
+ \else
2330
+ \setcounter{page}{\@startPage}%
2331
+ \fi
2332
+ \@tempdima=\ht\mktitle@bx
2333
+ \advance\@tempdima by \dp\mktitle@bx
2334
+ \ifdim\@tempdima>0.9\textheight
2335
+ \loop
2336
+ \setbox\@tempboxa=\vsplit \mktitle@bx to 0.9\textheight
2337
+ \thispagestyle{firstpagestyle}%
2338
+ \noindent\unvbox\@tempboxa
2339
+ \clearpage
2340
+ \@tempdima=\ht\mktitle@bx
2341
+ \advance\@tempdima by \dp\mktitle@bx
2342
+ \ifdim\@tempdima>0.9\textheight\repeat
2343
+ \fi
2344
+ \thispagestyle{firstpagestyle}%
2345
+ \noindent
2346
+ \ifcase\ACM@format@nr
2347
+ \relax % manuscript
2348
+ \box\mktitle@bx\par
2349
+ \or % acmsmall
2350
+ \box\mktitle@bx\par
2351
+ \or % acmlarge
2352
+ \box\mktitle@bx\par
2353
+ \or % acmtog
2354
+ \twocolumn[\box\mktitle@bx]%
2355
+ \or % sigconf
2356
+ \twocolumn[\box\mktitle@bx]%
2357
+ \or % siggraph
2358
+ \twocolumn[\box\mktitle@bx]%
2359
+ \or % sigplan
2360
+ \twocolumn[\box\mktitle@bx]%
2361
+ \or % sigchi
2362
+ \twocolumn[\box\mktitle@bx]%
2363
+ \or % sigchi-a
2364
+ \par\box\mktitle@bx\par\bigskip
2365
+ \or % acmengage
2366
+ \twocolumn[\box\mktitle@bx]%
2367
+ \or % acmcp
2368
+ \box\mktitle@bx\par
2369
+ \fi
2370
+ }
2371
+ \def\@mktitle{%
2372
+ \ifcase\ACM@format@nr
2373
+ \relax % manuscript
2374
+ \@mktitle@i
2375
+ \or % acmsmall
2376
+ \@mktitle@i
2377
+ \or % acmlarge
2378
+ \@mktitle@i
2379
+ \or % acmtog
2380
+ \@mktitle@i
2381
+ \or % sigconf
2382
+ \@mktitle@iii
2383
+ \or % siggraph
2384
+ \@mktitle@iii
2385
+ \or % sigplan
2386
+ \@mktitle@iii
2387
+ \or % sigchi
2388
+ \@mktitle@iii
2389
+ \or % sigchi-a
2390
+ \@mktitle@iv
2391
+ \or % acmengage
2392
+ \@mktitle@iii
2393
+ \or % acmcp
2394
+ \@mktitle@i
2395
+ \fi
2396
+ }
2397
+ \def\@titlefont{%
2398
+ \ifcase\ACM@format@nr
2399
+ \relax % manuscript
2400
+ \LARGE\sffamily\bfseries
2401
+ \or % acmsmall
2402
+ \LARGE\sffamily\bfseries
2403
+ \or % acmlarge
2404
+ \LARGE\sffamily\bfseries
2405
+ \or % acmtog
2406
+ \Huge\sffamily
2407
+ \or % sigconf
2408
+ \Huge\sffamily\bfseries
2409
+ \or % siggraph
2410
+ \Huge\sffamily\bfseries
2411
+ \or % sigplan
2412
+ \Huge\bfseries
2413
+ \or % sigchi
2414
+ \Huge\sffamily\bfseries
2415
+ \or % sigchi-a
2416
+ \Huge\bfseries
2417
+ \or % acmengage
2418
+ \Huge\sffamily\bfseries
2419
+ \or % acmcp
2420
+ \LARGE\sffamily\bfseries
2421
+ \fi}
2422
+ \def\@subtitlefont{\normalsize
2423
+ \ifcase\ACM@format@nr
2424
+ \relax % manuscript
2425
+ \mdseries
2426
+ \or % acmsmall
2427
+ \mdseries
2428
+ \or % acmlarge
2429
+ \mdseries
2430
+ \or % acmtog
2431
+ \LARGE
2432
+ \or % sigconf
2433
+ \LARGE\mdseries
2434
+ \or % siggraph
2435
+ \LARGE\mdseries
2436
+ \or % sigplan
2437
+ \LARGE\mdseries
2438
+ \or % sigchi
2439
+ \LARGE\mdseries
2440
+ \or % sigchi-a
2441
+ \mdseries
2442
+ \or % acmengage
2443
+ \LARGE\mdseries
2444
+ \or % acmcp
2445
+ \mdseries
2446
+ \fi}
2447
+ \def\@mktitle@i{\hsize=\textwidth
2448
+ \if@ACM@acmcp
2449
+ \advance\hsize by -6pc%
2450
+ \fi
2451
+ \@ACM@title@width=\hsize
2452
+ \setbox\mktitle@bx=\vbox{\noindent\@titlefont
2453
+ \parbox[t]{\@ACM@title@width}{\raggedright
2454
+ \@titlefont\noindent
2455
+ \@title\@translatedtitle%
2456
+ \ifx\@subtitle\@empty\else
2457
+ \par\noindent{\@subtitlefont\@subtitle\@translatedsubtitle}%
2458
+ \fi}%
2459
+ \par\bigskip}}%
2460
+ \def\@mktitle@iii{\hsize=\textwidth
2461
+ \setbox\mktitle@bx=\vbox{\@titlefont\centering
2462
+ \@ACM@title@width=\hsize
2463
+ \parbox[t]{\@ACM@title@width}{\centering\@titlefont
2464
+ \@title\@translatedtitle%
2465
+ \ifx\@subtitle\@empty\else
2466
+ \par\noindent{\@subtitlefont\@subtitle\@translatedsubtitle}
2467
+ \fi
2468
+ }%
2469
+ \par\bigskip}}%
2470
+ \def\@mktitle@iv{\hsize=\textwidth
2471
+ \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
2472
+ \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
2473
+ \noindent\@title\@translatedtitle%
2474
+ \ifx\@subtitle\@empty\else
2475
+ \par\noindent\@subtitlefont\@subtitle\@translatedsubtitle%
2476
+ \fi
2477
+ \par\bigskip}}%
2478
+ \newbox\@ACM@commabox
2479
+ \def\@ACM@addtoaddress#1{%
2480
+ \ifvmode\else
2481
+ \if@ACM@affiliation@obeypunctuation\else
2482
+ \setbox\@ACM@commabox=\hbox{, }%
2483
+ \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
2484
+ \fi\fi
2485
+ #1}
2486
+ \def\streetaddress#1{\unskip\ignorespaces}
2487
+ \def\postcode#1{\unskip\ignorespaces}
2488
+ \if@ACM@journal
2489
+ \def\position#1{\unskip\ignorespaces}
2490
+ \def\institution#1{\global\@ACM@instpresenttrue
2491
+ \unskip~#1\ignorespaces}
2492
+ \def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces}
2493
+ \def\state#1{\unskip\ignorespaces}
2494
+ \newcommand\department[2][0]{\unskip\ignorespaces}
2495
+ \def\country#1{\StrDel{#1}{ }[\@tempa]%
2496
+ \ifx\@tempa\@empty\else
2497
+ \global\@ACM@countrypresenttrue\fi
2498
+ \if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
2499
+ \else
2500
+ \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
2501
+ \def\institution#1{\global\@ACM@instpresenttrue
2502
+ \if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
2503
+ \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
2504
+ #2\else#2\par\fi}%
2505
+ \def\city#1{\global\@ACM@citypresenttrue\@ACM@addtoaddress{#1}}%
2506
+ \let\state\@ACM@addtoaddress
2507
+ \def\country#1{\global\@ACM@countrypresenttrue\@ACM@addtoaddress{#1}}%
2508
+ \fi
2509
+ \def\@mkauthors{\begingroup
2510
+ \hsize=\textwidth
2511
+ \ifcase\ACM@format@nr
2512
+ \relax % manuscript
2513
+ \@mkauthors@i
2514
+ \or % acmsmall
2515
+ \@mkauthors@i
2516
+ \or % acmlarge
2517
+ \@mkauthors@i
2518
+ \or % acmtog
2519
+ \@mkauthors@i
2520
+ \or % sigconf
2521
+ \@mkauthors@iii
2522
+ \or % siggraph
2523
+ \@mkauthors@iii
2524
+ \or % sigplan
2525
+ \@mkauthors@iii
2526
+ \or % sigchi
2527
+ \@mkauthors@iii
2528
+ \or % sigchi-a
2529
+ \@mkauthors@iv
2530
+ \or % acmengage
2531
+ \@mkauthors@iii
2532
+ \or % acmcp
2533
+ \@mkauthors@i
2534
+ \fi
2535
+ \endgroup
2536
+ }
2537
+ \def\@authorfont{\Large\sffamily}
2538
+ \def\@affiliationfont{\normalsize\normalfont}
2539
+ \ifcase\ACM@format@nr
2540
+ \relax % manuscript
2541
+ \or % acmsmall
2542
+ \def\@authorfont{\large\sffamily}
2543
+ \def\@affiliationfont{\small\normalfont}
2544
+ \or % acmlarge
2545
+ \or % acmtog
2546
+ \def\@authorfont{\LARGE\sffamily}
2547
+ \def\@affiliationfont{\large}
2548
+ \or % sigconf
2549
+ \def\@authorfont{\LARGE}
2550
+ \def\@affiliationfont{\large}
2551
+ \or % siggraph
2552
+ \def\@authorfont{\normalsize\normalfont}
2553
+ \def\@affiliationfont{\normalsize\normalfont}
2554
+ \or % sigplan
2555
+ \def\@authorfont{\Large\normalfont}
2556
+ \def\@affiliationfont{\normalsize\normalfont}
2557
+ \or % sigchi
2558
+ \def\@authorfont{\bfseries}
2559
+ \def\@affiliationfont{\mdseries}
2560
+ \or % sigchi-a
2561
+ \def\@authorfont{\bfseries}
2562
+ \def\@affiliationfont{\mdseries}
2563
+ \or % acmengage
2564
+ \def\@authorfont{\LARGE}
2565
+ \def\@affiliationfont{\large}
2566
+ \or % acmcp
2567
+ \def\@authorfont{\large\sffamily}
2568
+ \def\@affiliationfont{\small\normalfont}
2569
+ \fi
2570
+ \def\@typeset@author@line{%
2571
+ \andify\@currentauthors\par\noindent
2572
+ \@currentauthors\def\@currentauthors{}%
2573
+ \ifx\@currentaffiliations\@empty\else
2574
+ \andify\@currentaffiliations
2575
+ \unskip, {\@currentaffiliations}\par
2576
+ \fi
2577
+ \def\@currentaffiliations{}}
2578
+ \newif\if@ACM@instpresent
2579
+ \@ACM@instpresenttrue
2580
+ \newif\if@ACM@citypresent
2581
+ \@ACM@citypresenttrue
2582
+ \newif\if@ACM@countrypresent
2583
+ \@ACM@countrypresenttrue
2584
+ \def\@ACM@resetaffil{%
2585
+ \global\@ACM@instpresentfalse
2586
+ \global\@ACM@citypresentfalse
2587
+ \global\@ACM@countrypresentfalse
2588
+ }
2589
+ \def\@ACM@checkaffil{%
2590
+ \if@ACM@instpresent\else
2591
+ \ClassWarningNoLine{\@classname}{No institution present for an affiliation}%
2592
+ \fi
2593
+ \if@ACM@citypresent\else
2594
+ \ClassWarningNoLine{\@classname}{No city present for an affiliation}%
2595
+ \fi
2596
+ \if@ACM@countrypresent\else
2597
+ \ClassError{\@classname}{No country present for an affiliation}{ACM
2598
+ requires each author to indicate their country using country macro.}%
2599
+ \fi
2600
+ }
2601
+ \def\@mkauthors@i{%
2602
+ \def\@currentauthors{}%
2603
+ \def\@currentaffiliations{}%
2604
+ \global\let\and\@typeset@author@line
2605
+ \def\@author##1{%
2606
+ \ifx\@currentauthors\@empty
2607
+ \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
2608
+ \else
2609
+ \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
2610
+ \fi
2611
+ \gdef\and{}}%
2612
+ \def\email##1##2{}%
2613
+ \def\affiliation##1##2{%
2614
+ \def\@tempa{##2}\ifx\@tempa\@empty\else
2615
+ \ifx\@currentaffiliations\@empty
2616
+ \gdef\@currentaffiliations{%
2617
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2618
+ \setkeys{@ACM@affiliation@}{##1}%
2619
+ \@ACM@resetaffil
2620
+ \@affiliationfont##2\@ACM@checkaffil}%
2621
+ \else
2622
+ \g@addto@macro{\@currentaffiliations}{\and
2623
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2624
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2625
+ ##2\@ACM@checkaffil}%
2626
+ \fi
2627
+ \fi
2628
+ \global\let\and\@typeset@author@line}%
2629
+ \if@ACM@acmcp
2630
+ \advance\hsize by -6pc%
2631
+ \fi
2632
+ \global\setbox\mktitle@bx=\vbox{\noindent\unvbox\mktitle@bx\par\medskip
2633
+ \noindent\addresses\@typeset@author@line
2634
+ \par\medskip}%
2635
+ }
2636
+ \newbox\author@bx
2637
+ \newdimen\author@bx@wd
2638
+ \newskip\author@bx@sep
2639
+ \author@bx@sep=1pc\relax
2640
+ \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd
2641
+ \def\and{\par}\normalbaselines
2642
+ \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
2643
+ \@authorfont\@currentauthors\par\@affiliationfont
2644
+ \@currentaffiliation}\egroup
2645
+ \box\author@bx\hspace{\author@bx@sep}%
2646
+ \gdef\@currentauthors{}%
2647
+ \gdef\@currentaffiliation{}}
2648
+ \def\@mkauthors@iii{%
2649
+ \author@bx@wd=\textwidth\relax
2650
+ \advance\author@bx@wd by -\author@bx@sep\relax
2651
+ \ifnum\@ACM@authorsperrow>0\relax
2652
+ \divide\author@bx@wd by \@ACM@authorsperrow\relax
2653
+ \else
2654
+ \ifcase\num@authorgroups
2655
+ \relax % 0?
2656
+ \or % 1=one author per row
2657
+ \or % 2=two authors per row
2658
+ \divide\author@bx@wd by \num@authorgroups\relax
2659
+ \or % 3=three authors per row
2660
+ \divide\author@bx@wd by \num@authorgroups\relax
2661
+ \or % 4=two authors per row (!)
2662
+ \divide\author@bx@wd by 2\relax
2663
+ \else % three authors per row
2664
+ \divide\author@bx@wd by 3\relax
2665
+ \fi
2666
+ \fi
2667
+ \advance\author@bx@wd by -\author@bx@sep\relax
2668
+ \gdef\@currentauthors{}%
2669
+ \gdef\@currentaffiliation{}%
2670
+ \def\@author##1{\ifx\@currentauthors\@empty
2671
+ \gdef\@currentauthors{\par##1}%
2672
+ \else
2673
+ \g@addto@macro\@currentauthors{\par##1}%
2674
+ \fi
2675
+ \gdef\and{}}%
2676
+ \def\email##1##2{\ifx\@currentaffiliation\@empty
2677
+ \gdef\@currentaffiliation{\bgroup
2678
+ \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
2679
+ \else
2680
+ \g@addto@macro\@currentaffiliation{\par\bgroup
2681
+ \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
2682
+ \fi}%
2683
+ \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
2684
+ \gdef\@currentaffiliation{%
2685
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2686
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2687
+ ##2\@ACM@checkaffil}%
2688
+ \else
2689
+ \g@addto@macro\@currentaffiliation{\par
2690
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2691
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2692
+ ##2\@ACM@checkaffil}%
2693
+ \fi
2694
+ \global\let\and\@typeset@author@bx
2695
+ }%
2696
+ \hsize=\textwidth
2697
+ \global\setbox\mktitle@bx=\vbox{\noindent
2698
+ \unvbox\mktitle@bx\par\medskip\leavevmode
2699
+ \lineskip=1pc\relax\centering\hspace*{-1em}%
2700
+ \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
2701
+ \def\@mkauthors@iv{%
2702
+ \author@bx@wd=\columnwidth\relax
2703
+ \advance\author@bx@wd by -\author@bx@sep\relax
2704
+ \ifnum\@ACM@authorsperrow>0\relax
2705
+ \divide\author@bx@wd by \@ACM@authorsperrow\relax
2706
+ \else
2707
+ \ifcase\num@authorgroups
2708
+ \relax % 0?
2709
+ \or % 1=one author per row
2710
+ \else % 2=two authors per row
2711
+ \divide\author@bx@wd by 2\relax
2712
+ \fi
2713
+ \fi
2714
+ \advance\author@bx@wd by -\author@bx@sep\relax
2715
+ \gdef\@currentauthors{}%
2716
+ \gdef\@currentaffiliation{}%
2717
+ \def\@author##1{\ifx\@currentauthors\@empty
2718
+ \gdef\@currentauthors{\par##1}%
2719
+ \else
2720
+ \g@addto@macro\@currentauthors{\par##1}%
2721
+ \fi
2722
+ \gdef\and{}}%
2723
+ \def\email##1##2{\ifx\@currentaffiliation\@empty
2724
+ \gdef\@currentaffiliation{\nolinkurl{##2}}%
2725
+ \else
2726
+ \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
2727
+ \fi}%
2728
+ \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
2729
+ \gdef\@currentaffiliation{%
2730
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2731
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2732
+ ##2\@ACM@checkaffil}%
2733
+ \else
2734
+ \g@addto@macro\@currentaffiliation{\par
2735
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2736
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2737
+ ##2\@ACM@checkaffil}%
2738
+ \fi
2739
+ \global\let\and\@typeset@author@bx}%
2740
+ \bgroup\hsize=\columnwidth
2741
+ \par\raggedright\leftskip=\z@
2742
+ \lineskip=1pc\noindent
2743
+ \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
2744
+ \def\@mkauthorsaddresses{%
2745
+ \ifnum\num@authors>1\relax
2746
+ Authors' \else Author's \fi
2747
+ \ifnum\num@authorgroups>1\relax
2748
+ addresses: \else address: \fi
2749
+ \bgroup
2750
+ \def\streetaddress##1{\unskip, ##1}%
2751
+ \def\postcode##1{\unskip, ##1}%
2752
+ \def\position##1{\unskip\ignorespaces}%
2753
+ \gdef\@ACM@institution@separator{, }%
2754
+ \def\institution##1{\unskip\@ACM@institution@separator ##1\gdef\@ACM@institution@separator{ and }}%
2755
+ \def\city##1{\unskip, ##1}%
2756
+ \def\state##1{\unskip, ##1}%
2757
+ \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
2758
+ \def\country##1{\unskip, ##1}%
2759
+ \def\and{\unskip; \gdef\@ACM@institution@separator{, }}%
2760
+ \def\@author##1{##1}%
2761
+ \def\email##1##2{\unskip, \nolinkurl{##2}}%
2762
+ \addresses
2763
+ \egroup}
2764
+ \AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal
2765
+ \ifx\@authorsaddresses\@empty
2766
+ \ClassWarningNoLine{\@classname}{Authors'
2767
+ addresses are mandatory for ACM journals}%
2768
+ \fi\fi\fi}
2769
+ \def\@setaddresses{}
2770
+ \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
2771
+ \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
2772
+ \def\@mkteasers{%
2773
+ \ifx\@teaserfigures\@empty\else
2774
+ \def\@teaser##1{\par\bigskip\bgroup
2775
+ \captionsetup{type=figure}##1\egroup\par}
2776
+ \global\setbox\mktitle@bx=\vbox{\noindent\unvbox\mktitle@bx\par
2777
+ \noindent\@Description@presentfalse
2778
+ \@teaserfigures\par\if@Description@present\else
2779
+ \global\@undescribed@imagestrue
2780
+ \ClassWarning{\@classname}{A possible image without
2781
+ description}\fi
2782
+ \medskip}%
2783
+ \fi}
2784
+ \def\@mkabstract{\bgroup
2785
+ \ifx\@abstract\@lempty\else
2786
+ {\phantomsection\addcontentsline{toc}{section}{\abstractname}%
2787
+ \if@ACM@journal
2788
+ \everypar{\setbox\z@\lastbox\everypar{}}\small
2789
+ \else
2790
+ \section*{\abstractname}%
2791
+ \fi
2792
+ \ignorespaces\@abstract\par}%
2793
+ \fi\egroup}
2794
+ \def\@mktranslatedabstract#1{\selectlanguage{#1}%
2795
+ \if@ACM@journal
2796
+ \everypar{\setbox\z@\lastbox\everypar{}}\small
2797
+ \else
2798
+ \section*{\abstractname}%
2799
+ \fi
2800
+ \ignorespaces}
2801
+ \def\@mkbibcitation{\bgroup
2802
+ \let\@vspace\@vspace@orig
2803
+ \let\@vspacer\@vspacer@orig
2804
+ \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
2805
+ \def\footnotemark{}%
2806
+ \def\\{\unskip{} \ignorespaces}%
2807
+ \def\footnote{\ClassError{\@classname}{Please do not use footnotes
2808
+ inside a \string\title{} or \string\author{} command! Use
2809
+ \string\titlenote{} or \string\authornote{} instead!}}%
2810
+ \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
2811
+ Article~\@acmArticle\ \fi}%
2812
+ \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
2813
+ \noindent\bgroup
2814
+ \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title
2815
+ \ifx\@subtitle\@empty. \else: \@subtitle. \fi
2816
+ \if@ACM@nonacm\else
2817
+ % The 'nonacm' option disables 'printacmref' by default,
2818
+ % and the present \@mkbibcitation definition is never used
2819
+ % in this case. The conditional remains useful if the user
2820
+ % explicitly sets \settopmatter{printacmref=true}.
2821
+ \if@ACM@journal@bibstrip
2822
+ \textit{\@journalNameShort}
2823
+ \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
2824
+ \ref{TotPages}~\@pages@word.
2825
+ \else
2826
+ In \textit{\@acmBooktitle}%
2827
+ \ifx\@acmEditors\@empty\textit{.}\else
2828
+ \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
2829
+ \fi\
2830
+ ACM, New York, NY, USA%
2831
+ \@article@string\unskip, \ref{TotPages}~\@pages@word.
2832
+ \fi
2833
+ \fi
2834
+ \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
2835
+ \par\egroup}
2836
+ \def\@printendtopmatter{%
2837
+ \let\@vspace\@vspace@orig
2838
+ \let\@vspacer\@vspacer@orig
2839
+ \par\bigskip
2840
+ \let\@vspace\@vspace@acm
2841
+ \let\@vspacer\@vspacer@acm
2842
+ }
2843
+ \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
2844
+ \def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
2845
+ \def\@typesetengagemetadata{%
2846
+ \def\@setengagemetadata##1##2{\par\noindent\textbf{##1} ##2\par}%
2847
+ \@acmengagemetadata}
2848
+ \RequirePackage{fancyhdr}
2849
+ \let\ACM@ps@plain\ps@plain
2850
+ \let\ACM@ps@myheadings\ps@myheadings
2851
+ \let\ACM@ps@headings\ps@headings
2852
+ \def\ACM@restore@pagestyle{%
2853
+ \let\ps@plain\ACM@ps@plain
2854
+ \let\ps@myheadings\ACM@ps@myheadings
2855
+ \let\ps@headings\ACM@ps@headings}
2856
+ \AtBeginDocument{\ACM@restore@pagestyle}
2857
+ \if@ACM@review
2858
+ \newsavebox{\ACM@linecount@bx}
2859
+ \newlength\ACM@linecount@bxht
2860
+ \newcount\ACM@linecount
2861
+ \ACM@linecount\@ne\relax
2862
+ \def\ACM@mk@linecount{%
2863
+ \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
2864
+ \normalsize
2865
+ \setlength{\ACM@linecount@bxht}{0pt}%
2866
+ \loop{\color{red}\scriptsize\the\ACM@linecount}\\
2867
+ \global\advance\ACM@linecount by \@ne
2868
+ \addtolength{\ACM@linecount@bxht}{\baselineskip}%
2869
+ \ifdim\ACM@linecount@bxht<\textheight\repeat
2870
+ {\color{red}\scriptsize\the\ACM@linecount}\hfill
2871
+ \global\advance\ACM@linecount by \@ne}}}
2872
+ \fi
2873
+ \def\ACM@linecountL{%
2874
+ \if@ACM@review
2875
+ \ACM@mk@linecount
2876
+ \begin{picture}(0,0)%
2877
+ \put(-26,-22){\usebox{\ACM@linecount@bx}}%
2878
+ \end{picture}%
2879
+ \fi}
2880
+ \def\ACM@linecountR{%
2881
+ \if@ACM@review
2882
+ \ifcase\ACM@format@nr
2883
+ \relax % manuscript
2884
+ \relax
2885
+ \or % acmsmall
2886
+ \relax
2887
+ \or % acmlarge
2888
+ \relax
2889
+ \or % acmtog
2890
+ \ACM@mk@linecount
2891
+ \or % sigconf
2892
+ \ACM@mk@linecount
2893
+ \or % siggraph
2894
+ \ACM@mk@linecount
2895
+ \or % sigplan
2896
+ \ACM@mk@linecount
2897
+ \or % sigchi
2898
+ \ACM@mk@linecount
2899
+ \or % sigchi-a
2900
+ \ACM@mk@linecount
2901
+ \or % acmengage
2902
+ \ACM@mk@linecount
2903
+ \or % acmcp
2904
+ \relax
2905
+ \fi
2906
+ \begin{picture}(0,0)%
2907
+ \put(20,-22){\usebox{\ACM@linecount@bx}}%
2908
+ \end{picture}%
2909
+ \fi}
2910
+ \if@ACM@timestamp
2911
+ % Subtracting 30 from \time gives us the effect of rounding down despite
2912
+ % \numexpr rounding to nearest
2913
+ \newcounter{ACM@time@hours}
2914
+ \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
2915
+ \newcounter{ACM@time@minutes}
2916
+ \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
2917
+ \newcommand\ACM@timestamp{%
2918
+ \footnotesize%
2919
+ \ifx\@acmSubmissionID\@empty\relax\else
2920
+ Submission ID: \@acmSubmissionID.{ }%
2921
+ \fi
2922
+ \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
2923
+ \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }%
2924
+ Page \thepage\ of \@startPage--\pageref*{TotPages}.%
2925
+ }
2926
+ \fi
2927
+ \def\@shortauthors{%
2928
+ \if@ACM@anonymous
2929
+ Anon.
2930
+ \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi
2931
+ \else\shortauthors\fi}
2932
+ \def\@headfootfont{\sffamily\footnotesize}
2933
+ \AtBeginDocument{%
2934
+ \fancypagestyle{standardpagestyle}{%
2935
+ \fancyhf{}%
2936
+ \renewcommand{\headrulewidth}{\z@}%
2937
+ \renewcommand{\footrulewidth}{\z@}%
2938
+ \def\@acmArticlePage{%
2939
+ \ifx\@acmArticle\empty%
2940
+ \if@ACM@printfolios\thepage\fi%
2941
+ \else%
2942
+ \@acmArticle\if@ACM@printfolios:\thepage\fi%
2943
+ \fi%
2944
+ }%
2945
+ \if@ACM@journal@bibstrip
2946
+ \ifcase\ACM@format@nr
2947
+ \relax % manuscript
2948
+ \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
2949
+ \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
2950
+ \fancyhead[RE]{\@shortauthors}%
2951
+ \fancyhead[LO]{\ACM@linecountL\shorttitle}%
2952
+ \if@ACM@nonacm\else%
2953
+ \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}
2954
+ \fi%
2955
+ \or % acmsmall
2956
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}%
2957
+ \fancyhead[RO]{\@headfootfont\@acmArticlePage}%
2958
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
2959
+ \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
2960
+ \if@ACM@nonacm\else%
2961
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
2962
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2963
+ \fi
2964
+ \or % acmlarge
2965
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
2966
+ \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
2967
+ \fancyhead[LO]{\ACM@linecountL}%
2968
+ \fancyhead[RO]{\@headfootfont
2969
+ \shorttitle\quad\textbullet\quad\@acmArticlePage}%
2970
+ \if@ACM@nonacm\else%
2971
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
2972
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2973
+ \fi
2974
+ \or % acmtog
2975
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
2976
+ \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
2977
+ \fancyhead[LO]{\ACM@linecountL}%
2978
+ \fancyhead[RE]{\ACM@linecountR}%
2979
+ \fancyhead[RO]{\@headfootfont
2980
+ \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}%
2981
+ \if@ACM@nonacm\else%
2982
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
2983
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2984
+ \fi
2985
+ \else % Proceedings
2986
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
2987
+ \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
2988
+ \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
2989
+ \if@ACM@nonacm
2990
+ \fancyhead[LE]{\ACM@linecountL}%
2991
+ \fancyhead[RO]{\ACM@linecountR}%
2992
+ \else%
2993
+ \if@ACM@engage
2994
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
2995
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi}%
2996
+ \fancyhead[RO]{\@headfootfont
2997
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
2998
+ \ACM@linecountR}%
2999
+ \else
3000
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
3001
+ \acmConference@shortname,
3002
+ \acmConference@date, \acmConference@venue}%
3003
+ \fancyhead[RO]{\@headfootfont
3004
+ \acmConference@shortname,
3005
+ \acmConference@date, \acmConference@venue\ACM@linecountR}%
3006
+ \fi
3007
+ \fi
3008
+ \fi
3009
+ \else % Proceedings
3010
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
3011
+ \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
3012
+ \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
3013
+ \if@ACM@nonacm
3014
+ \fancyhead[LE]{\ACM@linecountL}%
3015
+ \fancyhead[RO]{\ACM@linecountR}%
3016
+ \else%
3017
+ \if@ACM@engage
3018
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
3019
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi}%
3020
+ \fancyhead[RO]{\@headfootfont
3021
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
3022
+ \ACM@linecountR}%
3023
+ \else
3024
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
3025
+ \acmConference@shortname,
3026
+ \acmConference@date, \acmConference@venue}%
3027
+ \fancyhead[RO]{\@headfootfont
3028
+ \acmConference@shortname,
3029
+ \acmConference@date, \acmConference@venue\ACM@linecountR}%
3030
+ \fi
3031
+ \fi
3032
+ \fi
3033
+ \if@ACM@sigchiamode
3034
+ \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
3035
+ \fi
3036
+ \if@ACM@timestamp
3037
+ \fancyfoot[LO,RE]{\ACM@timestamp}
3038
+ \fi
3039
+ \if@ACM@acmcp
3040
+ \renewcommand{\footrulewidth}{0.1\p@}%
3041
+ \fancyheadoffset[L]{46pt}%
3042
+ \fancyhead[L]{\makebox[\z@][l]{%
3043
+ \raisebox{-\dimexpr(0.25\textheight*\ACM@ArticleType@nr)}{%
3044
+ \rotatebox{90}{\colorbox{@ACM@Article@color}{\color{white}%
3045
+ \strut\ACM@ArticleType~Article}}}}%
3046
+ \ACM@linecountL}%
3047
+ \fancyhead[R]{\makebox[\z@][r]{\box\@ACM@acmcpbox}}%
3048
+ \fancyfoot[L,C]{}%
3049
+ \fancyfoot[R]{\footnotesize
3050
+ \@journalName, Volume~\@acmVolume, Issue~\@acmNumber,
3051
+ \ifx\@acmArticle\@empty\else Article~\@acmArticle\fi\space
3052
+ (\@acmPubDate)\ifx\@acmDOI\@empty\else\\\@formatdoi{\@acmDOI}\fi}
3053
+ \fi
3054
+ }%
3055
+ \pagestyle{standardpagestyle}
3056
+ }
3057
+ \newdimen\@folio@wd
3058
+ \@folio@wd=\z@
3059
+ \newdimen\@folio@ht
3060
+ \@folio@ht=\z@
3061
+ \newdimen\@folio@voffset
3062
+ \@folio@voffset=\z@
3063
+ \def\@folio@max{1}
3064
+ \ifcase\ACM@format@nr
3065
+ \relax % manuscript
3066
+ \or % acmsmall
3067
+ \@folio@wd=45.75pt\relax
3068
+ \@folio@ht=1.25in\relax
3069
+ \@folio@voffset=.2in\relax
3070
+ \def\@folio@max{8}
3071
+ \or % acmlarge
3072
+ \@folio@wd=43.25pt\relax
3073
+ \@folio@ht=79pt\relax
3074
+ \@folio@voffset=.55in\relax
3075
+ \def\@folio@max{10}
3076
+ \fi
3077
+ \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
3078
+ \ifnum\@tempcnta=0\relax\else
3079
+ \loop
3080
+ \ifnum\@tempcnta>\@folio@max\relax
3081
+ \advance\@tempcnta by - \@folio@max
3082
+ \repeat
3083
+ \advance\@tempcnta by -1\relax
3084
+ \@tempdima=\@folio@ht\relax
3085
+ \multiply\@tempdima by \the\@tempcnta\relax
3086
+ \advance\@tempdima by -\@folio@voffset\relax
3087
+ \begin{picture}(0,0)
3088
+ \makebox[\z@]{\raisebox{-\@tempdima}{%
3089
+ \rlap{%
3090
+ \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
3091
+ \rule{\@folio@wd}{\@folio@ht}}}%
3092
+ \parbox{\@folio@wd}{%
3093
+ \centering
3094
+ \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
3095
+ \end{picture}\fi}
3096
+
3097
+ \AtBeginDocument{%
3098
+ \fancypagestyle{firstpagestyle}{%
3099
+ \fancyhf{}%
3100
+ \renewcommand{\headrulewidth}{\z@}%
3101
+ \renewcommand{\footrulewidth}{\z@}%
3102
+ \if@ACM@journal@bibstrip
3103
+ \ifcase\ACM@format@nr
3104
+ \relax % manuscript
3105
+ \fancyhead[L]{\ACM@linecountL\@acmBadgeL}%
3106
+ \fancyhead[R]{\@acmBadgeR}%
3107
+ \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
3108
+ \if@ACM@nonacm\else%
3109
+ \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
3110
+ \fi%
3111
+ \or % acmsmall
3112
+ \if@ACM@nonacm\else%
3113
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
3114
+ \@acmNumber, Article \@acmArticle. Publication date:
3115
+ \@acmPubDate.}%
3116
+ \fi%
3117
+ \fancyhead[LE]{\ACM@linecountL\@folioblob\@acmBadgeL}%
3118
+ \fancyhead[LO]{\ACM@linecountL\@acmBadgeL}%
3119
+ \fancyhead[RO]{\@acmBadgeR\@folioblob}%
3120
+ \fancyhead[RE]{\@acmBadgeR}%
3121
+ \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
3122
+ \or % acmlarge
3123
+ \if@ACM@nonacm\else%
3124
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
3125
+ \@acmNumber, Article \@acmArticle. Publication date:
3126
+ \@acmPubDate.}%
3127
+ \fi%
3128
+ \fancyhead[RO]{\@acmBadgeR\@folioblob}%
3129
+ \fancyhead[RE]{\@acmBadgeR}%
3130
+ \fancyhead[LE]{\ACM@linecountL\@folioblob\@acmBadgeL}%
3131
+ \fancyhead[LO]{\ACM@linecountL\@acmBadgeL}%
3132
+ \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
3133
+ \or % acmtog
3134
+ \if@ACM@nonacm\else%
3135
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
3136
+ \@acmNumber, Article \@acmArticle. Publication date:
3137
+ \@acmPubDate.}%
3138
+ \fi%
3139
+ \fancyhead[L]{\ACM@linecountL\@acmBadgeL}%
3140
+ \fancyhead[R]{\@acmBadgeR\ACM@linecountR}%
3141
+ \else % Conference proceedings
3142
+ \fancyhead[L]{\ACM@linecountL\@acmBadgeL}%
3143
+ \fancyhead[R]{\@acmBadgeR\ACM@linecountR}%
3144
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
3145
+ \fi
3146
+ \else
3147
+ \fancyhead[L]{\ACM@linecountL\@acmBadgeL}%
3148
+ \fancyhead[R]{\@acmBadgeR\ACM@linecountR}%
3149
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
3150
+ \fi
3151
+ \if@ACM@timestamp
3152
+ \ifnum\ACM@format@nr=0\relax % Manuscript
3153
+ \fancyfoot[LO,RE]{\ACM@timestamp\quad
3154
+ \if@ACM@nonacm\else
3155
+ \footnotesize Manuscript submitted to ACM
3156
+ \fi}
3157
+ \else
3158
+ \fancyfoot[LO,RE]{\ACM@timestamp}
3159
+ \fi
3160
+ \fi
3161
+ \if@ACM@acmcp
3162
+ \renewcommand{\footrulewidth}{0.1\p@}%
3163
+ \fancyheadoffset[L]{46pt}%
3164
+ \fancyhead[L]{\makebox[\z@][l]{%
3165
+ \raisebox{-\dimexpr(0.25\textheight*\ACM@ArticleType@nr)}{%
3166
+ \rotatebox{90}{\colorbox{@ACM@Article@color}{\color{white}%
3167
+ \strut\ACM@ArticleType~Article}}}}%
3168
+ \ACM@linecountL\@acmBadgeL}%
3169
+ \fancyhead[R]{\@acmBadgeR\makebox[\z@][r]{\box\@ACM@acmcpbox}}%
3170
+ \fancyfoot[L,C]{}%
3171
+ \fancyfoot[R]{\footnotesize
3172
+ \@journalName, Volume~\@acmVolume, Issue~\@acmNumber,
3173
+ \ifx\@acmArticle\@empty\else Article~\@acmArticle\fi\space
3174
+ (\@acmPubDate)\ifx\@acmDOI\@empty\else\\\@formatdoi{\@acmDOI}\fi}
3175
+ \fi
3176
+ }}
3177
+ \def\ACM@NRadjust#1{%
3178
+ \begingroup
3179
+ \expandafter\ifx\csname Sectionformat\endcsname\relax
3180
+ % do nothing when \Sectionformat is unknown
3181
+ \def\next{\endgroup #1}%
3182
+ \else
3183
+ \def\next{\endgroup
3184
+ \let\realSectionformat\Sectionformat
3185
+ \def\ACM@sect@format@{#1}%
3186
+ \let\Sectionformat\ACM@NR@adjustedSectionformat
3187
+ %% next lines added 2018-06-17 to ensure section number is styled
3188
+ \let\real@adddotafter\@adddotafter
3189
+ \let\@adddotafter\ACM@adddotafter
3190
+ #1{}% imposes the styles, but nullifies \MakeUppercase
3191
+ \let\@adddotafter\real@adddotafter
3192
+ }%
3193
+ \fi \next
3194
+ }
3195
+ \def\ACM@NR@adjustedSectionformat#1#2{%
3196
+ \realSectionformat{\ACM@sect@format{#1}}{#2}%
3197
+ \let\Sectionformat\realSectionformat}
3198
+ \DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@}
3199
+ \def\ACM@sect@format@null#1{#1}
3200
+ \let\ACM@sect@format@\ACM@sect@format@null
3201
+ \AtBeginDocument{%
3202
+ \expandafter\ifx\csname LTX@adddotafter\endcsname\relax
3203
+ \let\LTX@adddotafter\@adddotafter
3204
+ \fi
3205
+ }
3206
+ \def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi}
3207
+ \renewcommand\section{\@startsection{section}{1}{\z@}%
3208
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3209
+ {.25\baselineskip}%
3210
+ {\ACM@NRadjust\@secfont}}
3211
+ \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
3212
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3213
+ {.25\baselineskip}%
3214
+ {\ACM@NRadjust\@subsecfont}}
3215
+ \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
3216
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3217
+ {-3.5\p@}%
3218
+ {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}}
3219
+ \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
3220
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3221
+ {-3.5\p@}%
3222
+ {\ACM@NRadjust{\@parfont\@adddotafter}}}
3223
+ \newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}%
3224
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3225
+ {-3.5\p@}%
3226
+ {\ACM@NRadjust{\@parfont}}}
3227
+
3228
+ \renewcommand\part{\@startsection{part}{9}{\z@}%
3229
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
3230
+ {4\p@}%
3231
+ {\ACM@NRadjust\@parfont}}
3232
+ \def\section@raggedright{\@rightskip\@flushglue
3233
+ \rightskip\@rightskip
3234
+ \leftskip\z@skip
3235
+ \parindent\z@}
3236
+ \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
3237
+ \def\@subsecfont{\sffamily\bfseries\section@raggedright}
3238
+ \def\@subsubsecfont{\sffamily\itshape}
3239
+ \def\@parfont{\itshape}
3240
+ \setcounter{secnumdepth}{3}
3241
+ \ifcase\ACM@format@nr
3242
+ \relax % manuscript
3243
+ \or % acmsmall
3244
+ \or % acmlarge
3245
+ \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
3246
+ \def\@subsecfont{\sffamily\large\section@raggedright}
3247
+ \or % acmtog
3248
+ \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
3249
+ \def\@subsecfont{\sffamily\large\section@raggedright}
3250
+ \or % sigconf
3251
+ \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
3252
+ \def\@subsecfont{\bfseries\Large\section@raggedright}
3253
+ \or % siggraph
3254
+ \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
3255
+ \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
3256
+ \or % sigplan
3257
+ \def\@secfont{\bfseries\Large\section@raggedright}
3258
+ \def\@subsecfont{\bfseries\section@raggedright}
3259
+ \def\@subsubsecfont{\bfseries\section@raggedright}
3260
+ \def\@parfont{\bfseries\itshape}
3261
+ \def\@subparfont{\itshape}
3262
+ \or % sigchi
3263
+ \setcounter{secnumdepth}{1}
3264
+ \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
3265
+ \def\@subsecfont{\sffamily\bfseries\section@raggedright}
3266
+ \or % sigchi-a
3267
+ \setcounter{secnumdepth}{0}
3268
+ \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
3269
+ \def\@subsecfont{\sffamily\bfseries\section@raggedright}
3270
+ \or % acmengage
3271
+ \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
3272
+ \def\@subsecfont{\bfseries\Large\section@raggedright}
3273
+ \or %acmcp
3274
+ \fi
3275
+ \def\@adddotafter#1{#1\@addpunct{.}}
3276
+ \def\@addspaceafter#1{#1\@addpunct{\enspace}}
3277
+ \if@ACM@acmcp
3278
+ \setcounter{secnumdepth}{-1}%
3279
+ \fi
3280
+ \providecommand*\@dotsep{4.5}
3281
+ \def\@acmplainbodyfont{\itshape}
3282
+ \def\@acmplainindent{\parindent}
3283
+ \def\@acmplainheadfont{\scshape}
3284
+ \def\@acmplainnotefont{\@empty}
3285
+ \ifcase\ACM@format@nr
3286
+ \relax % manuscript
3287
+ \or % acmsmall
3288
+ \or % acmlarge
3289
+ \or % acmtog
3290
+ \or % sigconf
3291
+ \or % siggraph
3292
+ \or % sigplan
3293
+ \def\@acmplainbodyfont{\itshape}
3294
+ \def\@acmplainindent{\z@}
3295
+ \def\@acmplainheadfont{\bfseries}
3296
+ \def\@acmplainnotefont{\normalfont}
3297
+ \or % sigchi
3298
+ \or % sigchi-a
3299
+ \or % acmengage
3300
+ \or % acmcp
3301
+ \fi
3302
+ \newtheoremstyle{acmplain}%
3303
+ {.5\baselineskip\@plus.2\baselineskip
3304
+ \@minus.2\baselineskip}% space above
3305
+ {.5\baselineskip\@plus.2\baselineskip
3306
+ \@minus.2\baselineskip}% space below
3307
+ {\@acmplainbodyfont}% body font
3308
+ {\@acmplainindent}% indent amount
3309
+ {\@acmplainheadfont}% head font
3310
+ {.}% punctuation after head
3311
+ {.5em}% spacing after head
3312
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec
3313
+ \def\@acmdefinitionbodyfont{\normalfont}
3314
+ \def\@acmdefinitionindent{\parindent}
3315
+ \def\@acmdefinitionheadfont{\itshape}
3316
+ \def\@acmdefinitionnotefont{\@empty}
3317
+ \ifcase\ACM@format@nr
3318
+ \relax % manuscript
3319
+ \or % acmsmall
3320
+ \or % acmlarge
3321
+ \or % acmtog
3322
+ \or % sigconf
3323
+ \or % siggraph
3324
+ \or % sigplan
3325
+ \def\@acmdefinitionbodyfont{\normalfont}
3326
+ \def\@acmdefinitionindent{\z@}
3327
+ \def\@acmdefinitionheadfont{\bfseries}
3328
+ \def\@acmdefinitionnotefont{\normalfont}
3329
+ \or % sigchi
3330
+ \or % sigchi-a
3331
+ \or % acmengage
3332
+ \or % acmcp
3333
+ \fi
3334
+ \newtheoremstyle{acmdefinition}%
3335
+ {.5\baselineskip\@plus.2\baselineskip
3336
+ \@minus.2\baselineskip}% space above
3337
+ {.5\baselineskip\@plus.2\baselineskip
3338
+ \@minus.2\baselineskip}% space below
3339
+ {\@acmdefinitionbodyfont}% body font
3340
+ {\@acmdefinitionindent}% indent amount
3341
+ {\@acmdefinitionheadfont}% head font
3342
+ {.}% punctuation after head
3343
+ {.5em}% spacing after head
3344
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
3345
+ \theoremstyle{acmplain}
3346
+ \AtEndPreamble{%
3347
+ \if@ACM@acmthm
3348
+ \theoremstyle{acmplain}
3349
+ \@ifundefined{theorem}{%
3350
+ \newtheorem{theorem}{Theorem}[section]
3351
+ }{}
3352
+ \@ifundefined{conjecture}{%
3353
+ \newtheorem{conjecture}[theorem]{Conjecture}
3354
+ }{}
3355
+ \@ifundefined{proposition}{%
3356
+ \newtheorem{proposition}[theorem]{Proposition}
3357
+ }{}
3358
+ \@ifundefined{lemma}{%
3359
+ \newtheorem{lemma}[theorem]{Lemma}
3360
+ }{}
3361
+ \@ifundefined{corollary}{%
3362
+ \newtheorem{corollary}[theorem]{Corollary}
3363
+ }{}
3364
+ \theoremstyle{acmdefinition}
3365
+ \@ifundefined{example}{%
3366
+ \newtheorem{example}[theorem]{Example}
3367
+ }{}
3368
+ \@ifundefined{definition}{%
3369
+ \newtheorem{definition}[theorem]{Definition}
3370
+ }{}
3371
+ \fi
3372
+ \theoremstyle{acmplain}
3373
+ }
3374
+ \def\@proofnamefont{\scshape}
3375
+ \def\@proofindent{\indent}
3376
+ \ifcase\ACM@format@nr
3377
+ \relax % manuscript
3378
+ \or % acmsmall
3379
+ \or % acmlarge
3380
+ \or % acmtog
3381
+ \or % sigconf
3382
+ \or % siggraph
3383
+ \or % sigplan
3384
+ \def\@proofnamefont{\itshape}
3385
+ \def\@proofindent{\noindent}
3386
+ \or % sigchi
3387
+ \or % sigchi-a
3388
+ \or % acmengage
3389
+ \or % acmcp
3390
+ \fi
3391
+ \renewenvironment{proof}[1][\proofname]{\par
3392
+ \pushQED{\qed}%
3393
+ \normalfont \topsep6\p@\@plus6\p@\relax
3394
+ \trivlist
3395
+ \item[\@proofindent\hskip\labelsep
3396
+ {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
3397
+ }{%
3398
+ \popQED\endtrivlist\@endpefalse
3399
+ }
3400
+ \AtEndPreamble{%
3401
+ \if@ACM@pbalance
3402
+ \global\@ACM@balancefalse
3403
+ \ifcase\ACM@format@nr
3404
+ \relax % manuscript
3405
+ \or % acmsmall
3406
+ \or % acmlarge
3407
+ \or % acmtog
3408
+ \RequirePackage{pbalance}%
3409
+ \or % sigconf
3410
+ \RequirePackage{pbalance}%
3411
+ \or % siggraph
3412
+ \RequirePackage{pbalance}%
3413
+ \or % sigplan
3414
+ \RequirePackage{pbalance}%
3415
+ \or % sigchi
3416
+ \RequirePackage{pbalance}%
3417
+ \or % sigchi-a
3418
+ \or % acmengage
3419
+ \RequirePackage{pbalance}%
3420
+ \or % acmcp
3421
+ \fi
3422
+ \fi
3423
+ \if@ACM@balance
3424
+ \ifcase\ACM@format@nr
3425
+ \relax % manuscript
3426
+ \global\@ACM@balancefalse
3427
+ \or % acmsmall
3428
+ \global\@ACM@balancefalse
3429
+ \or % acmlarge
3430
+ \global\@ACM@balancefalse
3431
+ \or % acmtog
3432
+ \RequirePackage{balance}%
3433
+ \or % sigconf
3434
+ \RequirePackage{balance}%
3435
+ \or % siggraph
3436
+ \RequirePackage{balance}%
3437
+ \or % sigplan
3438
+ \RequirePackage{balance}%
3439
+ \or % sigchi
3440
+ \RequirePackage{balance}%
3441
+ \or % sigchi-a
3442
+ \global\@ACM@balancefalse
3443
+ \or % acmengage
3444
+ \RequirePackage{balance}%
3445
+ \or % acmcp
3446
+ \global\@ACM@balancefalse
3447
+ \fi
3448
+ \fi
3449
+ }
3450
+ \AtEndDocument{%
3451
+ \if@ACM@balance
3452
+ \if@twocolumn
3453
+ \balance
3454
+ \fi\fi}
3455
+ \newcommand\acksname{Acknowledgments}
3456
+ \specialcomment{acks}{%
3457
+ \begingroup
3458
+ \section*{\acksname}
3459
+ \phantomsection\addcontentsline{toc}{section}{\acksname}
3460
+ }{%
3461
+ \endgroup
3462
+ }
3463
+ \def\grantsponsor#1#2#3{#2}
3464
+ \newcommand\grantnum[3][]{#3%
3465
+ \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
3466
+ \AtEndPreamble{%
3467
+ \if@ACM@screen
3468
+ \includecomment{screenonly}
3469
+ \excludecomment{printonly}
3470
+ \else
3471
+ \excludecomment{screenonly}
3472
+ \includecomment{printonly}
3473
+ \fi
3474
+ \if@ACM@anonymous
3475
+ \excludecomment{anonsuppress}
3476
+ \excludecomment{acks}
3477
+ \else
3478
+ \includecomment{anonsuppress}
3479
+ \fi}
3480
+ \newcommand\showeprint[2][arxiv]{%
3481
+ \def\@tempa{#1}%
3482
+ \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
3483
+ \def\@tempb{arxiv}%
3484
+ \ifx\@tempa\@tempb\relax
3485
+ arXiv:\href{https://arxiv.org/abs/#2}{#2}%
3486
+ \else
3487
+ \def\@tempb{arXiv}%
3488
+ \ifx\@tempa\@tempb\relax
3489
+ arXiv:\href{https://arxiv.org/abs/#2}{#2}%
3490
+ \else
3491
+ #1:#2%
3492
+ \fi
3493
+ \fi}
3494
+ \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
3495
+ \columnseprule\z@ \columnsep 35\p@
3496
+ \@indextitlestyle
3497
+ \let\item\@idxitem
3498
+ \parindent\z@ \parskip\z@\@plus.3\p@\relax
3499
+ \raggedright
3500
+ \hyphenpenalty\@M
3501
+ \footnotesize}
3502
+ \let\@vspace@orig=\@vspace
3503
+ \let\@vspacer@orig=\@vspacer
3504
+ \apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should
3505
+ only be used to provide space above/below surrounding
3506
+ objects}}{}{}
3507
+ \apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should
3508
+ only be used to provide space above/below surrounding
3509
+ objects}}{}{}
3510
+ \let\@vspace@acm=\@vspace
3511
+ \let\@vspacer@acm=\@vspacer
3512
+ \let\ACM@origbaselinestretch\baselinestretch
3513
+ \AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else
3514
+ \ClassError{\@classname}{An attempt to redefine
3515
+ \string\baselinestretch\space detected. Please do not do this for
3516
+ ACM submissions!}\fi}
3517
+ \normalsize\normalfont\frenchspacing
3518
+ \endinput
3519
+ %%
3520
+ %% End of file `acmart.cls'.