qpp-style 2.1.13 → 2.2.0-sm.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/.babelrc +10 -0
  2. package/.editorconfig +22 -0
  3. package/.eslintignore +5 -0
  4. package/.eslintrc.js +32 -0
  5. package/.husky/pre-commit +5 -0
  6. package/.prettierrc +1 -0
  7. package/README.md +50 -55
  8. package/components/Accordion/index.jsx +97 -0
  9. package/components/Alert/index.js +53 -0
  10. package/components/Breadcrumb/Breadcrumb.md +28 -0
  11. package/components/Breadcrumb/index.js +83 -0
  12. package/components/Button/index.js +90 -0
  13. package/components/Details/DetailsIcons.js +50 -0
  14. package/components/Details/index.js +53 -0
  15. package/components/Dropdown/index.js +85 -0
  16. package/components/DropdownButton/Menu.js +25 -0
  17. package/components/DropdownButton/MenuButton.js +41 -0
  18. package/components/DropdownButton/MenuItem.js +25 -0
  19. package/components/DropdownButton/MenuItemLink.js +27 -0
  20. package/components/Error/Collapsible.jsx +88 -0
  21. package/components/Error/ErrorUI.jsx +31 -0
  22. package/components/Error/error.js +26 -0
  23. package/components/FlashNotification/FlashNotificationUI.jsx +91 -0
  24. package/components/FlashNotification/index.js +30 -0
  25. package/components/Footer/FooterUI.jsx +210 -0
  26. package/components/Footer/SocialLinks.jsx +60 -0
  27. package/components/Footer/Subscribe.jsx +34 -0
  28. package/components/Footer/footer.js +20 -0
  29. package/components/GovBanner/index.js +117 -0
  30. package/components/Header/Header.md +111 -0
  31. package/components/Header/HeaderAccountMenu.jsx +94 -0
  32. package/components/Header/HeaderCancel.jsx +16 -0
  33. package/components/Header/HeaderContainer.jsx +76 -0
  34. package/components/Header/HeaderLogo.jsx +60 -0
  35. package/components/Header/HeaderMenuButton.js +50 -0
  36. package/components/Header/HeaderMenuItem.jsx +239 -0
  37. package/components/Header/HeaderMenuLink.js +56 -0
  38. package/components/Header/HeaderMenuSignOutButton.js +62 -0
  39. package/components/Header/HeaderMobileButton.js +37 -0
  40. package/components/Header/HeaderUI.jsx +168 -0
  41. package/components/Header/HelpIcon.jsx +32 -0
  42. package/components/Header/ImpersonatorBanner.jsx +81 -0
  43. package/components/Header/NavigationButtonIcon.jsx +27 -0
  44. package/components/Header/default-content.json +280 -0
  45. package/components/Header/header.js +40 -0
  46. package/components/Header/hooks.js +66 -0
  47. package/components/Header/utag-helpers.js +9 -0
  48. package/components/Infotip/Infotip.jsx +71 -0
  49. package/components/Infotip/InfotipContent.jsx +46 -0
  50. package/components/Infotip/InfotipIcon.jsx +41 -0
  51. package/components/Infotip/index.js +3 -0
  52. package/components/Link/index.js +61 -0
  53. package/components/Modal/LegacyModal.jsx +72 -0
  54. package/components/Modal/Modal.jsx +140 -0
  55. package/components/Modal/index.jsx +22 -0
  56. package/components/NotificationBanner/CollapsedView.js +39 -0
  57. package/components/NotificationBanner/ExpandedView.js +45 -0
  58. package/components/NotificationBanner/index.js +221 -0
  59. package/components/SanitizedContent/index.jsx +223 -0
  60. package/components/Search/index.js +98 -0
  61. package/components/Session/Session.jsx +89 -0
  62. package/components/Session/SessionDialogWrapped.jsx +12 -0
  63. package/components/Session/index.jsx +3 -0
  64. package/components/SideNav/AnimationGroup/AnimationGroup.jsx +27 -0
  65. package/components/SideNav/Content/LevelOneContent.jsx +49 -0
  66. package/components/SideNav/Content/SelectRole/index.js +78 -0
  67. package/components/SideNav/Content/SelectRole/utils.js +149 -0
  68. package/components/SideNav/Content/index.js +3 -0
  69. package/components/SideNav/Details/IndividualDetails.jsx +18 -0
  70. package/components/SideNav/Details/PracticeDetails.jsx +51 -0
  71. package/components/SideNav/Details/index.js +4 -0
  72. package/components/SideNav/Links/CmsSwitchLink.jsx +41 -0
  73. package/components/SideNav/Links/NavItemInline.jsx +54 -0
  74. package/components/SideNav/Links/NavLinkContainer.jsx +38 -0
  75. package/components/SideNav/Links/NavLinkDrawer.jsx +295 -0
  76. package/components/SideNav/Links/NavLinkInline.jsx +110 -0
  77. package/components/SideNav/Links/NavLinkToggle.jsx +34 -0
  78. package/components/SideNav/Links/index.js +13 -0
  79. package/components/SideNav/SideNav.md +50 -0
  80. package/components/SideNav/UI/SideNavUI.jsx +323 -0
  81. package/components/SideNav/UI/default-markup.js +4 -0
  82. package/components/SideNav/UI/index.js +3 -0
  83. package/components/SideNav/UI/utils.js +0 -0
  84. package/components/SideNav/helpers.js +399 -0
  85. package/components/SideNav/index.js +29 -0
  86. package/components/Tabs/TabPanel.js +5 -0
  87. package/components/Tabs/Tabs.js +73 -0
  88. package/components/TextInput/index.js +137 -0
  89. package/components/hooks/useGetConfig.js +75 -0
  90. package/components/index.js +122 -0
  91. package/coverage/clover.xml +1324 -0
  92. package/coverage/coverage-final.json +71 -0
  93. package/coverage/lcov-report/Tooltip.jsx.html +232 -0
  94. package/coverage/lcov-report/base.css +224 -0
  95. package/coverage/lcov-report/block-navigation.js +87 -0
  96. package/coverage/lcov-report/components/Accordion/index.html +116 -0
  97. package/coverage/lcov-report/components/Accordion/index.jsx.html +364 -0
  98. package/coverage/lcov-report/components/Button/index.html +116 -0
  99. package/coverage/lcov-report/components/Button/index.js.html +355 -0
  100. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +349 -0
  101. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +178 -0
  102. package/coverage/lcov-report/components/Error/index.html +131 -0
  103. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +706 -0
  104. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +265 -0
  105. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +187 -0
  106. package/coverage/lcov-report/components/Footer/index.html +146 -0
  107. package/coverage/lcov-report/components/GovBanner/index.html +116 -0
  108. package/coverage/lcov-report/components/GovBanner/index.js.html +436 -0
  109. package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +367 -0
  110. package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +133 -0
  111. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +307 -0
  112. package/coverage/lcov-report/components/Header/HeaderLogo.jsx.html +211 -0
  113. package/coverage/lcov-report/components/Header/HeaderMenuButton.js.html +235 -0
  114. package/coverage/lcov-report/components/Header/HeaderMenuItem.jsx.html +802 -0
  115. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
  116. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  117. package/coverage/lcov-report/components/Header/HeaderMobileButton.js.html +196 -0
  118. package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +586 -0
  119. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  120. package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +328 -0
  121. package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +166 -0
  122. package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
  123. package/coverage/lcov-report/components/Header/index.html +326 -0
  124. package/coverage/lcov-report/components/Header/utag-helpers.js.html +112 -0
  125. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +310 -0
  126. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +208 -0
  127. package/coverage/lcov-report/components/Infotip/index.html +146 -0
  128. package/coverage/lcov-report/components/Infotip/index.js.html +94 -0
  129. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +301 -0
  130. package/coverage/lcov-report/components/Modal/Modal.jsx.html +505 -0
  131. package/coverage/lcov-report/components/Modal/index.html +146 -0
  132. package/coverage/lcov-report/components/Modal/index.jsx.html +151 -0
  133. package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +202 -0
  134. package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +220 -0
  135. package/coverage/lcov-report/components/NotificationBanner/index.html +146 -0
  136. package/coverage/lcov-report/components/NotificationBanner/index.js.html +748 -0
  137. package/coverage/lcov-report/components/SanitizedContent/index.html +116 -0
  138. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +685 -0
  139. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +868 -0
  140. package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +116 -0
  141. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  142. package/coverage/lcov-report/components/SideNav/helpers.js.html +1138 -0
  143. package/coverage/lcov-report/components/SideNav/index.html +116 -0
  144. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +349 -0
  145. package/coverage/lcov-report/components/Tooltip/index.html +146 -0
  146. package/coverage/lcov-report/components/Tooltip/index.js.html +94 -0
  147. package/coverage/lcov-report/components/Tooltip/position.js.html +289 -0
  148. package/coverage/lcov-report/components/hooks/index.html +116 -0
  149. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +310 -0
  150. package/coverage/lcov-report/components/index.html +116 -0
  151. package/coverage/lcov-report/favicon.png +0 -0
  152. package/coverage/lcov-report/index.html +476 -0
  153. package/coverage/lcov-report/index.js.html +94 -0
  154. package/coverage/lcov-report/lib/Chevron.jsx.html +181 -0
  155. package/coverage/lcov-report/lib/SvgComponents.jsx.html +2200 -0
  156. package/coverage/lcov-report/lib/index.html +131 -0
  157. package/coverage/lcov-report/position.js.html +289 -0
  158. package/coverage/lcov-report/prettify.css +1 -0
  159. package/coverage/lcov-report/prettify.js +2 -0
  160. package/coverage/lcov-report/react/components/Accordion/index.html +116 -0
  161. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +376 -0
  162. package/coverage/lcov-report/react/components/Button/index.html +116 -0
  163. package/coverage/lcov-report/react/components/Button/index.js.html +355 -0
  164. package/coverage/lcov-report/react/components/Dropdown/index.html +116 -0
  165. package/coverage/lcov-report/react/components/Dropdown/index.js.html +340 -0
  166. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +349 -0
  167. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +178 -0
  168. package/coverage/lcov-report/react/components/Error/error.js.html +163 -0
  169. package/coverage/lcov-report/react/components/Error/index.html +146 -0
  170. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +718 -0
  171. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +265 -0
  172. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +187 -0
  173. package/coverage/lcov-report/react/components/Footer/footer.js.html +145 -0
  174. package/coverage/lcov-report/react/components/Footer/index.html +161 -0
  175. package/coverage/lcov-report/react/components/GovBanner/index.html +116 -0
  176. package/coverage/lcov-report/react/components/GovBanner/index.js.html +436 -0
  177. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +367 -0
  178. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +133 -0
  179. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +307 -0
  180. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +211 -0
  181. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +235 -0
  182. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +802 -0
  183. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +253 -0
  184. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  185. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +196 -0
  186. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +586 -0
  187. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +181 -0
  188. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +334 -0
  189. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +166 -0
  190. package/coverage/lcov-report/react/components/Header/header.js.html +205 -0
  191. package/coverage/lcov-report/react/components/Header/hooks.js.html +283 -0
  192. package/coverage/lcov-report/react/components/Header/index.html +341 -0
  193. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +112 -0
  194. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +298 -0
  195. package/coverage/lcov-report/react/components/Infotip/InfotipContent.jsx.html +223 -0
  196. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +208 -0
  197. package/coverage/lcov-report/react/components/Infotip/index.html +161 -0
  198. package/coverage/lcov-report/react/components/Infotip/index.js.html +94 -0
  199. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +301 -0
  200. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +505 -0
  201. package/coverage/lcov-report/react/components/Modal/index.html +146 -0
  202. package/coverage/lcov-report/react/components/Modal/index.jsx.html +151 -0
  203. package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +202 -0
  204. package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +220 -0
  205. package/coverage/lcov-report/react/components/NotificationBanner/index.html +146 -0
  206. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +748 -0
  207. package/coverage/lcov-report/react/components/SanitizedContent/index.html +116 -0
  208. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +754 -0
  209. package/coverage/lcov-report/react/components/SessionDialog/index.html +116 -0
  210. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +163 -0
  211. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +868 -0
  212. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +166 -0
  213. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +116 -0
  214. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +889 -0
  215. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +131 -0
  216. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +94 -0
  217. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +199 -0
  218. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +733 -0
  219. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +131 -0
  220. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +214 -0
  221. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +139 -0
  222. package/coverage/lcov-report/react/components/SideNav/Content/index.html +131 -0
  223. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +94 -0
  224. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +139 -0
  225. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +220 -0
  226. package/coverage/lcov-report/react/components/SideNav/Details/index.html +146 -0
  227. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +97 -0
  228. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +208 -0
  229. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +247 -0
  230. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +199 -0
  231. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +970 -0
  232. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +415 -0
  233. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +187 -0
  234. package/coverage/lcov-report/react/components/SideNav/Links/index.html +206 -0
  235. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +124 -0
  236. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +1060 -0
  237. package/coverage/lcov-report/react/components/SideNav/UI/default-markup.js.html +97 -0
  238. package/coverage/lcov-report/react/components/SideNav/UI/index.html +146 -0
  239. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +94 -0
  240. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +361 -0
  241. package/coverage/lcov-report/react/components/SideNav/index.html +131 -0
  242. package/coverage/lcov-report/react/components/SideNav/index.js.html +238 -0
  243. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +232 -0
  244. package/coverage/lcov-report/react/components/Tooltip/index.html +146 -0
  245. package/coverage/lcov-report/react/components/Tooltip/index.js.html +94 -0
  246. package/coverage/lcov-report/react/components/Tooltip/position.js.html +289 -0
  247. package/coverage/lcov-report/react/components/hooks/index.html +116 -0
  248. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +310 -0
  249. package/coverage/lcov-report/react/components/index.html +116 -0
  250. package/coverage/lcov-report/react/index.html +116 -0
  251. package/coverage/lcov-report/react/index.js.html +178 -0
  252. package/coverage/lcov-report/react/lib/Chevron.jsx.html +181 -0
  253. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +2200 -0
  254. package/coverage/lcov-report/react/lib/index.html +131 -0
  255. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +460 -0
  256. package/coverage/lcov-report/react/session/index.html +161 -0
  257. package/coverage/lcov-report/react/session/index.js.html +100 -0
  258. package/coverage/lcov-report/react/session/logout.js.html +283 -0
  259. package/coverage/lcov-report/react/session/refresh.js.html +232 -0
  260. package/coverage/lcov-report/react/session/ttl.js.html +196 -0
  261. package/coverage/lcov-report/session/index.html +161 -0
  262. package/coverage/lcov-report/session/index.js.html +100 -0
  263. package/coverage/lcov-report/session/logout.js.html +307 -0
  264. package/coverage/lcov-report/session/refresh.js.html +232 -0
  265. package/coverage/lcov-report/session/ttl.js.html +196 -0
  266. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  267. package/coverage/lcov-report/sorter.js +196 -0
  268. package/coverage/lcov.info +2883 -0
  269. package/dist/browser.js +3 -53
  270. package/dist/browser.js.LICENSE.txt +31 -0
  271. package/dist/browser.js.map +1 -0
  272. package/dist/index.js +3 -53
  273. package/dist/index.js.LICENSE.txt +31 -0
  274. package/dist/index.js.map +1 -0
  275. package/dist/react/index.js +3 -0
  276. package/dist/react/index.js.LICENSE.txt +54 -0
  277. package/dist/react/index.js.map +1 -0
  278. package/fonts/PublicSans-Black.ttf +0 -0
  279. package/fonts/PublicSans-BlackItalic.ttf +0 -0
  280. package/fonts/PublicSans-Bold.ttf +0 -0
  281. package/fonts/PublicSans-BoldItalic.ttf +0 -0
  282. package/fonts/PublicSans-ExtraBold.ttf +0 -0
  283. package/fonts/PublicSans-ExtraBoldItalic.ttf +0 -0
  284. package/fonts/PublicSans-ExtraLight.ttf +0 -0
  285. package/fonts/PublicSans-ExtraLightItalic.ttf +0 -0
  286. package/fonts/PublicSans-Italic.ttf +0 -0
  287. package/fonts/PublicSans-Light.ttf +0 -0
  288. package/fonts/PublicSans-LightItalic.ttf +0 -0
  289. package/fonts/PublicSans-Medium.ttf +0 -0
  290. package/fonts/PublicSans-MediumItalic.ttf +0 -0
  291. package/fonts/PublicSans-Regular.ttf +0 -0
  292. package/fonts/PublicSans-SemiBold.ttf +0 -0
  293. package/fonts/PublicSans-SemiBoldItalic.ttf +0 -0
  294. package/fonts/PublicSans-Thin.ttf +0 -0
  295. package/fonts/PublicSans-ThinItalic.ttf +0 -0
  296. package/images/favicon/manifest.json +3 -3
  297. package/images/hhs-logo-black.svg +10 -0
  298. package/images/icon-dot-gov.svg +1 -0
  299. package/images/icon-https.svg +1 -0
  300. package/images/icons/close-x.svg +6 -0
  301. package/images/icons/svg/arrow-down.svg +3 -0
  302. package/images/icons/svg/arrow-download.svg +1 -0
  303. package/images/icons/svg/arrow-right.svg +1 -0
  304. package/images/icons/svg/arrow-up.svg +3 -0
  305. package/images/icons/svg/block.svg +5 -0
  306. package/images/icons/svg/calendar.svg +1 -0
  307. package/images/icons/svg/check-circle.svg +5 -0
  308. package/images/icons/svg/checkmark.svg +7 -0
  309. package/images/icons/svg/chevron-down.svg +11 -0
  310. package/images/icons/svg/chevron-left.svg +12 -0
  311. package/images/icons/svg/chevron-right.svg +12 -0
  312. package/images/icons/svg/chevron-up.svg +12 -0
  313. package/images/icons/svg/clipboard.svg +1 -0
  314. package/images/icons/svg/close.svg +1 -0
  315. package/images/icons/svg/divide.svg +13 -0
  316. package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
  317. package/images/icons/svg/download.svg +1 -0
  318. package/images/icons/svg/dropdown-arrow.svg +1 -0
  319. package/images/icons/svg/equals.svg +13 -0
  320. package/images/icons/svg/exclamation.svg +10 -0
  321. package/images/icons/svg/external.svg +1 -0
  322. package/images/icons/svg/file-download.svg +1 -0
  323. package/images/icons/svg/file-upload.svg +1 -0
  324. package/images/icons/svg/info.svg +17 -0
  325. package/images/icons/svg/manage-user-access.svg +8 -0
  326. package/images/icons/svg/multiply.svg +12 -0
  327. package/images/icons/svg/performance-feedback.svg +1 -0
  328. package/images/icons/svg/plus.svg +12 -0
  329. package/images/icons/svg/preview.svg +15 -0
  330. package/images/icons/svg/print.svg +1 -0
  331. package/images/icons/svg/registration.svg +8 -0
  332. package/images/icons/svg/reporting.svg +15 -0
  333. package/images/icons/svg/save-disk.svg +5 -0
  334. package/images/icons/svg/search.svg +1 -0
  335. package/images/icons/svg/subtract.svg +15 -0
  336. package/images/icons/svg/targeted-review.svg +15 -0
  337. package/images/icons/svg/tooltip-question.svg +1 -0
  338. package/images/icons/svg/trash.svg +1 -0
  339. package/images/icons/svg/upload.svg +1 -0
  340. package/images/us_flag_small.png +0 -0
  341. package/index.js +31 -0
  342. package/jest/mediaFileTransformer.js +9 -0
  343. package/jest.config.js +188 -0
  344. package/lib/Chevron.jsx +32 -0
  345. package/lib/SvgComponents.jsx +705 -0
  346. package/lib/svg-definitions.svg +125 -0
  347. package/package.json +70 -55
  348. package/{js/session → session}/index.js +1 -5
  349. package/session/isAuthV2.js +22 -0
  350. package/session/logout.js +77 -0
  351. package/session/refresh.js +52 -0
  352. package/session/ttl.js +25 -0
  353. package/storybook-static/229.630347465201d1822126.manager.bundle.js +1 -0
  354. package/storybook-static/295.aa3c5122636a27ad7c7b.manager.bundle.js +1 -0
  355. package/storybook-static/468.d976c69e47003b4dcfa3.manager.bundle.js +2 -0
  356. package/storybook-static/468.d976c69e47003b4dcfa3.manager.bundle.js.LICENSE.txt +94 -0
  357. package/storybook-static/51.fc4b02f2a75c894ae64e.manager.bundle.js +2 -0
  358. package/storybook-static/51.fc4b02f2a75c894ae64e.manager.bundle.js.LICENSE.txt +8 -0
  359. package/storybook-static/551.45aead073703cc6fb12b.manager.bundle.js +1 -0
  360. package/storybook-static/807.1a7f4dcf15e4696572ca.manager.bundle.js +2 -0
  361. package/storybook-static/807.1a7f4dcf15e4696572ca.manager.bundle.js.LICENSE.txt +31 -0
  362. package/storybook-static/897.9b5fee8cc7074607c812.manager.bundle.js +2 -0
  363. package/storybook-static/897.9b5fee8cc7074607c812.manager.bundle.js.LICENSE.txt +12 -0
  364. package/storybook-static/935.532759f0652585685af7.manager.bundle.js +1 -0
  365. package/storybook-static/favicon.ico +0 -0
  366. package/storybook-static/index.html +59 -0
  367. package/storybook-static/main.ad4edcd27d527a119d7a.manager.bundle.js +1 -0
  368. package/storybook-static/project.json +1 -0
  369. package/storybook-static/runtime~main.b165398bf7ef3e30d431.manager.bundle.js +1 -0
  370. package/styles/_global.scss +81 -59
  371. package/styles/_main.scss +11 -3
  372. package/styles/_paths.scss +1 -1
  373. package/styles/_qpp-style.scss +7 -4
  374. package/styles/components/_accordion.scss +273 -149
  375. package/styles/components/_alerts.scss +5 -7
  376. package/styles/components/_autocomplete.scss +47 -0
  377. package/styles/components/_breadcrumbs.scss +18 -17
  378. package/styles/components/_buttons.scss +536 -384
  379. package/styles/components/_error-page.scss +56 -0
  380. package/styles/components/_flash-notification.scss +98 -0
  381. package/styles/components/_fonts.scss +12 -13
  382. package/styles/components/_forms.scss +144 -70
  383. package/styles/components/_grid.scss +26 -20
  384. package/styles/components/_info-modal.scss +52 -27
  385. package/styles/components/_links.scss +4 -3
  386. package/styles/components/_modals.scss +10 -9
  387. package/styles/components/_notification-banner.scss +166 -0
  388. package/styles/components/_panels.scss +23 -21
  389. package/styles/components/_pie-chart.scss +3 -3
  390. package/styles/components/_score-chart.scss +135 -105
  391. package/styles/components/_spinner.scss +7 -0
  392. package/styles/components/_tables.scss +96 -72
  393. package/styles/components/_tabs.scss +69 -0
  394. package/styles/components/_text.scss +114 -48
  395. package/styles/components/_tooltip.scss +23 -0
  396. package/styles/components/_variables.scss +84 -58
  397. package/styles/components/_wells.scss +39 -29
  398. package/styles/qppds/README.md +0 -0
  399. package/styles/qppds/base/_backgrounds.scss +7 -0
  400. package/styles/qppds/base/_fonts.scss +50 -0
  401. package/styles/qppds/base/_icon.scss +31 -0
  402. package/styles/qppds/base/_layout.scss +5 -0
  403. package/styles/qppds/base/_typography.scss +97 -0
  404. package/styles/qppds/base/index.scss +8 -0
  405. package/styles/qppds/components/_alert.scss +101 -0
  406. package/styles/qppds/components/_breadcrumbs.scss +93 -0
  407. package/styles/qppds/components/_button.scss +306 -0
  408. package/styles/qppds/components/_card.scss +176 -0
  409. package/styles/qppds/components/_checkbox.scss +201 -0
  410. package/styles/qppds/components/_circular-loader.scss +47 -0
  411. package/styles/qppds/components/_details.scss +91 -0
  412. package/styles/qppds/components/_dropdown-menu.scss +126 -0
  413. package/styles/qppds/components/_dropdown.scss +56 -0
  414. package/styles/qppds/components/_footer.scss +606 -0
  415. package/styles/qppds/components/_gov-banner.scss +342 -0
  416. package/styles/qppds/components/_header.scss +913 -0
  417. package/styles/qppds/components/_link.scss +54 -0
  418. package/styles/qppds/components/_modal.scss +153 -0
  419. package/styles/qppds/components/_page-header.scss +105 -0
  420. package/styles/qppds/components/_pagination.scss +230 -0
  421. package/styles/qppds/components/_process-list.scss +106 -0
  422. package/styles/qppds/components/_radio-button.scss +185 -0
  423. package/styles/qppds/components/_search.scss +163 -0
  424. package/styles/qppds/components/_sidebar.scss +10 -0
  425. package/styles/qppds/components/_step-indicator.scss +193 -0
  426. package/styles/qppds/components/_table.scss +159 -0
  427. package/styles/qppds/components/_tabs.scss +199 -0
  428. package/styles/qppds/components/_text-input.scss +60 -0
  429. package/styles/qppds/components/index.scss +25 -0
  430. package/styles/qppds/components/sidebar/_animations.scss +38 -0
  431. package/styles/{components → qppds/components}/sidebar/_cms.scss +19 -6
  432. package/styles/{components → qppds/components}/sidebar/_details.scss +28 -21
  433. package/styles/qppds/components/sidebar/_links.scss +462 -0
  434. package/styles/qppds/components/sidebar/_select-role-dropdown.scss +21 -0
  435. package/styles/qppds/components/sidebar/_sidebar-animation.scss +117 -0
  436. package/styles/qppds/components/sidebar/_sidebar-tooltip.scss +33 -0
  437. package/styles/qppds/components/sidebar/_sidebar.scss +145 -0
  438. package/styles/qppds/components/sidebar/project-specific/_wi.scss +42 -0
  439. package/styles/qppds/index.scss +4 -0
  440. package/styles/qppds/settings/_functions.scss +6 -0
  441. package/styles/qppds/settings/_index.scss +3 -0
  442. package/styles/qppds/settings/mixins/_borders.scss +6 -0
  443. package/styles/qppds/settings/mixins/_focus.scss +30 -0
  444. package/styles/qppds/settings/mixins/_icons.scss +43 -0
  445. package/styles/qppds/settings/mixins/_index.scss +8 -0
  446. package/styles/qppds/settings/mixins/_layout.scss +74 -0
  447. package/styles/qppds/settings/mixins/_lists.scss +12 -0
  448. package/styles/qppds/settings/mixins/_table.scss +92 -0
  449. package/styles/qppds/settings/mixins/_type.scss +90 -0
  450. package/styles/qppds/settings/mixins/_visually-hidden.scss +30 -0
  451. package/styles/qppds/settings/variables/_color.scss +86 -0
  452. package/styles/qppds/settings/variables/_index.scss +4 -0
  453. package/styles/qppds/settings/variables/_layout.scss +69 -0
  454. package/styles/qppds/settings/variables/_type.scss +135 -0
  455. package/styles/qppds/settings/variables/_z-index.scss +8 -0
  456. package/styles/qppds/utilities/_background-color.scss +134 -0
  457. package/styles/qppds/utilities/_color.scss +40 -0
  458. package/styles/qppds/utilities/_display-visibility.scss +84 -0
  459. package/styles/qppds/utilities/_flexbox.scss +240 -0
  460. package/styles/qppds/utilities/_font-family.scss +10 -0
  461. package/styles/qppds/utilities/_font-size.scss +8 -0
  462. package/styles/qppds/utilities/_font-weight.scss +10 -0
  463. package/styles/qppds/utilities/_gap.scss +38 -0
  464. package/styles/qppds/utilities/_height.scss +81 -0
  465. package/styles/qppds/utilities/_list-style.scss +17 -0
  466. package/styles/qppds/utilities/_margin.scss +136 -0
  467. package/styles/qppds/utilities/_padding.scss +76 -0
  468. package/styles/qppds/utilities/_position.scss +24 -0
  469. package/styles/qppds/utilities/_text-align.scss +40 -0
  470. package/styles/qppds/utilities/_text-transform.scss +7 -0
  471. package/styles/qppds/utilities/_truncate.scss +8 -0
  472. package/styles/qppds/utilities/_vertical-align.scss +72 -0
  473. package/styles/qppds/utilities/_width.scss +82 -0
  474. package/styles/qppds/utilities/index.scss +17 -0
  475. package/styles/qppds.scss +2 -0
  476. package/styles/third-party/_legacy-bootstrap.scss +19 -0
  477. package/styles/third-party/legacy-bootstrap/_buttons.scss +126 -0
  478. package/styles/third-party/legacy-bootstrap/_dropdowns.scss +211 -0
  479. package/styles/third-party/legacy-bootstrap/_forms.scss +510 -0
  480. package/styles/third-party/legacy-bootstrap/_grid.scss +73 -0
  481. package/styles/third-party/legacy-bootstrap/_mixins.scss +27 -0
  482. package/styles/third-party/legacy-bootstrap/_navbar.scss +644 -0
  483. package/styles/third-party/legacy-bootstrap/_navs.scss +193 -0
  484. package/styles/third-party/legacy-bootstrap/_normalize.scss +385 -0
  485. package/styles/third-party/legacy-bootstrap/_scaffolding.scss +116 -0
  486. package/styles/third-party/legacy-bootstrap/_variables.scss +858 -0
  487. package/styles/third-party/legacy-bootstrap/mixins/_buttons.scss +70 -0
  488. package/styles/third-party/legacy-bootstrap/mixins/_clearfix.scss +22 -0
  489. package/styles/third-party/legacy-bootstrap/mixins/_forms.scss +108 -0
  490. package/styles/third-party/legacy-bootstrap/mixins/_grid-framework.scss +86 -0
  491. package/styles/third-party/legacy-bootstrap/mixins/_grid.scss +112 -0
  492. package/styles/third-party/legacy-bootstrap/mixins/_labels.scss +12 -0
  493. package/styles/third-party/legacy-bootstrap/mixins/_nav-divider.scss +10 -0
  494. package/styles/third-party/legacy-bootstrap/mixins/_nav-vertical-align.scss +9 -0
  495. package/styles/third-party/legacy-bootstrap/mixins/_opacity.scss +7 -0
  496. package/styles/third-party/legacy-bootstrap/mixins/_panels.scss +30 -0
  497. package/styles/third-party/legacy-bootstrap/mixins/_reset-filter.scss +7 -0
  498. package/styles/third-party/legacy-bootstrap/mixins/_reset-text.scss +18 -0
  499. package/styles/third-party/legacy-bootstrap/mixins/_resize.scss +6 -0
  500. package/styles/third-party/legacy-bootstrap/mixins/_responsive-visibility.scss +25 -0
  501. package/styles/third-party/legacy-bootstrap/mixins/_size.scss +10 -0
  502. package/styles/third-party/legacy-bootstrap/mixins/_tab-focus.scss +9 -0
  503. package/styles/third-party/legacy-bootstrap/mixins/_table-row.scss +28 -0
  504. package/styles/third-party/legacy-bootstrap/mixins/_text-emphasis.scss +12 -0
  505. package/styles/third-party/legacy-bootstrap/mixins/_text-overflow.scss +8 -0
  506. package/styles/third-party/legacy-bootstrap/mixins/_vendor-prefixes.scss +182 -0
  507. package/styles/utility/_mixins.scss +12 -11
  508. package/styles/utility/_utilities.scss +12 -1
  509. package/svgo.config.js +14 -0
  510. package/test/components/Accordion.test.js +12 -0
  511. package/test/components/ErrorUI.test.js +33 -0
  512. package/test/components/FooterUI.test.js +60 -0
  513. package/test/components/HeaderUI.test.js +35 -0
  514. package/test/components/Infotip.test.js +79 -0
  515. package/test/components/SideNavUI.test.js +23 -0
  516. package/test/index.test.js +8 -0
  517. package/test/session/session.test.js +221 -0
  518. package/test-setup.js +1 -0
  519. package/webpack.config.js +137 -0
  520. package/webpack.config.react.js +75 -0
  521. package/Dockerfile +0 -27
  522. package/Jenkinsfile +0 -22
  523. package/_config.dev.yml +0 -17
  524. package/_layouts/base.html +0 -42
  525. package/css/main.scss +0 -5
  526. package/dist/default.css +0 -2
  527. package/dist/default.css.map +0 -1
  528. package/dist/fonts/FontAwesome.otf +0 -0
  529. package/dist/fonts/Rubik-Bold.ttf +0 -0
  530. package/dist/fonts/Rubik-Light.ttf +0 -0
  531. package/dist/fonts/Rubik-Medium.ttf +0 -0
  532. package/dist/fonts/Rubik-Regular.ttf +0 -0
  533. package/dist/fonts/fontawesome-webfont.eot +0 -0
  534. package/dist/fonts/fontawesome-webfont.ttf +0 -0
  535. package/dist/fonts/fontawesome-webfont.woff +0 -0
  536. package/dist/fonts/fontawesome-webfont.woff2 +0 -0
  537. package/dist/report.html +0 -25
  538. package/js/components/Error/Collapsible.jsx +0 -35
  539. package/js/components/Error/ErrorUI.jsx +0 -24
  540. package/js/components/Error/error.js +0 -11
  541. package/js/components/Footer/FooterUI.jsx +0 -39
  542. package/js/components/Footer/footer.js +0 -17
  543. package/js/components/Header/HeaderAbout.jsx +0 -27
  544. package/js/components/Header/HeaderAccountMenu.jsx +0 -147
  545. package/js/components/Header/HeaderApms.jsx +0 -25
  546. package/js/components/Header/HeaderMips.jsx +0 -43
  547. package/js/components/Header/HeaderUI.jsx +0 -87
  548. package/js/components/Header/header.js +0 -16
  549. package/js/components/InfoModal/index.jsx +0 -64
  550. package/js/components/SessionDialogUI.jsx +0 -199
  551. package/js/components/SideNav/Chart/ScoreChart.jsx +0 -246
  552. package/js/components/SideNav/Chart/__tests__/ScoreChart.test.js +0 -28
  553. package/js/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +0 -57
  554. package/js/components/SideNav/Chart/index.js +0 -1
  555. package/js/components/SideNav/Content/CmsContent.jsx +0 -85
  556. package/js/components/SideNav/Content/FeedbackContent.jsx +0 -76
  557. package/js/components/SideNav/Content/LevelOneContent.jsx +0 -64
  558. package/js/components/SideNav/Content/LevelThreeContent.jsx +0 -99
  559. package/js/components/SideNav/Content/LevelTwoContent.jsx +0 -89
  560. package/js/components/SideNav/Content/index.js +0 -5
  561. package/js/components/SideNav/Details/IndividualDetails.jsx +0 -35
  562. package/js/components/SideNav/Details/PracticeDetails.jsx +0 -33
  563. package/js/components/SideNav/Details/index.js +0 -2
  564. package/js/components/SideNav/Links/CmsReportLink.jsx +0 -117
  565. package/js/components/SideNav/Links/NavLinkBack.jsx +0 -8
  566. package/js/components/SideNav/Links/NavLinkContainer.jsx +0 -33
  567. package/js/components/SideNav/Links/NavLinkDrawer.jsx +0 -86
  568. package/js/components/SideNav/Links/NavLinkInline.jsx +0 -22
  569. package/js/components/SideNav/Links/NavLinkSlideOut.jsx +0 -47
  570. package/js/components/SideNav/Links/NavLinkToggle.jsx +0 -25
  571. package/js/components/SideNav/Links/index.js +0 -7
  572. package/js/components/SideNav/UI/SideNavUI.jsx +0 -115
  573. package/js/components/SideNav/UI/index.js +0 -1
  574. package/js/components/SideNav/index.js +0 -25
  575. package/js/components/index.js +0 -11
  576. package/js/index.js +0 -28
  577. package/js/session/logout.js +0 -43
  578. package/js/session/refresh.js +0 -47
  579. package/js/session/ttl.js +0 -32
  580. package/sidebar-demo.html +0 -48
  581. package/styles/components/_footer.scss +0 -157
  582. package/styles/components/_header.scss +0 -393
  583. package/styles/components/_sidebar.scss +0 -6
  584. package/styles/components/_tool-tips.scss +0 -6
  585. package/styles/components/sidebar/_animations.scss +0 -16
  586. package/styles/components/sidebar/_links.scss +0 -284
  587. package/styles/components/sidebar/_sidebar.scss +0 -108
  588. package/styles/guide/_layout.scss +0 -120
  589. package/styles/guide/sidebar-demo.css +0 -121
  590. package/yarn.lock +0 -5694
@@ -0,0 +1,868 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for components/SessionDialogUI.jsx</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">components</a> SessionDialogUI.jsx</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">5% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>3/60</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">0% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/28</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">0% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/16</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">5% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>3/60</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-yes">1x</span>
339
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-no">&nbsp;</span>
349
+ <span class="cline-any cline-no">&nbsp;</span>
350
+ <span class="cline-any cline-no">&nbsp;</span>
351
+ <span class="cline-any cline-no">&nbsp;</span>
352
+ <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-no">&nbsp;</span>
354
+ <span class="cline-any cline-no">&nbsp;</span>
355
+ <span class="cline-any cline-no">&nbsp;</span>
356
+ <span class="cline-any cline-no">&nbsp;</span>
357
+ <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-no">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-no">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-no">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-no">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-no">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-no">&nbsp;</span>
387
+ <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-no">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-no">&nbsp;</span>
395
+ <span class="cline-any cline-no">&nbsp;</span>
396
+ <span class="cline-any cline-no">&nbsp;</span>
397
+ <span class="cline-any cline-no">&nbsp;</span>
398
+ <span class="cline-any cline-no">&nbsp;</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-no">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-no">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-no">&nbsp;</span>
410
+ <span class="cline-any cline-no">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-no">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-no">&nbsp;</span>
428
+ <span class="cline-any cline-no">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-no">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-neutral">&nbsp;</span>
449
+ <span class="cline-any cline-neutral">&nbsp;</span>
450
+ <span class="cline-any cline-neutral">&nbsp;</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-no">&nbsp;</span>
455
+ <span class="cline-any cline-no">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-no">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-no">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-neutral">&nbsp;</span>
463
+ <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-no">&nbsp;</span>
473
+ <span class="cline-any cline-no">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-no">&nbsp;</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-no">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-no">&nbsp;</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-no">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-no">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-no">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-no">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-no">&nbsp;</span>
530
+ <span class="cline-any cline-no">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-no">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-neutral">&nbsp;</span>
548
+ <span class="cline-any cline-neutral">&nbsp;</span>
549
+ <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-neutral">&nbsp;</span>
558
+ <span class="cline-any cline-neutral">&nbsp;</span>
559
+ <span class="cline-any cline-neutral">&nbsp;</span>
560
+ <span class="cline-any cline-neutral">&nbsp;</span>
561
+ <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-neutral">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-neutral">&nbsp;</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</span>
575
+ <span class="cline-any cline-neutral">&nbsp;</span>
576
+ <span class="cline-any cline-neutral">&nbsp;</span>
577
+ <span class="cline-any cline-yes">1x</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-yes">1x</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
+ <span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { Component } from 'react';
589
+ import PropTypes from 'prop-types';
590
+ import cookie from 'cookie';
591
+ import retry from 'retry';
592
+ import jwtDecode from 'jwt-decode';
593
+ &nbsp;
594
+ import Modal from './Modal';
595
+ import RefreshSession from '../session/refresh';
596
+ import LogoutSession from '../session/logout';
597
+ import fetchTtl from '../session/ttl';
598
+ &nbsp;
599
+ const fetchTtlIntervalMs = 60000;
600
+ &nbsp;
601
+ export default class SessionDialogUI extends Component {
602
+ /**
603
+ * Create a SessionDialogUI component.
604
+ * @param {object} props - Configuration options. See SessionDialog for more
605
+ */
606
+ <span class="fstat-no" title="function not covered" > co</span>nstructor(props) {
607
+ <span class="cstat-no" title="statement not covered" > super(props);</span>
608
+ &nbsp;
609
+ <span class="cstat-no" title="statement not covered" > this.handleOpenModal = this.handleOpenModal.bind(this);</span>
610
+ <span class="cstat-no" title="statement not covered" > this.handleCloseModal = this.handleCloseModal.bind(this);</span>
611
+ <span class="cstat-no" title="statement not covered" > this.refreshSession = this.refreshSession.bind(this);</span>
612
+ <span class="cstat-no" title="statement not covered" > this.signOut = this.signOut.bind(this);</span>
613
+ <span class="cstat-no" title="statement not covered" > this.startTimer = this.startTimer.bind(this);</span>
614
+ <span class="cstat-no" title="statement not covered" > this.shouldShowDialog = this.shouldShowDialog.bind(this);</span>
615
+ <span class="cstat-no" title="statement not covered" > this.shouldSignOut = this.shouldSignOut.bind(this);</span>
616
+ <span class="cstat-no" title="statement not covered" > this.minutesUntil = this.minutesUntil.bind(this);</span>
617
+ <span class="cstat-no" title="statement not covered" > this.checkExpiry = this.checkExpiry.bind(this);</span>
618
+ <span class="cstat-no" title="statement not covered" > this.onInterval = this.onInterval.bind(this);</span>
619
+ &nbsp;
620
+ <span class="cstat-no" title="statement not covered" > if (props.showImmediate === true) {</span>
621
+ <span class="cstat-no" title="statement not covered" > this.state = {</span>
622
+ showModal: true,
623
+ showError: false,
624
+ };
625
+ } else {
626
+ <span class="cstat-no" title="statement not covered" > this.state = {</span>
627
+ showModal: false,
628
+ showError: false,
629
+ };
630
+ &nbsp;
631
+ <span class="cstat-no" title="statement not covered" > this.startTimer();</span>
632
+ }
633
+ }
634
+ &nbsp;
635
+ /**
636
+ * Extracts the token exp value as a JavaScript date.
637
+ * @param {Object} cookies - An object representation of the cookie store
638
+ * @returns {(date|null)} The token expiration date, if found
639
+ */
640
+ <span class="fstat-no" title="function not covered" > ge</span>tTokenExpiry(cookies) {
641
+ let expiry = <span class="cstat-no" title="statement not covered" >null;</span>
642
+ &nbsp;
643
+ <span class="cstat-no" title="statement not covered" > if (cookies.hasOwnProperty('qpp_auth_token') &amp;&amp; cookies.qpp_auth_token) {</span>
644
+ // See https://tools.ietf.org/html/rfc7519
645
+ // `exp` is a NumericDate representing "seconds since the epoch"
646
+ // and it needs to be milliseconds to get a JavaScript date from it.
647
+ const { exp } = <span class="cstat-no" title="statement not covered" >jwtDecode(cookies.qpp_auth_token);</span>
648
+ <span class="cstat-no" title="statement not covered" > expiry = new Date(exp * 1000);</span>
649
+ }
650
+ &nbsp;
651
+ <span class="cstat-no" title="statement not covered" > return expiry;</span>
652
+ }
653
+ &nbsp;
654
+ <span class="fstat-no" title="function not covered" > ch</span>eckExpiry(expiry) {
655
+ <span class="cstat-no" title="statement not covered" > if (expiry) {</span>
656
+ <span class="cstat-no" title="statement not covered" > if (this.shouldShowDialog(expiry)) {</span>
657
+ <span class="cstat-no" title="statement not covered" > this.handleOpenModal();</span>
658
+ } else <span class="cstat-no" title="statement not covered" >if (this.shouldSignOut(expiry)) {</span>
659
+ <span class="cstat-no" title="statement not covered" > this.signOut();</span>
660
+ <span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
661
+ }
662
+ } else {
663
+ <span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
664
+ }
665
+ }
666
+ &nbsp;
667
+ <span class="fstat-no" title="function not covered" > on</span>Interval() {
668
+ const cookies = <span class="cstat-no" title="statement not covered" >cookie.parse(document.cookie);</span>
669
+ &nbsp;
670
+ <span class="cstat-no" title="statement not covered" > if (cookies.hasOwnProperty('qpp_auth_token') &amp;&amp; cookies.qpp_auth_token) {</span>
671
+ const operation = <span class="cstat-no" title="statement not covered" >retry.operation({</span>
672
+ retries: 5,
673
+ factor: 1,
674
+ minTimeout: 1000,
675
+ maxTimeout: 1000,
676
+ });
677
+ &nbsp;
678
+ <span class="cstat-no" title="statement not covered" > operation.attempt(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
679
+ <span class="cstat-no" title="statement not covered" > fetchTtl(cookies.qpp_auth_token)</span>
680
+ .then(this.checkExpiry)
681
+ .catch(<span class="fstat-no" title="function not covered" >(e</span>rror) =&gt; {
682
+ <span class="cstat-no" title="statement not covered" > if (operation.retry(error)) {</span>
683
+ // try again before giving up
684
+ <span class="cstat-no" title="statement not covered" > return;</span>
685
+ }
686
+ <span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
687
+ // sign an inactive user out
688
+ <span class="cstat-no" title="statement not covered" > this.forceTimeoutHandle = setTimeout(this.signOut, 120 * 1000);</span>
689
+ <span class="cstat-no" title="statement not covered" > this.setState({</span>
690
+ showModal: false,
691
+ showError: true,
692
+ });
693
+ });
694
+ });
695
+ }
696
+ }
697
+ &nbsp;
698
+ /**
699
+ * Checks whether the user is within a specified number of minutes before
700
+ * their session token expires. If so, show a warning dialog. If the
701
+ * expiration has been reached, sign the user out.
702
+ */
703
+ <span class="fstat-no" title="function not covered" > st</span>artTimer() {
704
+ <span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
705
+ &nbsp;
706
+ <span class="cstat-no" title="statement not covered" > this.warningInterval = setInterval(this.onInterval, fetchTtlIntervalMs);</span>
707
+ }
708
+ &nbsp;
709
+ /**
710
+ * Returns whether the current time is within the timeout range of expiry.
711
+ * @param {date|number} expiry - Expiration date to check against
712
+ * @returns {boolean}
713
+ */
714
+ <span class="fstat-no" title="function not covered" > sh</span>ouldShowDialog(expiry) {
715
+ <span class="cstat-no" title="statement not covered" > if (typeof expiry === 'number') {</span>
716
+ const minutesLeft = <span class="cstat-no" title="statement not covered" >expiry / 60;</span>
717
+ &nbsp;
718
+ <span class="cstat-no" title="statement not covered" > return !this.state.showModal &amp;&amp; minutesLeft &lt;= this.props.warningTimeout;</span>
719
+ } else {
720
+ <span class="cstat-no" title="statement not covered" > return (</span>
721
+ !this.state.showModal &amp;&amp;
722
+ this.minutesUntil(expiry) &lt;= this.props.warningTimeout
723
+ );
724
+ }
725
+ }
726
+ &nbsp;
727
+ /**
728
+ * Returns whether the current time has reached the expiration date.
729
+ * @param {date|number} expiry - Expiration date to check against
730
+ * @returns {boolean}
731
+ */
732
+ <span class="fstat-no" title="function not covered" > sh</span>ouldSignOut(expiry) {
733
+ <span class="cstat-no" title="statement not covered" > if (typeof expiry === 'number') {</span>
734
+ <span class="cstat-no" title="statement not covered" > return expiry &lt;= 1;</span>
735
+ } else {
736
+ <span class="cstat-no" title="statement not covered" > return this.minutesUntil(expiry) &lt;= 0;</span>
737
+ }
738
+ }
739
+ &nbsp;
740
+ /**
741
+ * Returns number of minutes until the expiration date.
742
+ * @param {date} expiry - Expiration date to check against
743
+ * @returns {number}
744
+ */
745
+ <span class="fstat-no" title="function not covered" > mi</span>nutesUntil(expiry) {
746
+ <span class="cstat-no" title="statement not covered" > return (expiry - new Date().getTime()) / 60000;</span>
747
+ }
748
+ &nbsp;
749
+ /**
750
+ * Sets the modal state to visible.
751
+ */
752
+ <span class="fstat-no" title="function not covered" > ha</span>ndleOpenModal() {
753
+ <span class="cstat-no" title="statement not covered" > this.setState({</span>
754
+ showModal: true,
755
+ showError: false,
756
+ });
757
+ }
758
+ &nbsp;
759
+ /**
760
+ * Sets the modal state to hidden.
761
+ */
762
+ <span class="fstat-no" title="function not covered" > ha</span>ndleCloseModal() {
763
+ <span class="cstat-no" title="statement not covered" > this.setState({</span>
764
+ showModal: false,
765
+ showError: false,
766
+ });
767
+ }
768
+ &nbsp;
769
+ /**
770
+ * Handles the user requesting their session be extended.
771
+ */
772
+ <span class="fstat-no" title="function not covered" > re</span>freshSession() {
773
+ <span class="cstat-no" title="statement not covered" > RefreshSession({</span>
774
+ window,
775
+ onSuccess: <span class="fstat-no" title="function not covered" >()</span> =&gt; {
776
+ <span class="cstat-no" title="statement not covered" > this.startTimer();</span>
777
+ },
778
+ });
779
+ &nbsp;
780
+ <span class="cstat-no" title="statement not covered" > this.handleCloseModal();</span>
781
+ }
782
+ &nbsp;
783
+ /**
784
+ * Handles the user requesting their session be ended.
785
+ */
786
+ <span class="fstat-no" title="function not covered" > si</span>gnOut() {
787
+ <span class="cstat-no" title="statement not covered" > if (this.forceTimeoutHandle) {</span>
788
+ <span class="cstat-no" title="statement not covered" > clearTimeout(this.forceTimeoutHandle);</span>
789
+ }
790
+ <span class="cstat-no" title="statement not covered" > LogoutSession(window);</span>
791
+ <span class="cstat-no" title="statement not covered" > this.handleCloseModal();</span>
792
+ }
793
+ &nbsp;
794
+ <span class="fstat-no" title="function not covered" > re</span>nder() {
795
+ <span class="cstat-no" title="statement not covered" > return (</span>
796
+ &lt;React.Fragment&gt;
797
+ &lt;Modal
798
+ useDesignSystem
799
+ title="You will be signed out within two minutes"
800
+ isOpen={this.state.showModal}
801
+ primary={{
802
+ title: 'Keep me signed in',
803
+ onClick: this.refreshSession,
804
+ }}
805
+ secondary={{
806
+ title: 'Sign me out now',
807
+ onClick: this.signOut,
808
+ }}
809
+ onRequestClose={this.handleCloseModal}
810
+ &gt;
811
+ &lt;p&gt;
812
+ You have been inactive for thirty minutes. For your security, we
813
+ will sign you out automatically.
814
+ &lt;/p&gt;
815
+ &lt;/Modal&gt;
816
+ &nbsp;
817
+ &lt;Modal
818
+ useDesignSystem
819
+ title="Technical Difficulties"
820
+ isOpen={this.state.showError}
821
+ primary={{
822
+ title: 'Sign Out',
823
+ onClick: this.signOut,
824
+ }}
825
+ onRequestClose={this.signOut}
826
+ &gt;
827
+ &lt;p&gt;
828
+ We’re experiencing technical difficulties. Please log in again to
829
+ continue. For your security, we will sign you out automatically
830
+ within two minutes.
831
+ &lt;/p&gt;
832
+ &lt;/Modal&gt;
833
+ &lt;/React.Fragment&gt;
834
+ );
835
+ }
836
+ }
837
+ &nbsp;
838
+ SessionDialogUI.propTypes = {
839
+ showImmediate: PropTypes.bool,
840
+ warningTimeout: PropTypes.number,
841
+ appElement: PropTypes.string,
842
+ };
843
+ &nbsp;
844
+ SessionDialogUI.defaultProps = {
845
+ showImmediate: false,
846
+ warningTimeout: 2,
847
+ appElement: undefined,
848
+ };
849
+ &nbsp;</pre></td></tr></table></pre>
850
+
851
+ <div class='push'></div><!-- for sticky footer -->
852
+ </div><!-- /wrapper -->
853
+ <div class='footer quiet pad2 space-top1 center small'>
854
+ Code coverage generated by
855
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
856
+ at Fri Feb 24 2023 12:56:50 GMT-0500 (Eastern Standard Time)
857
+ </div>
858
+ <script src="../prettify.js"></script>
859
+ <script>
860
+ window.onload = function () {
861
+ prettyPrint();
862
+ };
863
+ </script>
864
+ <script src="../sorter.js"></script>
865
+ <script src="../block-navigation.js"></script>
866
+ </body>
867
+ </html>
868
+