diff --git a/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/AsciidocConverter.kt b/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/AsciidocConverter.kt index 3ac8b27..3e7d1b8 100644 --- a/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/AsciidocConverter.kt +++ b/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/AsciidocConverter.kt @@ -26,7 +26,6 @@ class AsciidocConverter( val asciidoctor = Asciidoctor.Factory.create() val anchorReplacements = mutableMapOf() - val customReferences = mutableSetOf() val requirementsBlockProcessor = RequirementsBlockProcessor() asciidoctor.javaExtensionRegistry().block(requirementsBlockProcessor) @@ -41,9 +40,9 @@ class AsciidocConverter( ) asciidoctor.javaExtensionRegistry().treeprocessor(RequirementLevelProcessor()) asciidoctor.javaExtensionRegistry().preprocessor(DisableSectNumsProcessor()) - asciidoctor.javaExtensionRegistry().preprocessor(ReferenceSanitizerPreprocessor()) + asciidoctor.javaExtensionRegistry().preprocessor(ReferenceSanitizerPreprocessor(anchorReplacements)) asciidoctor.javaExtensionRegistry() - .postprocessor(ReferenceSanitizerPostprocessor(anchorReplacements, customReferences)) + .postprocessor(ReferenceSanitizerPostprocessor(anchorReplacements)) asciidoctor.requireLibrary("asciidoctor-diagram") // enables plantuml when (inputType) { diff --git a/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/asciidoc/extension/ReferenceSanitizerPostprocessor.kt b/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/asciidoc/extension/ReferenceSanitizerPostprocessor.kt index 423bfd8..9d860cc 100644 --- a/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/asciidoc/extension/ReferenceSanitizerPostprocessor.kt +++ b/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/asciidoc/extension/ReferenceSanitizerPostprocessor.kt @@ -14,7 +14,8 @@ enum class LabelSource { SECTION, TABLE_OR_FIGURE, APPENDIX, - VOLUME + VOLUME, + UNKNOWN } data class LabelInfo( @@ -25,8 +26,7 @@ data class LabelInfo( ) class ReferenceSanitizerPostprocessor( - private val anchorLabels: Map, - private val customReferences: Set + private val anchorLabels: Map ) : Postprocessor() { override fun process(document: Document, output: String): String { // skip numbering if xref style has been changed to reduce likelihood of broken references @@ -84,6 +84,7 @@ class ReferenceSanitizerPostprocessor( LabelSource.TABLE_OR_FIGURE -> anchor.text(anchorText ?: it.label) LabelSource.APPENDIX -> anchor.text(anchorText ?: "$appendixSig${it.prefix}:${it.label}") LabelSource.VOLUME -> anchor.text(anchorText ?: "$chapterSig${it.prefix}") + LabelSource.UNKNOWN -> anchor.text(anchorText ?: it.label) } } } diff --git a/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/asciidoc/extension/ReferenceSanitizerPreprocessor.kt b/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/asciidoc/extension/ReferenceSanitizerPreprocessor.kt index e98a256..b2dc8cd 100644 --- a/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/asciidoc/extension/ReferenceSanitizerPreprocessor.kt +++ b/.ci/asciidoc-converter/src/main/kotlin/org/sdpi/asciidoc/extension/ReferenceSanitizerPreprocessor.kt @@ -7,7 +7,9 @@ import java.net.URLEncoder import java.util.* -class ReferenceSanitizerPreprocessor : Preprocessor() { +class ReferenceSanitizerPreprocessor( + private val anchorReplacements: MutableMap +) : Preprocessor() { private val variables = mutableMapOf() override fun process(document: org.asciidoctor.ast.Document, reader: PreprocessorReader) { @@ -23,6 +25,7 @@ class ReferenceSanitizerPreprocessor : Preprocessor() { val substitutedVariables = substituteVariables(refs[1].trim()) val encodedRefText = URLEncoder.encode(substitutedVariables, Charsets.UTF_8) val transformed = "<<${refs[0]}$refSeparator$encodedRefText>>" + anchorReplacements[refs[0]] = LabelInfo(substitutedVariables, LabelSource.UNKNOWN) logger.info { "Found reference with custom label: ${it.groupValues.first()} => $transformed" } transformed } diff --git a/.github/copy_images.sh b/.github/copy_images.sh index 1dfedd4..cb0b847 100755 --- a/.github/copy_images.sh +++ b/.github/copy_images.sh @@ -9,5 +9,7 @@ cd .. mkdir sdpi-supplement cp -R asciidoc/images sdpi-supplement/images cp -R asciidoc/js sdpi-supplement/js +cp -R asciidoc/css sdpi-supplement/css +cp -R asciidoc/fonts sdpi-supplement/fonts rm -rf sdpi-supplement/.asciidoctor rm -rf sdpi-supplement/readme.md diff --git a/asciidoc/css/font-awesome.css b/asciidoc/css/font-awesome.css new file mode 100644 index 0000000..ee906a8 --- /dev/null +++ b/asciidoc/css/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/asciidoc/css/font-awesome.min.css b/asciidoc/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/asciidoc/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/asciidoc/css/fonts.css b/asciidoc/css/fonts.css new file mode 100644 index 0000000..6222e03 --- /dev/null +++ b/asciidoc/css/fonts.css @@ -0,0 +1,114 @@ +/* noto-sans-mono-regular - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Noto Sans Mono'; + font-style: normal; + font-weight: 400; + src: url('../fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* noto-sans-mono-700 - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Noto Sans Mono'; + font-style: normal; + font-weight: 700; + src: url('../fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + + + +/* open-sans-300 - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* open-sans-300italic - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300italic.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* open-sans-regular - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* open-sans-italic - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* open-sans-600 - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* open-sans-600italic - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600italic.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + + + +/* noto-serif-regular - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Noto Serif'; + font-style: normal; + font-weight: 400; + src: url('../fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* noto-serif-italic - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Noto Serif'; + font-style: italic; + font-weight: 400; + src: url('../fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* noto-serif-700 - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Noto Serif'; + font-style: normal; + font-weight: 700; + src: url('../fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* noto-serif-700italic - cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Noto Serif'; + font-style: italic; + font-weight: 700; + src: url('../fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('../fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700italic.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} \ No newline at end of file diff --git a/asciidoc/docinfo.html b/asciidoc/docinfo.html index 83c9d66..a1b064d 100644 --- a/asciidoc/docinfo.html +++ b/asciidoc/docinfo.html @@ -1,3 +1,5 @@ + + diff --git a/asciidoc/document-declarations.adoc b/asciidoc/document-declarations.adoc index 574dc71..cd0d011 100644 --- a/asciidoc/document-declarations.adoc +++ b/asciidoc/document-declarations.adoc @@ -68,7 +68,7 @@ NOTE: Forward Declarations in the following table are being added "on demand" o | Use Case | [[acronym_mdpws,MDPWS]] MDPWS -| [[label_use_case_name_mdpws,Medical Device Profile for Web Services]] Medical Device Profile for Web Services +| [[label_use_case_name_mdpws,Medical Devices Communication Profile for Web Services]] Medical Devices Communication Profile for Web Services | <> | Standard diff --git a/asciidoc/fonts/FontAwesome.otf b/asciidoc/fonts/FontAwesome.otf new file mode 100644 index 0000000..401ec0f Binary files /dev/null and b/asciidoc/fonts/FontAwesome.otf differ diff --git a/asciidoc/fonts/fontawesome-webfont.eot b/asciidoc/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/asciidoc/fonts/fontawesome-webfont.eot differ diff --git a/asciidoc/fonts/fontawesome-webfont.svg b/asciidoc/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/asciidoc/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/asciidoc/fonts/fontawesome-webfont.ttf b/asciidoc/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/asciidoc/fonts/fontawesome-webfont.ttf differ diff --git a/asciidoc/fonts/fontawesome-webfont.woff b/asciidoc/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/asciidoc/fonts/fontawesome-webfont.woff differ diff --git a/asciidoc/fonts/fontawesome-webfont.woff2 b/asciidoc/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/asciidoc/fonts/fontawesome-webfont.woff2 differ diff --git a/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff b/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff new file mode 100644 index 0000000..61e6b24 Binary files /dev/null and b/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff differ diff --git a/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff2 b/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff2 new file mode 100644 index 0000000..095bc05 Binary files /dev/null and b/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff2 differ diff --git a/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff b/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff new file mode 100644 index 0000000..be69031 Binary files /dev/null and b/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff differ diff --git a/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 b/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 new file mode 100644 index 0000000..25c232a Binary files /dev/null and b/asciidoc/fonts/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 differ diff --git a/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff new file mode 100644 index 0000000..4224d83 Binary files /dev/null and b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff differ diff --git a/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff2 b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff2 new file mode 100644 index 0000000..b4f084c Binary files /dev/null and b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700.woff2 differ diff --git a/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700italic.woff b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700italic.woff new file mode 100644 index 0000000..ad8486e Binary files /dev/null and b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700italic.woff differ diff --git a/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700italic.woff2 b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700italic.woff2 new file mode 100644 index 0000000..d2cc6a4 Binary files /dev/null and b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-700italic.woff2 differ diff --git a/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff new file mode 100644 index 0000000..6b81b46 Binary files /dev/null and b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff differ diff --git a/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff2 b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff2 new file mode 100644 index 0000000..f848903 Binary files /dev/null and b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff2 differ diff --git a/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff new file mode 100644 index 0000000..f356db5 Binary files /dev/null and b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff differ diff --git a/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 new file mode 100644 index 0000000..e0ac12f Binary files /dev/null and b/asciidoc/fonts/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300.woff b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300.woff new file mode 100644 index 0000000..b86cd55 Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300.woff differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300.woff2 b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300.woff2 new file mode 100644 index 0000000..d5d1a2c Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300.woff2 differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300italic.woff b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300italic.woff new file mode 100644 index 0000000..96f268e Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300italic.woff differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300italic.woff2 b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300italic.woff2 new file mode 100644 index 0000000..1a89b35 Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-300italic.woff2 differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600.woff b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600.woff new file mode 100644 index 0000000..32c56a3 Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600.woff differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600.woff2 b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600.woff2 new file mode 100644 index 0000000..2659995 Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600.woff2 differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600italic.woff b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600italic.woff new file mode 100644 index 0000000..8612cca Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600italic.woff differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600italic.woff2 b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600italic.woff2 new file mode 100644 index 0000000..932bb4d Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-600italic.woff2 differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff new file mode 100644 index 0000000..7b91f73 Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff2 b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff2 new file mode 100644 index 0000000..f559fd4 Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-italic.woff2 differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff new file mode 100644 index 0000000..9bc5d1e Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff differ diff --git a/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 new file mode 100644 index 0000000..2aa7f33 Binary files /dev/null and b/asciidoc/fonts/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext-regular.woff2 differ diff --git a/asciidoc/listings/vol2-clause-appendix-a-mdpws-dev-23-hello.xml b/asciidoc/listings/vol2-clause-appendix-a-mdpws-dev-23-hello.xml index 8f77b48..f2cb4f8 100644 --- a/asciidoc/listings/vol2-clause-appendix-a-mdpws-dev-23-hello.xml +++ b/asciidoc/listings/vol2-clause-appendix-a-mdpws-dev-23-hello.xml @@ -17,7 +17,7 @@ dpws:Device mdpws:MedicalDevice - + sdc.mds.pkp:1.2.840.10004.20701.1.1 diff --git a/asciidoc/listings/vol2-clause-appendix-a-mdpws-dev-24-probe.xml b/asciidoc/listings/vol2-clause-appendix-a-mdpws-dev-24-probe.xml index 54b8d93..69ed06b 100644 --- a/asciidoc/listings/vol2-clause-appendix-a-mdpws-dev-24-probe.xml +++ b/asciidoc/listings/vol2-clause-appendix-a-mdpws-dev-24-probe.xml @@ -12,7 +12,7 @@ mdpws:MedicalDevice - + sdc.mds.pkp:1.2.840.10004.20701.1.1 diff --git a/asciidoc/listings/vol3-clause-biceps-content-example-equipment-identifier.xml b/asciidoc/listings/vol3-clause-biceps-content-example-equipment-identifier.xml new file mode 100644 index 0000000..17da659 --- /dev/null +++ b/asciidoc/listings/vol3-clause-biceps-content-example-equipment-identifier.xml @@ -0,0 +1,29 @@ + + + + + + + urn:uuid:9c057bb4-8d83-4fc1-9ad1-832ad543e2b2 + + + + urn:uuid:84051cdb-5353-47af-a916-b1f007e08ed8 + + + + + + + + + + + + + diff --git a/asciidoc/listings/vol3_clause_sdc_biceps_content_module_physio_monitor_snippet1.xml b/asciidoc/listings/vol3-clause-sdc-biceps-content-module-physio-monitor-snippet1.xml similarity index 100% rename from asciidoc/listings/vol3_clause_sdc_biceps_content_module_physio_monitor_snippet1.xml rename to asciidoc/listings/vol3-clause-sdc-biceps-content-module-physio-monitor-snippet1.xml diff --git a/asciidoc/plantuml/vol2-figure-dev-27-sequence.puml b/asciidoc/plantuml/vol2-figure-dev-27-sequence.puml index fd9f787..11b4a8a 100644 --- a/asciidoc/plantuml/vol2-figure-dev-27-sequence.puml +++ b/asciidoc/plantuml/vol2-figure-dev-27-sequence.puml @@ -11,7 +11,7 @@ participant "$str_somds_provider" as provider ==SDPi [DEV-27] Manage BICEPS Subscription== -consumer -> provider: Subscribe(Filter) +consumer -> provider: Subscribe(Filter, Expiration Time) consumer <<-- provider: SubscribeResponse(Subscription Manager, Expiration Time) par @@ -20,7 +20,7 @@ par end else loop when ExpirationTime is about to expire - consumer -> provider: Renew(Subscription Manager) + consumer -> provider: Renew(Expiration Time) consumer <<-- provider: RenewResponse(Expiration Time) end end diff --git a/asciidoc/plantuml/vol2-figure-dev-35-sequence.puml b/asciidoc/plantuml/vol2-figure-dev-35-sequence.puml index f8ce786..9c751a5 100644 --- a/asciidoc/plantuml/vol2-figure-dev-35-sequence.puml +++ b/asciidoc/plantuml/vol2-figure-dev-35-sequence.puml @@ -11,7 +11,7 @@ participant "$str_somds_provider" as provider ==SDPi [DEV-35] Establish Medical Data Exchange== -consumer -> provider: Subscribe(Filter) +consumer -> provider: Subscribe(Filter, Expiration Time) consumer <<-- provider: SubscribeResponse(Subscription Manager, Expiration Time) @enduml \ No newline at end of file diff --git a/asciidoc/plantuml/vol2-figure-dev-38-sequence.puml b/asciidoc/plantuml/vol2-figure-dev-38-sequence.puml index 238e3c5..2fb89a1 100644 --- a/asciidoc/plantuml/vol2-figure-dev-38-sequence.puml +++ b/asciidoc/plantuml/vol2-figure-dev-38-sequence.puml @@ -11,7 +11,7 @@ participant "$str_somds_provider" as provider ==SDPi [DEV-38] Establish Medical Alert Exchange== -consumer -> provider: Subscribe(Filter) +consumer -> provider: Subscribe(Filter, Expiration Time) consumer <<-- provider: SubscribeResponse(Subscription Manager, Expiration Time) @enduml \ No newline at end of file diff --git a/asciidoc/sdpi-supplement.adoc b/asciidoc/sdpi-supplement.adoc index aa3653a..8d94ca3 100644 --- a/asciidoc/sdpi-supplement.adoc +++ b/asciidoc/sdpi-supplement.adoc @@ -2,6 +2,9 @@ :doctype: book // CAUTION: do not change the xrefstyle attribute as otherwise numbering will be broken :xrefstyle: short +:stylesdir: css +:!webfonts: +:!iconfont-remote: :toc-title: Contents :toc: left :toclevels: 3 diff --git a/asciidoc/volume0/tf0-ch-a-actors.adoc b/asciidoc/volume0/tf0-ch-a-actors.adoc index bc0708e..fe8b158 100644 --- a/asciidoc/volume0/tf0-ch-a-actors.adoc +++ b/asciidoc/volume0/tf0-ch-a-actors.adoc @@ -98,13 +98,13 @@ Note: A <> is the primary actor providing communication f |=== -The table below lists _existing_ actors that are utilized in this profile. +The table below lists _existing_ actors that are utilized in this specification. //// #TODO: VERIFY THAT THE GATEWAY ACTORS ARE FULLY ACCOUNTED FOR + ANY ADDITIONAL DEPENDENT ACTORS# //// -.Complete List of Existing Actors Utilized in this Profile +.Complete List of Existing Actors Utilized in this specification [cols="1,2"] |=== |Existing Actor Name |Definition diff --git a/asciidoc/volume0/tf0-ch-d-glossary.adoc b/asciidoc/volume0/tf0-ch-d-glossary.adoc index 2497f6e..01c7208 100644 --- a/asciidoc/volume0/tf0-ch-d-glossary.adoc +++ b/asciidoc/volume0/tf0-ch-d-glossary.adoc @@ -22,7 +22,7 @@ | [[term_american_national_standards_institute,American National Standards Institute (ANSI)]] American National Standards Institute | The primary United States <> recognition and facilitation organization. See https://ansi.org/[ANSI.org] for more information. -| ... +| | [[acronym_ansi,ANSI]] ANSI | | Organization @@ -45,7 +45,7 @@ | The foundational domain information model (DIM) that is recognized and implemented in all IEEE 11073 standards and profiles, for both <> and <> devices. | | [[acronym_dim,DIM]] DIM -| <<<>>> +| <> | SDC | [[term_clinical_function,Clinical Function]] Clinical Function @@ -84,7 +84,7 @@ | SDC | [[term_electronic_health_record, Electronic Health Record]] Electronic Health Record -| An electronic record derived from a computer system that maintains a longitudinal view of a patient’s history. It contains comprehensive information on a patient’s health used primarily for delivering patient care in a clinical setting.. +| An electronic record derived from a computer system that maintains a longitudinal view of a patient’s history. It contains comprehensive information on a patient’s health used primarily for delivering patient care in a clinical setting. | | [[acronym_ehr,EHR]] EHR | https://profiles.ihe.net/GeneralIntro/ch-D.html[IHE General Introduction Appendix D Glossary] @@ -282,6 +282,13 @@ elements, from requirements to system components to Verification & Validation te | | +| [[term_q_name, QName]] QName +| XML Schema QName. In this specification, QNames are encoded as `{}`. +| +| +| +| + | [[term_regulatory_ready,Regulatory Ready (RR)]] Regulatory Ready | For regulated medical device technology, integrating <> and <> content such that conformity assessment test reports may be directly included as supporting evidence in pre-market submissions to regulatory agencies. It is part of the Requirements Interoperability + Model Centric + Regulatory Ready (<>) focus of the IHE Devices Technical Framework. | <> @@ -289,6 +296,13 @@ elements, from requirements to system components to Verification & Validation te | See also <> and <> | +| [[term_removable_subsystem,Removable Subsystem]] Removable Subsystem +| A subsystem of a <> that can be attached to or removed from the <> and that is represented in the <>. +| +| +| See also <> +| + | [[term_requirements_interoperability,Requirements Interoperability (RI)]] Requirements Interoperability | The ability to specify the requirements of one specification in such a way that they can be connected with capabilities of other specifications. It is part of the Requirements Interoperability + Model Centric + Regulatory Ready (RI+MC+RR) focus of the IHE Devices Technical Framework. | RI+MC+RR @@ -381,18 +395,13 @@ implements a service-oriented <> architecture composed of service p | | -| [[term_q_name, QName]] QName -| XML Schema QName. In this specification, QNames are encoded as `{}`. +| [[term_medical_device_system,Virtual Medical Device (VMD)]] Virtual Medical Device +| A core object type in the ISO/IEEE 11073 device communication standards. It represents the second-level containment of the hierarchy of information objects contained in a device. | +| [[acronym_vmd,VMD]] VMD +| <>, <> | -| ... -| ... -| ... -| ... -| ... -| ... - |=== diff --git a/asciidoc/volume0/tf0-main.adoc b/asciidoc/volume0/tf0-main.adoc index 5383e0d..0aab0c0 100644 --- a/asciidoc/volume0/tf0-main.adoc +++ b/asciidoc/volume0/tf0-main.adoc @@ -24,3 +24,40 @@ include::tf0-ch-b-transactions.adoc[] include::tf0-ch-d-glossary.adoc[] +=== XML Namespaces + +The XML namespace URI that is used by this profile is: `urn:oid:1.3.6.1.4.1.19376.1.6.2.10.1.1.1`. + +<> lists XML namespaces and prefixes that are used in this profile. +The choice of any namespace prefix is arbitrary and not semantically significant. + +.Prefixes and XML namespaces used in this profile. +[#vol0_table_xml_namespaces,cols="1,5,2",width=100%,] +|=== +|Prefix |XML Namespace |Specification + +|dpws +|http://docs.oasis-open.org/ws-dd/ns/dpws/2009/01 +|<> + +|sdpi +|urn:oid:1.3.6.1.4.1.19376.1.6.2.10.1.1.1 +|This profile + +|wsa +|http://www.w3.org/2005/08/addressing +|<> + +|wsd +|http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01 +|<> + +|wse +|http://schemas.xmlsoap.org/ws/2004/08/eventing +|<> + +|wsm +|http://schemas.xmlsoap.org/ws/2004/09/mex +|<> + +|=== \ No newline at end of file diff --git a/asciidoc/volume1/tf1-ch-10-sdpi-p.adoc b/asciidoc/volume1/tf1-ch-10-sdpi-p.adoc index 9da7139..2b8674b 100644 --- a/asciidoc/volume1/tf1-ch-10-sdpi-p.adoc +++ b/asciidoc/volume1/tf1-ch-10-sdpi-p.adoc @@ -33,8 +33,9 @@ Deferred transactions have been so indicated in the transactions table. |=== -This section defines the actors, transactions, and/or content modules in this profile. +This section defines the actors, transactions, and/or content modules in this specification. General definitions of actors are given in the https://profiles.ihe.net/GeneralIntro/ch-A.html[_Technical Frameworks General Introduction Appendix A_]. + IHE Transactions can be found in the https://profiles.ihe.net/GeneralIntro/ch-B.html[_Technical Frameworks General Introduction Appendix B_]. Both appendices are located at https://profiles.ihe.net/GeneralIntro/[_profiles.ihe.net/GeneralIntro_]. @@ -50,7 +51,7 @@ Actor groupings, including abstract with concrete are detailed in <> lists the transactions for each actor directly involved in the SDPi-P Profile. -To claim conformity with this profile, an actor shall support all required transactions (labeled “R”) and may support the optional transactions (labeled “O”). +To claim conformity with this specification, an actor shall support all required transactions (labeled “R”) and may support the optional transactions (labeled “O”). Note that “Consumer” is indicated for actors that receive but do not directly respond to a specific transaction. {empty} + @@ -263,7 +264,7 @@ However, the content might also be formalized in a document as opposed to a mess Note that in the case of external control, where a <> is creating and sending content (e.g., patient demographics information) to a <> , the content module creator / consumer roles will be reversed. -A product implementation using this profile may group afrom this profile with actors from a workflow or transport profile to be functional. +A product implementation using this specification may group afrom this profile with actors from a workflow or transport profile to be functional. The grouping of the content module described in this profile to specific actors is described in more detail in <> or in <>. {empty} + @@ -273,7 +274,7 @@ The grouping of the content module described in this profile to specific actors image::../images/vol1-diagram-sdpi-p-content-actor.svg[] -<> lists the content module(s) defined in the SDPi-P Profile. To claim support with this profile, an actor shall support all required content modules (labeled “R”) and may support optional content modules (labeled “O”). +<> lists the content module(s) defined in the SDPi-P Profile. To claim support with this specification, an actor shall support all required content modules (labeled “R”) and may support optional content modules (labeled “O”). [#vol1_table_sdpi_p_actors_content_modules] @@ -630,7 +631,9 @@ Future versions *_MAY_* include options such as the following (not in priority o [%autowidth] [cols="1"] |=== -a| *SDPi Supplement Version Note*: As indicated in <> above, there are no explicit grouped actors in this profile; however, there are abstract actors (<> and <>), and the <> may implement interfaces to <> or <> to provide bidirectional exchanges with non-<> systems. + +a| *SDPi Supplement Version Note*: As indicated in <> above, there are no explicit grouped actors in this specification; however, there are abstract actors (<> and <>), and the <> may implement interfaces to <> or <> to provide bidirectional exchanges with non-<> systems. + These actor relationships do not represent typical IHE grouped actors, but should be represented in more explicit detail. The best approach for achieving that clarity and specificity will be addressed in a future version after further review and discussion by the supplement development team. @@ -698,7 +701,7 @@ Therefore, though the <> of a <> system must For an example of how <> components (see <>) and <> descriptors and states (see <>) support <> interoperability, a typical conversation is provided in <>. -===== Medical Device Profile for Web Services (MDPWS) +===== Medical Devices Communication Profile for Web Services (MDPWS) To support the <>-based connectivity described above, the *_default transport technology_* for this <> is the XML-based Web Services as specified in <>. Additional "glue" constraints for this <> specification are provided in the companion standard: <>. Specific <> transaction message bindings and examples are provided in <>. @@ -822,7 +825,7 @@ a| *SDPi Supplement Version Note*: This section intentionally left blank for th [#vol1_clause_sdpi_p_use_cases] ==== Use Cases [#vol1_clause_sdpi_p_use_cases_reftext, reftext='SDPi-P Use Cases'] -The SDPi-P profile supports requirements from use cases detailed in <>. The following subsections identify the specific use case requirements that are fulfilled with capabilities provided by this profile. +The SDPi-P profile supports requirements from use cases detailed in <>. The following subsections identify the specific use case requirements that are fulfilled with capabilities provided by this specification. //// #TODO: For each of these, add discussion to HOW and WHERE (with links) that the requirements are met. Include a Requirements usage block? CT DEPENDENCY IN SOMDS_PARTICIPANT MEETS THESE REQUIREMENTS# diff --git a/asciidoc/volume1/tf1-ch-11-sdpi-r.adoc b/asciidoc/volume1/tf1-ch-11-sdpi-r.adoc index 7960ef6..a4d08cc 100644 --- a/asciidoc/volume1/tf1-ch-11-sdpi-r.adoc +++ b/asciidoc/volume1/tf1-ch-11-sdpi-r.adoc @@ -8,9 +8,9 @@ [cols="1"] |=== a| *SDPi Supplement Version 1.0 Note*: This initial version of the <> Profile is built upon the foundational <> Profile but does not provide substantially more capabilities. -This is due to the fact that the primary purpose of this profile, namely communication of medical data to accomplish intended medical purposes, requires the completion and integration of two emerging ISO/IEEE standards: <> and <>. +This is due to the fact that the primary purpose of this specification, namely communication of medical data to accomplish intended medical purposes, requires the completion and integration of two emerging ISO/IEEE standards: <> and <>. When these are published *_in early 2023_*, their requirements will be integrated into this supplement, with their <> added to <> below. -Many of those requirements will be mapped to the actors and transactions and other specifications in this profile. +Many of those requirements will be mapped to the actors and transactions and other specifications in this specification. Additionally, though the <> is defined below and fully specified in <>, the implementation guide for mapping from <> to <> <> remains in development, pushing the specification of the <> to a later version of this supplement. @@ -18,7 +18,7 @@ Additionally, though the <> is defined below and fully [#vol1_clause_sdpi_r_profile_reftext,reftext="SDPi-R Profile"] The SDPi-Reporting ([[acronym_sdpi_r,SDPi-R]] SDPi-R) Profile supports the communication of information from one <> to other <> systems or to other external non-<> systems utilizing a <>. -Most of the actors and transactions in this profile are specialized versions of their counterparts in the <> Profile; however, are differentiated in that they are specifically designed to communicate information with an _intended medical purpose_. +Most of the actors and transactions in this specification are specialized versions of their counterparts in the <> Profile; however, are differentiated in that they are specifically designed to communicate information with an _intended medical purpose_. As a result, additional requirements are added to each actor and transaction to support address these additional safety and effectiveness requirements (See <> below). The profile builds upon the foundational <> capabilities provided by the <>. @@ -33,7 +33,7 @@ These extended capabilities for medical data exchange are achieved by various me [#vol1_clause_sdpi_r_actors_transactions_content_modules] === SDPi-R Actors, Transactions, and Content Modules -This section defines the actors, transactions, and/or content modules in this profile. +This section defines the actors, transactions, and/or content modules in this specification. General definitions of actors are given in the https://profiles.ihe.net/GeneralIntro/ch-A.html[_Technical Frameworks General Introduction Appendix A_]. IHE Transactions can be found in the https://profiles.ihe.net/GeneralIntro/ch-B.html[_Technical Frameworks General Introduction Appendix B_]. Both appendices are located at https://profiles.ihe.net/GeneralIntro/[_profiles.ihe.net/GeneralIntro_]. @@ -133,7 +133,7 @@ This actor is designed to process information with an _intended medical purpose_ Every <> is grouped with an <> to enable <>-based connectivity. This actor inherits all the capabilities of the paired <>. -Note that optional capabilities for this profile, as specified in <>, may also result in additional requirements for the underlying <> and <>. +Note that optional capabilities for this specification, as specified in <>, may also result in additional requirements for the underlying <> and <>. A system that participates in a <> network instance can integrate both <> and <> capabilities. @@ -148,7 +148,7 @@ This actor is designed to process information with an _intended medical purpose_ Every <> is grouped with an <> to enable <>-based connectivity. This actor inherits all the capabilities of the paired <>. -Note that optional capabilities for this profile, as specified in <>, may also result in additional requirements for the underlying <> and <>. +Note that optional capabilities for this specification, as specified in <>, may also result in additional requirements for the underlying <> and <>. A system that participates in a <> network instance can integrate both <> and <> capabilities. @@ -163,7 +163,7 @@ This actor is designed to process information with an _intended medical purpose_ Every <> is grouped with an <> to enable <>-based connectivity. This actor inherits all the capabilities of the paired <>. -Note that optional capabilities for this profile, as specified in <>, may also result in additional requirements for the underlying <> and <>. +Note that optional capabilities for this specification, as specified in <>, may also result in additional requirements for the underlying <> and <>. This actor shall implement the <> capabilities, receiving information provided by <> systems and publishing them as DEV-01 / PCD-01 Transactions to external DEC Device Observation Consumer (DOC) systems. If <> is implemented, then this actor will also support the <> capabilities, receiving DEV-01 / PCD-01 Transactions from external DEC Device Observation Reporter (DOR) systems and making them available to other <> systems. @@ -237,13 +237,13 @@ This section will be more completely detailed in a future version of the supplem [cols="1"] |=== a| *SDPi Supplement Version Note*: An overview of the concepts for this <> will be provided in a future supplement version. -Note that this profile extends the concepts established in the base <>. +Note that this specification extends the concepts established in the base <>. |=== [#vol1_clause_sdpi_r_use_cases_reftext, reftext='SDPi-R Use Cases'] ==== Use Cases -The SDPi-R profile supports requirements from use cases detailed in <>. The following subsections identify the specific use case requirements that are fulfilled with capabilities provided by this profile. +The SDPi-R profile supports requirements from use cases detailed in <>. The following subsections identify the specific use case requirements that are fulfilled with capabilities provided by this specification. ===== <> (<>) diff --git a/asciidoc/volume1/tf1-ch-12-sdpi-a.adoc b/asciidoc/volume1/tf1-ch-12-sdpi-a.adoc index 5bdc36e..bbdb053 100644 --- a/asciidoc/volume1/tf1-ch-12-sdpi-a.adoc +++ b/asciidoc/volume1/tf1-ch-12-sdpi-a.adoc @@ -8,9 +8,9 @@ [cols="1"] |=== a| *SDPi Supplement Version 1.0 Note*: This initial version of the <> Profile is built upon the foundational <> Profile but adds services specialized for the communication and management of medical device alerting. -Additionally, since the primary purpose of this profile is the communication of medical alert information to accomplish intended medical purposes, it will require the completion and integration of the emerging ISO/IEEE 11073 Alert <> standard <>. +Additionally, since the primary purpose of this specification is the communication of medical alert information to accomplish intended medical purposes, it will require the completion and integration of the emerging ISO/IEEE 11073 Alert <> standard <>. When this new standard is published *_in late 2023 or early 2024_*, its requirements will be integrated into this supplement, with its <> added to <>. -Many of those requirements will be mapped to the actors, transactions and other specifications in this profile. +Many of those requirements will be mapped to the actors, transactions and other specifications in this specification. Two of the transactions identified below, DEV-41 and DEV-42 are related to Medical Alert Delegation; however, at this stage there is considerable standards development activity to update the current <> standards, particularly in association with completing the Alert <> standard <>. As a result, the completion of these two transactions has been deferred to a subsequent version of the supplement. @@ -25,7 +25,7 @@ As a result, a "SOMDS Medical Alert FHIR Gateway" is not included as an actor at [#vol1_clause_sdpi_a_profile_reftext,reftext="SDPi-A Profile"] The SDPi-Alerting ([[acronym_sdpi_a,SDPi-A]] SDPi-A) Profile supports the communication of alert information from one <> to other <> systems or to other external non-<> systems utilizing a <>. -The actors and transactions in this profile are specialized versions of their counterparts in the <>; however, are differentiated in that they are specifically designed to communicate alert information to fulfill an _intended medical purpose_, primarily to notify a clinician of a patient or device-related condition that requires their attention. +The actors and transactions in this specification are specialized versions of their counterparts in the <>; however, are differentiated in that they are specifically designed to communicate alert information to fulfill an _intended medical purpose_, primarily to notify a clinician of a patient or device-related condition that requires their attention. Additional services have been provided to specifically support the exchange and management of this medical device alert information, providing a high-level of reliability and performance, commensurate with the potential risk to the patient if they are not promptly addressed. The profile builds upon the foundational <> capabilities provided by the <>. @@ -41,7 +41,7 @@ Additional requirements to addressed safety and effectiveness requirements are p [#vol1_clause_sdpi_a_actors_transactions_content_modules] === SDPi-A Actors, Transactions, and Content Modules -This section defines the actors, transactions, and/or content modules in this profile. +This section defines the actors, transactions, and/or content modules in this specification. General definitions of actors are given in the https://profiles.ihe.net/GeneralIntro/ch-A.html[_Technical Frameworks General Introduction Appendix A_]. IHE Transactions can be found in the https://profiles.ihe.net/GeneralIntro/ch-B.html[_Technical Frameworks General Introduction Appendix B_]. Both appendices are located at https://profiles.ihe.net/GeneralIntro/[_profiles.ihe.net/GeneralIntro_]. @@ -188,7 +188,7 @@ Given this _intended medical purpose_, the actor will fully address applicable r Every <> is grouped with an <> to enable <>-based connectivity. This actor inherits all the capabilities of the paired <>. -Note that optional capabilities for this profile, as specified in <>, may also result in additional requirements for the underlying <> and <>. +Note that optional capabilities for this specification, as specified in <>, may also result in additional requirements for the underlying <> and <>. Note that if a <> is being created, it may incorporate both <> and <> Actors, both receiving and publishing alerts. @@ -206,7 +206,7 @@ Given this _intended medical purpose_, the actor will fully address applicable r Every <> is grouped with an <> to enable <>-based connectivity. This actor inherits all the capabilities of the paired <>. -Note that optional capabilities for this profile, as specified in <>, may also result in additional requirements for the underlying <> and <>. +Note that optional capabilities for this specification, as specified in <>, may also result in additional requirements for the underlying <> and <>. Note that if a <> is being created, it may incorporate both <> and <> Actors, both receiving and publishing alerts. @@ -221,7 +221,7 @@ This a is designed to exchange medical device alert information to external non- Every <> is grouped with an <> to enable <>-based connectivity. This actor inherits all the capabilities of the paired <>. -Note that optional capabilities for this profile, as specified in <>, may also result in additional requirements for the underlying <> and <>. +Note that optional capabilities for this specification, as specified in <>, may also result in additional requirements for the underlying <> and <>. Transactions enabled for this actor are identified in <> above. @@ -316,12 +316,12 @@ This section will be more completely detailed in a future version of the supplem [cols="1"] |=== a| *SDPi Supplement Version Note*: An overview of the concepts for this <> will be provided in a future supplement version. -Note that this profile extends the concepts established in the base <>. +Note that this specification extends the concepts established in the base <>. |=== [#vol1_clause_sdpi_a_use_cases_reftext, reftext='SDPi-A Use Cases'] ==== Use Cases -The SDPi-A profile supports requirements from use cases detailed in <>. The following subsections identify the specific use case requirements that are fulfilled with capabilities provided by this profile. +The SDPi-A profile supports requirements from use cases detailed in <>. The following subsections identify the specific use case requirements that are fulfilled with capabilities provided by this specification. ===== <> (<>) diff --git a/asciidoc/volume1/tf1-ch-13-sdpi-xc.adoc b/asciidoc/volume1/tf1-ch-13-sdpi-xc.adoc index baec440..d12e695 100644 --- a/asciidoc/volume1/tf1-ch-13-sdpi-xc.adoc +++ b/asciidoc/volume1/tf1-ch-13-sdpi-xc.adoc @@ -19,7 +19,7 @@ Specializes services and semantics are provided to enable safe and secure contro [#vol1_clause_sdpi_xc_actors_transactions_content_modules] === SDPi-xC Actors, Transactions, and Content Modules -This section defines the actors, transactions, and/or content modules in this profile. +This section defines the actors, transactions, and/or content modules in this specification. General definitions of actors are given in the https://profiles.ihe.net/GeneralIntro/ch-A.html[_Technical Frameworks General Introduction Appendix A_]. IHE Transactions can be found in the https://profiles.ihe.net/GeneralIntro/ch-B.html[_Technical Frameworks General Introduction Appendix B_]. Both appendices are located at https://profiles.ihe.net/GeneralIntro/[_profiles.ihe.net/GeneralIntro_]. @@ -89,7 +89,7 @@ Given this _intended medical purpose_, the actor will fully address applicable r Every <> is grouped with an <> to enable <>-based connectivity. This actor inherits all the capabilities of the paired <>. -Note that optional capabilities for this profile, as specified in <>, may also result in additional requirements for the underlying <> and <>. +Note that optional capabilities for this specification, as specified in <>, may also result in additional requirements for the underlying <> and <>. [#vol1_clause_sdpi_xc_somds_medical_control_provider] ===== SOMDS Medical Control Provider @@ -105,11 +105,11 @@ Given this _intended medical purpose_, the actor will fully address applicable r Every <> is grouped with an <> to enable <>-based connectivity. This actor inherits all the capabilities of the paired <>. -Note that optional capabilities for this profile, as specified in <>, may also result in additional requirements for the underlying <> and <>. +Note that optional capabilities for this specification, as specified in <>, may also result in additional requirements for the underlying <> and <>. [#vol1_clause_sdpi_xc_actor_options] === SDPi-xC Actor Options -No options are specified for this profile. +No options are specified for this specification. [#vol1_clause_sdpi_xc_required_actor_groupings] === SDPi-xC Required Actor Groupings @@ -136,7 +136,7 @@ This section will be more completely detailed in a future version of the supplem [cols="1"] |=== a| *SDPi Supplement Version Note*: An overview of the concepts for this <> will be provided in a future supplement version. -Note that this profile extends the concepts established in the base <>. +Note that this specification extends the concepts established in the base <>. |=== [#vol1_clause_sdpi_xc_use_cases_reftext, reftext='SDPi-xC Use Cases'] @@ -147,7 +147,7 @@ Note that this profile extends the concepts established in the base <> below for ad ==== Service-oriented Device Point-of-care Interoperability - Plug-and-trust (SPDi-P) Profile Within the framework of the SDPi architecture, the Plug-and-Trust ([[acronym_sdpi_p,SDPi-P]] SDPi-P) profile provides for *_secure plug-and-play connectivity_* between all actors. The primary use context is acute care beds (e.g., ICU, operating room, emergency department), though it may be used in other healthcare contexts. -This profile provides for plug-and-trust (secured) communication for healthcare devices, systems and applications, regardless of whether they are "regulated" medical devices. +This specification provides for plug-and-trust (secured) communication for healthcare devices, systems and applications, regardless of whether they are "regulated" medical devices. That said, the SDPi-P profile fully supports the safety and security requirements specified in the <> Base <> standard. Other SDPi profiles provide direct support for _interoperable medical systems_. Taking this approach allows non-medical technology to interact with other SDPi-enabled systems but without the added burden of having to support the more rigorous requirements associated with technology intended for a medical purpose (e.g., additional risk control mitigation measures). @@ -123,14 +123,14 @@ The baseline profile supports core functionality needed by all participating sys [sdpi_offset=11] ==== Service-oriented Device Point-of-care Interoperability - Reporting (SPDi-R) Profile The SDPi Reporting profile builds on the basic <> capabilities of the <> profile, but adds the requirements to fully support *_medical data reporting_*. -To that end, this profile fully supports the safety and security requirements in the <> metric reporting <> standard. +To that end, this specification fully supports the safety and security requirements in the <> metric reporting <> standard. The profile supports core medical data reporting functionality needed by all participating systems; whereas, profile options are provided for those additional capabilities that may be added. [sdpi_offset=12] ==== Service-oriented Device Point-of-care Interoperability - Alerting (SPDi-A) Profile The SDPi Alerting profile builds on the basic <> capabilities of the <> profile, but adds the requirements to fully support *_medical alerting_*. -To that end, this profile implements the safety and security requirements of the <> alert <> standard (expected to be completed in 2023). +To that end, this specification implements the safety and security requirements of the <> alert <> standard (expected to be completed in 2023). The profile supports core medical alerting functionality needed by all participating systems; whereas, profile options are provided for those additional capabilities that may be added (e.g., alert delegation). @@ -151,7 +151,7 @@ It is *_not part of the capabilities specified for 1.0_* and even basic controls The SDPi External Control profile builds on the basic <> capabilities of the <> profile, but adds support for *_medical device external control capabilities_*. For example, the ability to have a system initiate a blood pressure reading, or set a breath rate, or tritrate an infusion pump's delivery rate. -Given the significant risks associated with allowing device-external control functions in a network of <> systems, this profile implements the safety and security requirements of the <> external control <> standard (in development, anticipated in 2023 or later). +Given the significant risks associated with allowing device-external control functions in a network of <> systems, this specification implements the safety and security requirements of the <> external control <> standard (in development, anticipated in 2023 or later). [sdpi_offset=5] diff --git a/asciidoc/volume1/tf1-ch-b-ref-standards-conformance.adoc b/asciidoc/volume1/tf1-ch-b-ref-standards-conformance.adoc index 2c2f9cb..0393bef 100644 --- a/asciidoc/volume1/tf1-ch-b-ref-standards-conformance.adoc +++ b/asciidoc/volume1/tf1-ch-b-ref-standards-conformance.adoc @@ -61,10 +61,14 @@ Ultimately, the content of this appendix may be rearranged and even relocated; h * [[[ref_oasis_soap_over_udp_v1_1, OASIS SOAP-over-UDP Version 1.1]]] OASIS Standard, SOAP-over-UDP Version 1.1, July 2009, available at http://docs.oasis-open.org/ws-dd/soapoverudp/1.1/os/wsdd-soapoverudp-1.1-spec-os.docx. +* [[[ref_oasis_ws_addressing_2006,W3C Recommendation, WS-Addressing:2006]]] Web Services Addressing 1.0 - Core (WS-Eventing), W3C Recommendation 9 May 2006, available at https://www.w3.org/TR/2006/REC-ws-addr-core-20060509/ + * [[[ref_oasis_ws_discovery_2009,OASIS WS-Discovery:2009]]] OASIS Standard, Web Services Dynamic Discovery (WS-Discovery) Version 1.1, OASIS Standard, 1 July 2009, available at http://docs.oasis-open.org/ws-dd/discovery/1.1/wsdd-discovery-1.1-spec.html * [[[ref_w3c_ws_eventing_2006,W3C Submission, WS-Eventing:2006]]] W3C Web Services Eventing (WS-Eventing), W3C Member Submission 15 March 2006, available at https://www.w3.org/Submission/2006/SUBM-WS-Eventing-20060315/ +* [[[ref_w3c_ws_metadata_exchange_2008,W3C Submission, WS-MetadataExchange:2008]]] Web Services Metadata Exchange 1.1 (WS-MetadataExchange), W3C Member Submission 13 August 2008, available at https://www.w3.org/Submission/2008/SUBM-WS-MetadataExchange-20080813/ + * [[[ref_wc3_ws_transfer_2006,WC3 Standard, WS-Transfer:2006]]] WC3 Web Services Transfer (WS-Transfer), W3C Standard, 27 September 2006, available at https://www.w3.org/Submission/WS-Transfer/ // Appendix B.x diff --git a/asciidoc/volume2/dev-23/tf2-ch-a-mdpws-dev-23.adoc b/asciidoc/volume2/dev-23/tf2-ch-a-mdpws-dev-23.adoc index d6a8241..416725b 100644 --- a/asciidoc/volume2/dev-23/tf2-ch-a-mdpws-dev-23.adoc +++ b/asciidoc/volume2/dev-23/tf2-ch-a-mdpws-dev-23.adoc @@ -14,8 +14,8 @@ The {var_label_dev_23_message_hello} message is encoded by using {var_uri_ws_dis * <> {var_uri_ws_discovery_hello}[Section 4.1 Hello] * <> {var_uri_dpws_discovery}[Section 3 Discovery] -* <> -* <> +* <> mdpws:MedicalDevice +* <> sdc.mds.pkp:1.2.840.10004.20701.1.1 ====== Message Outline diff --git a/asciidoc/volume2/dev-24/tf2-ch-a-mdpws-dev-24.adoc b/asciidoc/volume2/dev-24/tf2-ch-a-mdpws-dev-24.adoc index 19d1b2c..42fe26f 100644 --- a/asciidoc/volume2/dev-24/tf2-ch-a-mdpws-dev-24.adoc +++ b/asciidoc/volume2/dev-24/tf2-ch-a-mdpws-dev-24.adoc @@ -21,8 +21,8 @@ The <> messa * <> {var_uri_ws_discovery_probe}[Section 5.2 Probe] * <> {var_uri_dpws_discovery}[Section 3 Discovery] -* <> -* <> +* <> mdpws:MedicalDevice +* <> sdc.mds.pkp:1.2.840.10004.20701.1.1 ====== Message Outline @@ -38,8 +38,8 @@ include::../dev-a-default-trigger-events.adoc[] ====== Message Semantics `s12:Envelope/s12:Body/wsd:Probe/wsa:Types`:: List that contains at least `mdpws:MedicalDevice` to express seeking <>s that conform to MDPWS. -`s12:Envelope/s12:Body/wsd:Hello/wsd:Scopes/@MatchBy`:: The algorithm used to compare the `s12:Envelope/s12:Body/wsd:Hello/wsd:Scopes` against the <>'s scopes. -`s12:Envelope/s12:Body/wsd:Hello/wsd:Scopes`:: The <> as a list of URIs to probe for. +`s12:Envelope/s12:Body/wsd:Probe/wsd:Scopes/@MatchBy`:: The algorithm used to compare the `s12:Envelope/s12:Body/wsd:Probe/wsd:Scopes` against the <>'s scopes. +`s12:Envelope/s12:Body/wsd:Probe/wsd:Scopes`:: The <> as a list of URIs to probe for. [#vol2_clause_appendix_mdpws_dev_24_recurring_probe] @@ -109,6 +109,8 @@ The <> {var_uri_ws_discovery_probe_match}[Section 5.3 Probe Match] * <> {var_uri_dpws_discovery}[Section 3 Discovery] +* <> mdpws:MedicalDevice +* <> sdc.mds.pkp:1.2.840.10004.20701.1.1 ====== Message Outline @@ -125,10 +127,10 @@ include::../dev-a-default-trigger-events.adoc[] `s12:Envelope/s12:Body/wsd:ProbeMatches`:: In cases where multiple <>s are running on a single machine, `wsd:ProbeMatches` can contain multiple `wsd:ProbeMatch` results. `s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:ProbeMatch/wsa:EndpointReference/wsa:Address`:: The <>'s <> encoded as URI. -`s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:Types`:: List of types that contains at least `dpws:Device` and mdpws:MedicalDevice`, which expresses the <> to conform to DPWS and MDPWS. -`s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:Scopes`:: The <> of the <>, encoded as a list of URIs. -`s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:XAddrs`:: A list of HTTPS addresses under which the <> receives secured messages. -`s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:MetadataVersion`:: A metadata version of the <>. To be ignored as the transmission of the Probe Match message is unsecure. +`s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:ProbeMatch/wsd:Types`:: List of types that contains at least `dpws:Device` and mdpws:MedicalDevice`, which expresses the <> to conform to DPWS and MDPWS. +`s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:ProbeMatch/wsd:Scopes`:: The <> of the <>, encoded as a list of URIs. +`s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:ProbeMatch/wsd:XAddrs`:: A list of HTTPS addresses under which the <> receives secured messages. +`s12:Envelope/s12:Body/wsd:ProbeMatches/wsd:ProbeMatch/wsd:MetadataVersion`:: A metadata version of the <>. To be ignored as the transmission of the Probe Match message is unsecure. :var_expected_actions_ref: <> include::../dev-a-default-expected-actions.adoc[] @@ -175,6 +177,8 @@ The <> {var_uri_ws_discovery_resolve_match}[Section 6.3 Resolve Match] * <> {var_uri_dpws_discovery}[Section 3 Discovery] +* <> mdpws:MedicalDevice +* <> sdc.mds.pkp:1.2.840.10004.20701.1.1 ====== Message Outline @@ -190,10 +194,10 @@ include::../dev-a-default-trigger-events.adoc[] ====== Message Semantics `s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:ResolveMatch/wsa:EndpointReference/wsa:Address`:: The <>'s <> encoded as URI. -`s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:Types`:: List of types that contains at least `dpws:Device` and mdpws:MedicalDevice`, which expresses the <> to conform to DPWS and MDPWS. -`s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:Scopes`:: The <> of the <>, encoded as a list of URIs. -`s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:XAddrs`:: A list of HTTPS addresses under which the <> receives secured messages. -`s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:MetadataVersion`:: A metadata version of the <>. To be ignored as the transmission of the Resolve Match message is unsecure. +`s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:ResolveMatch/wsd:Types`:: List of types that contains at least `dpws:Device` and mdpws:MedicalDevice`, which expresses the <> to conform to DPWS and MDPWS. +`s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:ResolveMatch/wsd:Scopes`:: The <> of the <>, encoded as a list of URIs. +`s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:ResolveMatch/wsd:XAddrs`:: A list of HTTPS addresses under which the <> receives secured messages. +`s12:Envelope/s12:Body/wsd:ResolveMatches/wsd:ResolveMatch/wsd:MetadataVersion`:: A metadata version of the <>. To be ignored as the transmission of the Resolve Match message is unsecure. :var_expected_actions_ref: <> include::../dev-a-default-expected-actions.adoc[] \ No newline at end of file diff --git a/asciidoc/volume2/dev-24/tf2-dev-24.adoc b/asciidoc/volume2/dev-24/tf2-dev-24.adoc index 84a111e..26c05f8 100644 --- a/asciidoc/volume2/dev-24/tf2-dev-24.adoc +++ b/asciidoc/volume2/dev-24/tf2-dev-24.adoc @@ -152,7 +152,7 @@ The {var_label_dev_24_message_resolve_match} message is a uni-cast message that [#vol2_clause_dev_24_message_resolve_match_trigger_events] ====== Trigger Events -The {var_label_dev_24_message_resolve_match} message is sent whenever a <> receives a <> message that contains a <> that matches the <>'s <>. +The {var_label_dev_24_message_resolve_match} message is sent whenever a <> receives a <> message that contains a <> that is equal to the <>'s <>. [#vol2_clause_dev_24_message_resolve_match_semantics] ====== Message Semantics diff --git a/asciidoc/volume2/dev-25/tf2-ch-a-mdpws-dev-25.adoc b/asciidoc/volume2/dev-25/tf2-ch-a-mdpws-dev-25.adoc index 9d5d3bb..1a0b1ea 100644 --- a/asciidoc/volume2/dev-25/tf2-ch-a-mdpws-dev-25.adoc +++ b/asciidoc/volume2/dev-25/tf2-ch-a-mdpws-dev-25.adoc @@ -16,8 +16,6 @@ The GetMetadata message is encoded by using {var_uri_ws_discovery_transfer}[WS-G * <> {var_uri_ws_discovery_transfer}[Section 3.1 Get] * <> {var_uri_dpws}[Section 4] -* <> -* <> ====== Message Outline .GetMetadata message diff --git a/asciidoc/volume2/dev-27/tf2-ch-a-mdpws-dev-27.adoc b/asciidoc/volume2/dev-27/tf2-ch-a-mdpws-dev-27.adoc index b64840a..a44c621 100644 --- a/asciidoc/volume2/dev-27/tf2-ch-a-mdpws-dev-27.adoc +++ b/asciidoc/volume2/dev-27/tf2-ch-a-mdpws-dev-27.adoc @@ -160,7 +160,7 @@ In a SubscribeResponse message, a <> shall provide an _Exp .Notes [%collapsible] ==== -NOTE: The WS-Eventing specification that is normatively included in <> explains the absence of _Expires_ in a SubscribeResponse message (see <>, Section 3.1), which is actually prohibited according to the XML Schema. This profile underlines the need to provide an _Expires_ element in SubscribeResponse messages. +NOTE: The WS-Eventing specification that is normatively included in <> explains the absence of _Expires_ in a SubscribeResponse message (see <>, Section 3.1), which is actually prohibited according to the XML Schema. This specification underlines the need to provide an _Expires_ element in SubscribeResponse messages. ==== **** @@ -252,7 +252,7 @@ In a RenewResponse message, a <> shall provide an _Expires .Notes [%collapsible] ==== -NOTE: The WS-Eventing specification that is normatively included in <> does not explain the absence of _Expires_ in a RenewResponse message (see <>, Section 3.2). This profile prohibits the absence of _Expires_ in RenewResponse messages to avoid subscriptions that run infinitely. +NOTE: The WS-Eventing specification that is normatively included in <> does not explain the absence of _Expires_ in a RenewResponse message (see <>, Section 3.2). This specification prohibits the absence of _Expires_ in RenewResponse messages to avoid subscriptions that run infinitely. ==== **** @@ -344,7 +344,7 @@ include::../dev-a-default-trigger-events.adoc[] ====== Message Semantics -`s12:Envelope/s12:Body/wse:SubscriptionEnd/wse:SubscriptionManager/wsa:Address`:: <> as an {var_uri_xsd_duration}[XML Schema duration], constrained to hours, minutes and seconds (regular expression: `{var_xsd_duration_regex}`). +`s12:Envelope/s12:Body/wse:SubscriptionEnd/wse:SubscriptionManager/wsa:Address`:: URI of the <> that manages the subscription that ended. `s12:Envelope/s12:Body/wse:SubscriptionEnd/wse:Status`:: <> which is encoded in accordance with WS-Eventing to one of {var_status_delivery_failure}, {var_status_shutdown} or {var_status_cancel}. :var_expected_actions_ref: <> diff --git a/asciidoc/volume2/dev-27/tf2-dev-27.adoc b/asciidoc/volume2/dev-27/tf2-dev-27.adoc index 6f2a4ca..a84fcb8 100644 --- a/asciidoc/volume2/dev-27/tf2-dev-27.adoc +++ b/asciidoc/volume2/dev-27/tf2-dev-27.adoc @@ -109,7 +109,7 @@ The {var_label_dev_27_message_subscribe_response} message is sent whenever a <> to renew or cancel the subscription. -[[payload_dev_27_subscribe_response_expiration_time]]Expiration Time:: Actual expiration time, which does not necessarily equals the requested expiration time. +[[payload_dev_27_subscribe_response_expiration_time]]Expiration Time:: Actual expiration time, which does not necessarily equal the requested expiration time. [#vol2_clause_dev_27_message_probe_match_expected_actions] ====== Expected Actions @@ -161,6 +161,7 @@ The {var_label_dev_27_message_renew} message is sent whenever a subscription is [#vol2_clause_dev_27_message_renew_message_semantics] ====== Message Semantics +[[payload_dev_27_subscribe_response_subscription_manager]]Subscription Manager:: Dedicated instance that manages the subscription, i.e. allows for a <> to renew or cancel the subscription. [[payload_dev_27_renew_expiration_time]]Expiration Time:: A new time requested for subscription expiration. [#vol2_clause_dev_27_message_renew_expected_actions] @@ -185,7 +186,7 @@ The {var_label_dev_27_message_renew_response} message is sent whenever a <> {var_uri_dpws_messaging}[Section 2 Messaging] +* <> msg:EpisodicContextReport ====== Message Outline diff --git a/asciidoc/volume2/dev-29/tf2-ch-a-mdpws-dev-29.adoc b/asciidoc/volume2/dev-29/tf2-ch-a-mdpws-dev-29.adoc index f3fae3d..30adaf2 100644 --- a/asciidoc/volume2/dev-29/tf2-ch-a-mdpws-dev-29.adoc +++ b/asciidoc/volume2/dev-29/tf2-ch-a-mdpws-dev-29.adoc @@ -20,6 +20,7 @@ The <> {var_uri_dpws_messaging}[Section 2 Messaging] +* <> msg:EpisodicAlertReport ====== Message Outline @@ -48,6 +49,7 @@ The <> {var_uri_dpws_messaging}[Section 2 Messaging] +* <> msg:EpisodicMetricReport ====== Message Outline @@ -77,6 +79,7 @@ The <> {var_uri_dpws_messaging}[Section 2 Messaging] +* <> msg:EpisodicComponentReport ====== Message Outline @@ -105,6 +108,7 @@ The <> {var_uri_dpws_messaging}[Section 2 Messaging] +* <> msg:WaveformStream ====== Message Outline diff --git a/asciidoc/volume2/dev-30/tf2-ch-a-mdpws-dev-30.adoc b/asciidoc/volume2/dev-30/tf2-ch-a-mdpws-dev-30.adoc index 60faa67..3abeeaf 100644 --- a/asciidoc/volume2/dev-30/tf2-ch-a-mdpws-dev-30.adoc +++ b/asciidoc/volume2/dev-30/tf2-ch-a-mdpws-dev-30.adoc @@ -15,6 +15,7 @@ The <> m ====== Referenced Standards * <> {var_uri_dpws_messaging}[Section 2 Messaging] +* <> msg:GetMdib ====== Message Outline @@ -43,6 +44,7 @@ The <> {var_uri_dpws_messaging}[Section 2 Messaging] +* <> msg:GetMdibResponse ====== Message Outline diff --git a/asciidoc/volume2/dev-37/tf2-dev-37.adoc b/asciidoc/volume2/dev-37/tf2-dev-37.adoc index d04dbd6..290afe2 100644 --- a/asciidoc/volume2/dev-37/tf2-dev-37.adoc +++ b/asciidoc/volume2/dev-37/tf2-dev-37.adoc @@ -37,6 +37,10 @@ include::tf2-dev-37-summary.adoc[] include::../../plantuml/vol2-figure-dev-37-sequence.puml[] .... +:var_duplicated_transaction: {var_transaction_id} +:var_dupicates_list: DEV-30 (<>) +include::../dev-duplicate-disclaimer.adoc[] + [#vol2_clause_dev_37_retrieve_medical_data_ses] include::../dev-x-default-ses-secured-mode.adoc[] diff --git a/asciidoc/volume2/gateways/tf2-ch-b-gateway-dec.adoc b/asciidoc/volume2/gateways/tf2-ch-b-gateway-dec.adoc index 3f4207f..b7906ac 100644 --- a/asciidoc/volume2/gateways/tf2-ch-b-gateway-dec.adoc +++ b/asciidoc/volume2/gateways/tf2-ch-b-gateway-dec.adoc @@ -277,7 +277,7 @@ NOTE: For further information, please refer to the <>. [%autowidth] [cols="1"] |=== -a| *SDPi Supplement Version Note*: For SDPi 1.0 DEV Internal Review Version, this profile section needs to be updated in order to be compliant with the <>. The following issues need more investigations and discussions: +a| *SDPi Supplement Version Note*: For SDPi 1.0 DEV Internal Review Version, this specification section needs to be updated in order to be compliant with the <>. The following issues need more investigations and discussions: * Mapping of the <>-provided device types to SNOMED codes * Licensing requirements for utilizing SNOMED codes diff --git a/asciidoc/volume2/gateways/tf2-ch-b-gateway-pid-mapping.adoc b/asciidoc/volume2/gateways/tf2-ch-b-gateway-pid-mapping.adoc index d660549..b309100 100644 --- a/asciidoc/volume2/gateways/tf2-ch-b-gateway-pid-mapping.adoc +++ b/asciidoc/volume2/gateways/tf2-ch-b-gateway-pid-mapping.adoc @@ -188,7 +188,7 @@ NOTE: <> defines the mapping of the SDC patient's date of |=== |HL7 Field |HL7 Component Name |SDC Attribute/Element |Comments -|PID-6/DTM-1 +|PID-7/DTM-1 |Date/Time |pm:PatientContextState++++++/pm:CoreData++++++/pm:DateOfBirth |Note that the HL7 date & time format differs from the xsd date/time formats and requires a mapping accordingly (see also <>). @@ -336,7 +336,7 @@ NOTE: <> defines the mapping of the SDC patient's race in |Alternate Identifier |pm:PatientContextState++++++/pm:CoreData++++++/pm:Race++++++/pm:Translation /@Code -|Note that only the first entry of the *pm:Translation* element list is to be mapped. +|Note that if *pm:Race/@Code* contains a private code, the corresponding translation is to be mapped. Otherwise the first entry of the *pm:Translation* element list is to be mapped. |PID-10/CWE-6 |Name of Alternate Coding System diff --git a/asciidoc/volume2/gateways/tf2-ch-b-gateway-private-mdc-mapping.adoc b/asciidoc/volume2/gateways/tf2-ch-b-gateway-private-mdc-mapping.adoc index 29e3783..9684bda 100644 --- a/asciidoc/volume2/gateways/tf2-ch-b-gateway-private-mdc-mapping.adoc +++ b/asciidoc/volume2/gateways/tf2-ch-b-gateway-private-mdc-mapping.adoc @@ -8,6 +8,18 @@ Coded elements in SDC using *MDC* private codes require also to contain a *pm:Tr Please refer to <> *TR1358* for further information. +.R8119 +[sdpi_requirement#r8119,sdpi_req_level=shall,sdpi_max_occurrence=2] +**** +For each private code a <> shall provide exactly one *pm:Translation* where *pm:Translation/@Code* is identical with *pm:CodedValue/@Code*. + +.Notes +[%collapsible] +==== +NOTE: Multiple translations are allowed, but exactly one translation is specified for a private code. +==== +**** + The following example uses the SDC *pm:Type* to demonstrate the mapping of private MDC codes. [#ref_tbl_private_code_mapping] diff --git a/asciidoc/volume2/service-mapping/tf2-ch-a-mdpws-service-mapping.adoc b/asciidoc/volume2/service-mapping/tf2-ch-a-mdpws-service-mapping.adoc index 12826db..55cfa42 100644 --- a/asciidoc/volume2/service-mapping/tf2-ch-a-mdpws-service-mapping.adoc +++ b/asciidoc/volume2/service-mapping/tf2-ch-a-mdpws-service-mapping.adoc @@ -11,9 +11,10 @@ A <> shall at least provide the port types as specified in .Notes [%collapsible] ==== +NOTE: According to <>, the GET SERVICE is the only mandatory service to be implemented. This specification extends the list of mandatory services to increase interoperability between <>s. NOTE: All port types of SDC are {uri_sdc_wsdl}[available for download]. -NOTE: Other port types are currently out of scope of this profile and may be added in a future revision. +NOTE: Other port types are currently out of scope of this specification and may be added in a future revision. ==== **** diff --git a/asciidoc/volume2/tf2-ch-a-mdpws.adoc b/asciidoc/volume2/tf2-ch-a-mdpws.adoc index a22a247..b1347fe 100644 --- a/asciidoc/volume2/tf2-ch-a-mdpws.adoc +++ b/asciidoc/volume2/tf2-ch-a-mdpws.adoc @@ -63,11 +63,11 @@ A <> shall use HTTPS with mutual authe ==== NOTE: Each section that specifies a transaction indicates security requirements in the __Security Requirements & Considerations__ subsection beneath the __Safety, Effectiveness, Security Considerations and Requirements__ of each transaction. -NOTE: Essentially, this profile asks for secured transmission of data except when ad-hoc discovery is performed. +NOTE: Essentially, this specification asks for secured transmission of data except when ad-hoc discovery is performed. ==== **** -CAUTION: This appendix does not specify any processes towards certificate governance. Certificate governance is a separate topic that needs to be addressed in future revisions of this profile. +CAUTION: This appendix does not specify any processes towards certificate governance. Certificate governance is a separate topic that needs to be addressed in future revisions of this specification. === Amendments and Corrigenda diff --git a/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.7-extension-coded-attribute.adoc b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.7-extension-coded-attribute.adoc index 27907f8..94eb0c0 100644 --- a/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.7-extension-coded-attribute.adoc +++ b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.7-extension-coded-attribute.adoc @@ -17,7 +17,7 @@ For example, BICEPS only supports the following MDS meta information below the ` Some statically configured meta information like firmware versions or software versions can be added by means of production specification elements. However, attributes like equipment labels do not exist and cannot be conveyed by using production specifications. -This profile specifies the <> extension that allows for a <> to provide attributes from the first partition of the IEEE 11073-10101 nomenclature for which there is no information item specified in the BICEPS participant model. +This specification specifies the <> extension that allows for a <> to provide attributes from the first partition of the IEEE 11073-10101 nomenclature for which there is no information item specified in the BICEPS participant model. [sdpi_level=+1] ====== Model diff --git a/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.8-extension-gender.adoc b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.8-extension-gender.adoc index ce7dbf6..75ee577 100644 --- a/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.8-extension-gender.adoc +++ b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.8-extension-gender.adoc @@ -18,7 +18,7 @@ See the related note on sex and gender in the gateway mappings specified in <> to provide the administrative gender in addition to the already existing biological sex (as specified in pm:PatientDemographicsCoreData/pm:Sex). +As nowadays the distinction between biological sex and administrative gender is an essential feature of patient demographics and required by protocols such as HL7 FHIR, this specification adds an extension to the BICEPS participant model in order to allow for a <> to provide the administrative gender in addition to the already existing biological sex (as specified in pm:PatientDemographicsCoreData/pm:Sex). The extension is based on the terminology of <>: https://hl7.org/fhir/valueset-administrative-gender.html. diff --git a/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.9-extension-equipment-identifier.adoc b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.9-extension-equipment-identifier.adoc new file mode 100644 index 0000000..16be091 --- /dev/null +++ b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-8.3.2.9-extension-equipment-identifier.adoc @@ -0,0 +1,58 @@ +[#vol3_clause_equipment_identifier] +====== Equipment Identifier + +BICEPS does not provide means to convey any metadata that allows for identification of <>s or <>s inside an <> other than by UDIs. +UDIs however are not unique when used in different jurisdictions or for multiple instances of a <>. + +This extension fulfills the need to identify <>s and <>s across re-initializations of a <> by means of stable and globally unique URIs that are constant across re-initializations of the <>. + +[sdpi_level=+1] +====== Model + +The Equipment Identifier XML Schema is available in <>. <> shows an exemplary XML instance of a <> including the Equipment Identifier extension in the descriptive part of the MDIB. + +.<> and <> with Equipment Identifier extension +[#vol3_example_extension_equipment_identifier] +==== +[source,xml] +---- +include::../../listings/vol3-clause-biceps-content-example-equipment-identifier.xml[] +---- +==== + +[sdpi_level=+1] +====== Requirements + +.R0014 +[sdpi_requirement#r0014,sdpi_req_level=shall] +**** +For the `sdpi:EquipmentIdentifier` extension, a <> shall use a stable, globally unique URI that is constant across re-initializations of the <> and uniquely refers to a physical or virtual entity. +**** + +.R0015 +[sdpi_requirement#r0015,sdpi_req_level=should] +**** +For the `sdpi:EquipmentIdentifier` extension, a <> should use URI-encoded UUIDs or OIDs. +**** + +.R0016 +[sdpi_requirement#r0016,sdpi_req_level=shall] +**** +To test if two equipment identifiers are equal, a <> shall perform case-sensitive string comparison. +**** + +.R0017 +[sdpi_requirement#r0017,sdpi_req_level=shall] +**** +A <> shall provide the `sdpi:EquipmentIdentifier` extension for each pm:MdsDescriptor in its <>. + +NOTE: This requirement allows a <> to rely on the `sdpi:EquipmentIdentifier` to be present in each <> at any time. + +NOTE: If a <> provides a globally unique UDI, it can generate a the `sdpi:EquipmentIdentifier` UUID from that UDI. Alternatively, UUIDs can also be generated from UUIDv5 having a manufacturer specific namespace and the serial number as a name. +**** + +.R0018 +[sdpi_requirement#r0018,sdpi_req_level=should] +**** +For each <> <> of a <>, the <> should provide the `sdpi:EquipmentIdentifier` extension for the pm:VmdDescriptor in its <>. +**** diff --git a/asciidoc/volume3/biceps-extension-provisions/tf2-ch-a-xml-schemas-coded-attribute.adoc b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-a-xml-schemas-coded-attribute.adoc similarity index 100% rename from asciidoc/volume3/biceps-extension-provisions/tf2-ch-a-xml-schemas-coded-attribute.adoc rename to asciidoc/volume3/biceps-extension-provisions/tf3-ch-a-xml-schemas-coded-attribute.adoc diff --git a/asciidoc/volume3/biceps-extension-provisions/tf3-ch-a-xml-schemas-equipment-identifier.adoc b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-a-xml-schemas-equipment-identifier.adoc new file mode 100644 index 0000000..2a92817 --- /dev/null +++ b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-a-xml-schemas-equipment-identifier.adoc @@ -0,0 +1,7 @@ +[#vol3_appendix_a_xml_schemas_equipment_identifier] +=== Equipment Identifier XML Schema + +[source,xml] +---- +include::../../../sources/extension-models/equipment-identifier/EquipmentIdentifier.xsd[] +---- diff --git a/asciidoc/volume3/biceps-extension-provisions/tf2-ch-a-xml-schemas-gender.adoc b/asciidoc/volume3/biceps-extension-provisions/tf3-ch-a-xml-schemas-gender.adoc similarity index 100% rename from asciidoc/volume3/biceps-extension-provisions/tf2-ch-a-xml-schemas-gender.adoc rename to asciidoc/volume3/biceps-extension-provisions/tf3-ch-a-xml-schemas-gender.adoc diff --git a/asciidoc/volume3/tf3-ch-8.3.2-biceps-content.adoc b/asciidoc/volume3/tf3-ch-8.3.2-biceps-content.adoc index 227f757..e7c3cb0 100644 --- a/asciidoc/volume3/tf3-ch-8.3.2-biceps-content.adoc +++ b/asciidoc/volume3/tf3-ch-8.3.2-biceps-content.adoc @@ -207,7 +207,7 @@ There are two kinds of extensions, those the <> should be careful defining extensions with `@ext:MustUnderstand = true`, as this potentially reduces interoperability. -There are standardized extensions, like those that are specified in the PKP standards or this profile, which can be considered common knowledge and therefore do not break interoperability between different manufacturers. +There are standardized extensions, like those that are specified in the PKP standards or this specification, which can be considered common knowledge and therefore do not break interoperability between different manufacturers. include::biceps-content-module/tf3-ch-8.3.2.7-applicable-productions-specification-type-codes.adoc[] @@ -215,7 +215,6 @@ include::biceps-content-module/tf3-ch-8.3.2.7-applicable-attribute-type-codes.ad include::biceps-extension-provisions/tf3-ch-8.3.2.7-extension-coded-attribute.adoc[] -// 8.3.2.8 -===== BICEPS Sex and Gender Extensions -// This content will also be referenced from TF-2 Appendix B DEC Gateway include::biceps-extension-provisions/tf3-ch-8.3.2.8-extension-gender.adoc[] + +include::biceps-extension-provisions/tf3-ch-8.3.2.9-extension-equipment-identifier.adoc[] \ No newline at end of file diff --git a/asciidoc/volume3/tf3-ch-8.7.3-physiologic-monitor.adoc b/asciidoc/volume3/tf3-ch-8.7.3-physiologic-monitor.adoc index 45f51af..682be90 100644 --- a/asciidoc/volume3/tf3-ch-8.7.3-physiologic-monitor.adoc +++ b/asciidoc/volume3/tf3-ch-8.7.3-physiologic-monitor.adoc @@ -30,6 +30,6 @@ The following XML snippet profiles BICEPS semantics in line with the containment ==== [source#vol3_clause_sdc_biceps_content_module_physio_monitor_snippet1,xml] ---- -include::../../listings/vol3_clause_sdc_biceps_content_module_physio_monitor_snippet1.xml[] +include::../../listings/vol3-clause-sdc-biceps-content-module-physio-monitor-snippet1.xml[] ---- ==== diff --git a/asciidoc/volume3/tf3-ch-a-xml-schemas.adoc b/asciidoc/volume3/tf3-ch-a-xml-schemas.adoc index 3336715..80dd0bb 100644 --- a/asciidoc/volume3/tf3-ch-a-xml-schemas.adoc +++ b/asciidoc/volume3/tf3-ch-a-xml-schemas.adoc @@ -3,6 +3,8 @@ XML Schemas in this appendix include the BICEPS message, participant and extension model files as provided as an additional resource at https://standards.ieee.org/ieee/11073-10207/6032/. -include::biceps-extension-provisions/tf2-ch-a-xml-schemas-coded-attribute.adoc[] +include::biceps-extension-provisions/tf3-ch-a-xml-schemas-coded-attribute.adoc[] -include::biceps-extension-provisions/tf2-ch-a-xml-schemas-gender.adoc[] \ No newline at end of file +include::biceps-extension-provisions/tf3-ch-a-xml-schemas-gender.adoc[] + +include::biceps-extension-provisions/tf3-ch-a-xml-schemas-equipment-identifier.adoc[] \ No newline at end of file diff --git a/sources/extension-models/SdpiExtensions.xsd b/sources/extension-models/SdpiExtensions.xsd new file mode 100644 index 0000000..ca7bbb0 --- /dev/null +++ b/sources/extension-models/SdpiExtensions.xsd @@ -0,0 +1,6 @@ + + + + + + diff --git a/sources/extension-models/coded-attribute/CodedAttribute.xsd b/sources/extension-models/coded-attribute/CodedAttribute.xsd index 852307b..6d339f6 100644 --- a/sources/extension-models/coded-attribute/CodedAttribute.xsd +++ b/sources/extension-models/coded-attribute/CodedAttribute.xsd @@ -1,5 +1,13 @@ - + diff --git a/sources/extension-models/equipment-identifier/EquipmentIdentifier.xsd b/sources/extension-models/equipment-identifier/EquipmentIdentifier.xsd new file mode 100644 index 0000000..7f6ab99 --- /dev/null +++ b/sources/extension-models/equipment-identifier/EquipmentIdentifier.xsd @@ -0,0 +1,39 @@ + + + + + + + + + An extension to identify equipment provided by the MDIB of a SOMDS Provider. + +This extension can be attached to the pm:MdsDescriptor/ext:Extension or pm:VmdDescriptor/ext:Extension element. + + + + + + + + + + + + + Type defining the EquipmentIdentifier. + +The equipment identifier is an URI. It is stable, globally unique and constant across re-initializations of the SOMDS Provider. + + + + + + diff --git a/sources/extension-models/gender/Gender.xsd b/sources/extension-models/gender/Gender.xsd index 4579061..839c300 100644 --- a/sources/extension-models/gender/Gender.xsd +++ b/sources/extension-models/gender/Gender.xsd @@ -1,7 +1,13 @@ - + - diff --git a/sources/font-awesome-4.7.0.zip b/sources/font-awesome-4.7.0.zip new file mode 100644 index 0000000..b6bdb4b Binary files /dev/null and b/sources/font-awesome-4.7.0.zip differ diff --git a/sources/google-webfonts-helper.url b/sources/google-webfonts-helper.url new file mode 100644 index 0000000..1a1eabb --- /dev/null +++ b/sources/google-webfonts-helper.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://gwfh.mranftl.com/fonts diff --git a/sources/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip b/sources/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip new file mode 100644 index 0000000..239ee5f Binary files /dev/null and b/sources/noto-sans-mono-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip differ diff --git a/sources/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip b/sources/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip new file mode 100644 index 0000000..9fce6f6 Binary files /dev/null and b/sources/noto-serif-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip differ diff --git a/sources/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip b/sources/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip new file mode 100644 index 0000000..e89c229 Binary files /dev/null and b/sources/open-sans-v34-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext.zip differ