{"version":3,"file":"js/application-058125f3dc3907f0ea8b.js","mappings":"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","sources":["webpack://app/./app/frontend/javascripts/app/following.js","webpack://app/./app/frontend/javascripts/app/star.js","webpack://app/./app/frontend/javascripts/app/bootstrap_init.js","webpack://app/./app/frontend/packs/application.js","webpack://app/./app/frontend/javascripts/turbo.js","webpack://app/./app/frontend/javascripts/app/notification_message.js","webpack://app/./app/frontend/javascripts/app/theme_colors.js","webpack://app/./app/frontend/javascripts/vendor/jquery.hotkeys.js","webpack://app/./app/frontend/javascripts/ios_shim.js","webpack://app/./app/frontend/javascripts/app/esarea.js","webpack://app/./app/frontend/javascripts/app/zapping.js","webpack://app/./app/frontend/stylesheets/vendor/bootstrap-sass-3/javascripts/bootstrap.js","webpack://app/./app/frontend/javascripts/app/mathjax.js","webpack://app/./app/frontend/javascripts/app/form.js","webpack://app/./app/frontend/javascripts/vendor/cheet.min.js","webpack://app/./app/frontend/javascripts/vendor/jquery.onscreen.js","webpack://app/./app/frontend/fonts/ sync ^\\.\\/.*$","webpack://app/./app/frontend/images/ sync ^\\.\\/.*$","webpack://app/./app/frontend/javascripts/vendor/jquery.selection.js","webpack://app/./app/frontend/javascripts/app/post.js","webpack://app/./app/frontend/javascripts/app/common.js","webpack://app/./app/frontend/javascripts/app/keyboard_shortcut.js"],"sourcesContent":["jQuery(function() {\n var following;\n following = new Following();\n});\n\nclass Following {\n constructor() {\n this.init();\n }\n\n init() {\n this.listen();\n }\n\n listen() {\n this.listen_follow();\n this.listen_following();\n }\n\n listen_follow() {\n $(document).on(\"ajax:success\", this.follow_toggle_selector, e => {\n $(this.follow_toggle_selector).toggleClass(\"hidden\");\n\n if (rack_env !== \"test\") {\n this.trigger_hover_event = false;\n }\n\n return;\n });\n }\n\n listen_following() {\n $(\".followings-button .btn-info\").on(\"mouseenter\", e => {\n if (!this.trigger_hover_event) {\n return;\n }\n\n $(e.currentTarget).hide();\n $(\".followings-button .btn-danger\").show();\n });\n\n $(\".followings-button .btn-info\").on(\"mouseleave\", e => {\n this.trigger_hover_event = true;\n });\n\n $(\".followings-button .btn-danger\").on(\"mouseleave\", e => {\n $(e.currentTarget).hide();\n $(\".followings-button .btn-info\").show();\n });\n }\n}\n\nFollowing.prototype.trigger_hover_event = true;\nFollowing.prototype.follow_toggle_selector = \"form#follow, form#unfollow\";\n","jQuery(function() {\n var star;\n star = new Star();\n});\n\nclass Star {\n constructor() {\n this.init();\n }\n\n init() {\n this.highlight_my_footprint();\n this.listen();\n }\n\n highlight_my_footprint() {\n var nickname = $(\"body\").data(\"current-user-nickname\");\n var $icon_footprint = $((\".icon-footprint[data-user-nickname='\" + (nickname) + \"']\"));\n $icon_footprint.addClass(\"my\");\n\n if ($(\"body\").hasClass(\"post\")) {\n $icon_footprint.closest(\".star-content\").find(\".edit-star .edit i\").removeClass(\"hidden\");\n }\n }\n\n listen() {\n $(document).on(\"turbo:load\", this.highlight_my_footprint);\n this.listen_click_star();\n this.listen_post();\n this.listen_touch_end();\n this.listen_edit_star();\n }\n\n listen_click_star() {\n $(document).on(\"click\", \"a.post-star\", e => {\n $(\"ul.stars\").append(\"
  • \");\n });\n }\n\n listen_post() {\n $(document).on(\"ajax:before\", \"a.post-star, a.put-star\", e => {\n var selection;\n\n if (this.selection) {\n selection = this.selection;\n this.selection = \"\";\n } else {\n selection = $.selection(\"html\");\n }\n\n var params = new URLSearchParams({\n content: selection\n });\n\n e.currentTarget.dataset.params = params.toString();\n });\n\n $(document).on(\"ajax:success\", \"a.post-star, a.put-star\", e => {\n var html;\n\n if (html = e.originalEvent.detail[0]) {\n $(\".star-gazers\").html($(html).find(\"body\").html());\n\n if ($(\"body\").data(\"current-user-nickname\")) {\n this.highlight_my_footprint();\n } else {\n $(\".post-star[data-method=post]\").replaceWith($(\".hidden .post-star\"));\n }\n\n setTimeout(function() {\n $(\"ul.stars.star-toggle .trigger:first\").click();\n }, 400);\n }\n\n return;\n });\n\n $(document).on(\"ajax:error\", \"a.post-star, a.put-star\", e => {\n window.location.reload();\n });\n }\n\n listen_touch_end() {\n $(document).on(\"touchend\", e => {\n var selection = $.selection(\"html\");\n\n if (selection) {\n this.selection = selection;\n }\n });\n }\n\n listen_edit_star() {\n $(document).on(\"click\", \".edit-star .edit\", e => {\n $(e.currentTarget).addClass(\"hidden\").closest(\".phrase\").find(\".text\").addClass(\"edit-mode\");\n $(\".post-star\").addClass(\"hidden\");\n $(\".put-star\").removeClass(\"hidden\");\n });\n }\n}\n\nStar.prototype.selection = \"\";\n","jQuery(function() {\n $(\"a[rel=popover]\").popover();\n $(\"[data-toggle=tooltip]\").tooltip();\n $(\"a[rel=tooltip]\").tooltip();\n});\n","const images = require.context('../images/', true)\nconst fonts = require.context('../fonts/', true)\n\nwindow.PPLOG = {};\nimport jQuery from 'jquery';\nwindow.$ = window.jQuery = jQuery;\n\nimport \"@hotwired/turbo-rails\";\nimport \"../javascripts/ios_shim\";\nimport \"../javascripts/turbo\";\n\nimport Rails from '@rails/ujs';\nRails.start();\nimport '../stylesheets/vendor/bootstrap-sass-3/javascripts/bootstrap';\n\n// TODO: 使っているのか含めて整理したい\nimport '../javascripts/vendor/Chart.min';\nimport '../javascripts/vendor/cheet.min';\nimport '../javascripts/vendor/jquery.hotkeys';\nimport '../javascripts/vendor/jquery.onscreen';\nimport '../javascripts/vendor/jquery.selection';\n\nimport '../javascripts/app/bootstrap_init';\nimport '../javascripts/app/common';\nimport '../javascripts/app/esarea';\nimport '../javascripts/app/form';\nimport '../javascripts/app/following';\nimport '../javascripts/app/keyboard_shortcut';\nimport '../javascripts/app/mathjax';\nimport '../javascripts/app/notification_message';\nimport '../javascripts/app/post';\nimport '../javascripts/app/star';\nimport '../javascripts/app/theme_colors';\nimport '../javascripts/app/zapping';\n","function turboCSP() {\n // https://github.com/hotwired/turbo/issues/294#issuecomment-996585109\n document.addEventListener(\"turbo:before-fetch-request\", (event) => {\n event.detail.fetchOptions.headers[\"X-Turbo-Nonce\"] =\n document.querySelector(\"meta[name='csp-nonce']\")?.content\n })\n\n document.addEventListener(\"turbo:before-cache\", () => {\n document.querySelectorAll(\"script[nonce], link[nonce]\").forEach((element) => {\n element.setAttribute(\"nonce\", element.nonce);\n })\n })\n}\n\nfunction initTurbo() {\n if (rack_env === 'development') {\n // local development では、Turbo の progress bar の表示の閾値を下げる\n Turbo.setProgressBarDelay(10)\n }\n turboCSP();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", initTurbo);\n","document.addEventListener(\"turbo:load\", function() {\n var timeout_id;\n\n timeout_id = setTimeout(function() {\n $(\"#flash_notice\").html(\"\");\n\n $(\".alert-success\").animate({\n height: 0,\n padding: 0\n }, 400, \"swing\", function() {\n $(\".alert-success\").remove();\n });\n }, 2000);\n});\n","jQuery(function() {\n var themeColor = new ThemeColor();\n\n $(document).on(\"turbo:load, turbo:render\", function() {\n if (!$(\"body\").hasClass(\"edit-theme-color\")) {\n return;\n }\n\n themeColor.init();\n });\n});\n\nclass ThemeColor {\n constructor() {}\n\n init() {\n this.listen();\n $(\"input[type=radio]:checked\").change();\n }\n\n listen() {\n $(document).on(\"change\", \"input[type=radio]\", e => {\n $(\"input[type=radio]\").closest(\"li\").removeClass(\"checked\");\n $(e.currentTarget).closest(\"li\").addClass(\"checked\");\n });\n }\n}\n","/*\n * jQuery Hotkeys Plugin\n * Copyright 2010, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Based upon the plugin by Tzury Bar Yochay:\n * http://github.com/tzuryby/hotkeys\n *\n * Original idea by:\n * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/\n*/\n\n(function(jQuery){\n\n\tjQuery.hotkeys = {\n\t\tversion: \"0.8+\",\n\n\t\tspecialKeys: {\n\t\t\t8: \"backspace\", 9: \"tab\", 13: \"return\", 16: \"shift\", 17: \"ctrl\", 18: \"alt\", 19: \"pause\",\n\t\t\t20: \"capslock\", 27: \"esc\", 32: \"space\", 33: \"pageup\", 34: \"pagedown\", 35: \"end\", 36: \"home\",\n\t\t\t37: \"left\", 38: \"up\", 39: \"right\", 40: \"down\", 45: \"insert\", 46: \"del\",\n\t\t\t96: \"0\", 97: \"1\", 98: \"2\", 99: \"3\", 100: \"4\", 101: \"5\", 102: \"6\", 103: \"7\",\n\t\t\t104: \"8\", 105: \"9\", 106: \"*\", 107: \"+\", 109: \"-\", 110: \".\", 111 : \"/\",\n\t\t\t112: \"f1\", 113: \"f2\", 114: \"f3\", 115: \"f4\", 116: \"f5\", 117: \"f6\", 118: \"f7\", 119: \"f8\",\n\t\t\t120: \"f9\", 121: \"f10\", 122: \"f11\", 123: \"f12\", 144: \"numlock\", 145: \"scroll\", 188: \",\", 190: \".\",\n\t\t\t191: \"/\", 224: \"meta\"\n\t\t},\n\n\t\tshiftNums: {\n\t\t\t\"`\": \"~\", \"1\": \"!\", \"2\": \"@\", \"3\": \"#\", \"4\": \"$\", \"5\": \"%\", \"6\": \"^\", \"7\": \"&\",\n\t\t\t\"8\": \"*\", \"9\": \"(\", \"0\": \")\", \"-\": \"_\", \"=\": \"+\", \";\": \": \", \"'\": \"\\\"\", \",\": \"<\",\n\t\t\t\".\": \">\", \"/\": \"?\", \"\\\\\": \"|\"\n\t\t}\n\t};\n\n\tfunction keyHandler( handleObj ) {\n\n\t\tvar origHandler = handleObj.handler,\n\t\t\t//use namespace as keys so it works with event delegation as well\n\t\t\t//will also allow removing listeners of a specific key combination\n\t\t\t//and support data objects\n\t\t\tkeys = (handleObj.namespace || \"\").toLowerCase().split(\" \");\n\t\t\tkeys = jQuery.map(keys, function(key) { return key.split(\".\"); });\n\n\t\t//no need to modify handler if no keys specified\n\t\t//Added keys[0].substring(0, 12) to work with jQuery ui 1.9.0\n\t\t//Added accordion, tabs and menu, then jquery ui can use keys.\n\n\t\t\tif (keys.length === 1 && (keys[0] === \"\" || \n\t\t\tkeys[0].substring(0, 12) === \"autocomplete\" || \n\t\t\tkeys[0].substring(0, 9) === \"accordion\" || \n\t\t\tkeys[0].substring(0, 4) === \"tabs\" || \n\t\t\tkeys[0].substring(0, 4) === \"menu\")) {\n\t\t\treturn;\n\t\t}\n\n\t\thandleObj.handler = function( event ) {\n\t\t\t// Don't fire in text-accepting inputs that we didn't directly bind to\n\t\t\t// important to note that $.fn.prop is only available on jquery 1.6+\n\t\t\tif ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||\n\t\t\t\tevent.target.type === \"text\" || $(event.target).prop('contenteditable') == 'true' )) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Keypress represents characters, not special keys\n\t\t\tvar special = event.type !== \"keypress\" && jQuery.hotkeys.specialKeys[ event.which ],\n\t\t\t\tcharacter = String.fromCharCode( event.which ).toLowerCase(),\n\t\t\t\tkey, modif = \"\", possible = {};\n\n\t\t\t// check combinations (alt|ctrl|shift+anything)\n\t\t\tif ( event.altKey && special !== \"alt\" ) {\n\t\t\t\tmodif += \"alt_\";\n\t\t\t}\n\n\t\t\tif ( event.ctrlKey && special !== \"ctrl\" ) {\n\t\t\t\tmodif += \"ctrl_\";\n\t\t\t}\n\n\t\t\t// TODO: Need to make sure this works consistently across platforms\n\t\t\tif ( event.metaKey && !event.ctrlKey && special !== \"meta\" ) {\n\t\t\t\tmodif += \"meta_\";\n\t\t\t}\n\n\t\t\tif ( event.shiftKey && special !== \"shift\" ) {\n\t\t\t\tmodif += \"shift_\";\n\t\t\t}\n\n\t\t\tif ( special ) {\n\t\t\t\tpossible[ modif + special ] = true;\n\n\t\t\t} else {\n\t\t\t\tpossible[ modif + character ] = true;\n\t\t\t\tpossible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;\n\n\t\t\t\t// \"$\" can be triggered as \"Shift+4\" or \"Shift+$\" or just \"$\"\n\t\t\t\tif ( modif === \"shift_\" ) {\n\t\t\t\t\tpossible[ jQuery.hotkeys.shiftNums[ character ] ] = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = keys.length; i < l; i++ ) {\n\t\t\t\tif ( possible[ keys[i] ] ) {\n\t\t\t\t\treturn origHandler.apply( this, arguments );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tjQuery.each([ \"keydown\", \"keyup\", \"keypress\" ], function() {\n\t\tjQuery.event.special[ this ] = { add: keyHandler };\n\t});\n\n})( jQuery );\n","function turbolinksEvent() {\n // iOS app は、turbolinks:load の発火を期待するので turbo:load で発火させる\n document.addEventListener(\"turbo:load\", () => {\n const event = new CustomEvent(\"turbolinks:load\", { bubbles: true })\n document.documentElement.dispatchEvent(event)\n });\n}\nfunction shim() {\n if (window.navigator.userAgent.match(/pplog-client-ios/)) {\n turbolinksEvent();\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", shim);\n","var suggesting = null;\n\n$(document).on(\"keydown\", \".js-esarea\", function(e) {\n var title = $(e.target).val().replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\")[0];\n\n if (!title.match(/\\.md$/)) {\n return;\n }\n\n if (suggesting) {\n return;\n }\n\n switch ((e.which || e.keyCode)) {\n case 9:\n handleTabKey(e);\n break;\n case 13:\n handleEnterKey(e);\n break;\n case 32:\n handleSpaceKey(e);\n break;\n }\n\n return;\n});\n\nvar handleTabKey = function(e) {\n var reindentedCount;\n var reindentedText;\n var newPos;\n e.preventDefault();\n var currentLine = getCurrentLine(e);\n var text = $(e.target).val();\n var pos = $(e.target).selection(\"getPos\");\n\n if (currentLine) {\n $(e.target).selection(\"setPos\", {\n start: currentLine.start,\n end: (currentLine.end - 1)\n });\n }\n\n if (e.shiftKey) {\n if (currentLine && currentLine.text.charAt(0) === \"|\") {\n newPos = text.lastIndexOf(\"|\", pos.start - 1);\n\n if (newPos > 0) {\n $(e.target).selection(\"setPos\", {\n start: newPos - 1,\n end: newPos - 1\n });\n }\n } else {\n reindentedText = $(e.target).selection().replace(/^ {1,4}/gm, \"\");\n reindentedCount = $(e.target).selection().length - reindentedText.length;\n\n $(e.target).selection(\"replace\", {\n text: reindentedText,\n mode: \"before\"\n });\n\n if (currentLine) {\n $(e.target).selection(\"setPos\", {\n start: pos.start - reindentedCount,\n end: pos.start - reindentedCount\n });\n }\n }\n } else if (currentLine && currentLine.text.charAt(0) === \"|\") {\n newPos = text.indexOf(\"|\", pos.start + 1);\n\n if ((newPos < 0) || (newPos === text.lastIndexOf(\"|\", currentLine.end - 1))) {\n $(e.target).selection(\"setPos\", {\n start: currentLine.end,\n end: currentLine.end\n });\n } else {\n $(e.target).selection(\"setPos\", {\n start: newPos + 2,\n end: newPos + 2\n });\n }\n } else {\n $(e.target).selection(\"replace\", {\n text: \" \" + $(e.target).selection().split(\"\\n\").join(\"\\n \"),\n mode: \"before\"\n });\n\n if (currentLine) {\n $(e.target).selection(\"setPos\", {\n start: pos.start + 4,\n end: pos.start + 4\n });\n }\n }\n\n $(e.target).trigger(\"input\");\n};\n\nvar handleEnterKey = function(e) {\n var prevLine;\n var row;\n var currentLine;\n\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n\n if (!(currentLine = getCurrentLine(e))) {\n return;\n }\n\n if (currentLine.start === currentLine.caret) {\n return;\n }\n\n if (match = currentLine.text.match(/^(\\s*(?:-|\\+|\\*) (?:\\[(?:x| )\\] )?)\\s*\\S/)) {\n if (currentLine.text.match(/^(\\s*(?:-|\\+|\\*) (?:\\[(?:x| )\\] ))\\s*$/)) {\n $(e.target).selection(\"setPos\", {\n start: currentLine.start,\n end: (currentLine.end - 1)\n });\n\n return;\n }\n\n e.preventDefault();\n\n $(e.target).selection(\"insert\", {\n text: \"\\n\" + match[1],\n mode: \"before\"\n });\n } else if (currentLine.text.match(/^(\\s*(?:-|\\+|\\*) )/)) {\n $(e.target).selection(\"setPos\", {\n start: currentLine.start,\n end: (currentLine.end)\n });\n } else if (currentLine.text.match(/^.*\\|\\s*$/)) {\n if (currentLine.text.match(/^[\\|\\s]+$/)) {\n $(e.target).selection(\"setPos\", {\n start: currentLine.start,\n end: (currentLine.end)\n });\n\n return;\n }\n\n if (!currentLine.endOfLine) {\n return;\n }\n\n e.preventDefault();\n row = [];\n\n for (var match of currentLine.text.match(/\\|/g)) {\n row.push(\"|\");\n }\n\n prevLine = getPrevLine(e);\n\n if (!prevLine || (!currentLine.text.match(/---/) && !prevLine.text.match(/\\|/g))) {\n $(e.target).selection(\"insert\", {\n text: \"\\n\" + row.join(\" --- \") + \"\\n\" + row.join(\" \"),\n mode: \"before\"\n });\n\n $(e.target).selection(\"setPos\", {\n start: currentLine.caret + 6 * row.length - 1,\n end: currentLine.caret + 6 * row.length - 1\n });\n } else {\n $(e.target).selection(\"insert\", {\n text: \"\\n\" + row.join(\" \"),\n mode: \"before\"\n });\n\n $(e.target).selection(\"setPos\", {\n start: currentLine.caret + 3,\n end: currentLine.caret + 3\n });\n }\n }\n\n $(e.target).trigger(\"input\");\n};\n\nvar handleSpaceKey = function(e) {\n var replaceTo;\n var checkMark;\n var match;\n var currentLine;\n\n if (!(e.shiftKey && e.altKey)) {\n return;\n }\n\n if (!(currentLine = getCurrentLine(e))) {\n return;\n }\n\n if (match = currentLine.text.match(/^(\\s*)(-|\\+|\\*) (?:\\[(x| )\\] )(.*)/)) {\n e.preventDefault();\n checkMark = (match[3] === \" \" ? \"x\" : \" \");\n replaceTo = (\"\" + (match[1]) + (match[2]) + \" [\" + (checkMark) + \"] \" + (match[4]));\n\n $(e.target).selection(\"setPos\", {\n start: currentLine.start,\n end: currentLine.end\n });\n\n $(e.target).selection(\"replace\", {\n text: replaceTo,\n mode: \"keep\"\n });\n\n $(e.target).selection(\"setPos\", {\n start: currentLine.caret,\n end: currentLine.caret\n });\n\n $(e.target).trigger(\"input\");\n }\n};\n\nvar getCurrentLine = function(e) {\n var text = $(e.target).val();\n var pos = $(e.target).selection(\"getPos\");\n\n if (!text) {\n return null;\n }\n\n if (pos.start !== pos.end) {\n return null;\n }\n\n var startPos = text.lastIndexOf(\"\\n\", pos.start - 1) + 1;\n var endPos = text.indexOf(\"\\n\", pos.start);\n\n if (endPos === -1) {\n endPos = text.length;\n }\n\n return {\n text: text.slice(startPos, endPos),\n start: startPos,\n end: endPos,\n caret: pos.start,\n endOfLine: !$.trim(text.slice(pos.start, endPos))\n };\n};\n\nvar getPrevLine = function(e) {\n var currentLine = getCurrentLine(e);\n var text = $(e.target).val().slice(0, currentLine.start);\n var startPos = text.lastIndexOf(\"\\n\", currentLine.start - 2) + 1;\n var endPos = currentLine.start;\n\n return {\n text: text.slice(startPos, endPos),\n start: startPos,\n end: endPos\n };\n};\n","jQuery(function() {\n var zapping;\n zapping = new Zapping();\n});\n\nclass Zapping {\n constructor() {\n this.init();\n }\n\n init() {\n this.listen();\n this.listen_touch_end();\n }\n\n listen() {\n $(document).on(\"click\", \".zapping-button a\", e => {\n $(e.currentTarget).addClass(\"clicked\");\n });\n\n $(document).on(\n \"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\",\n \".zapping-button a\",\n function(e) {\n $(e.currentTarget).removeClass(\"clicked\");\n }\n );\n\n $(document).on(\"click\", \".zapping-button a:not([href^='#'])\", e => {\n e.preventDefault();\n this.next_nicknames();\n });\n }\n\n listen_touch_end() {\n $(document).on(\"touchend\", e => {\n var selection = $.selection();\n\n if (selection) {\n this.selection = selection;\n }\n });\n }\n\n next_nicknames() {\n if (this.nicknames.length === 0) {\n $.ajax({\n url: \"/zappings\",\n dataType: \"json\",\n\n success: json => {\n if (json.nicknames.length === 0) {\n Turbo.visit(\"/\");\n } else {\n this.nicknames = json.nicknames;\n this.visit(this.nicknames.shift());\n }\n }\n });\n } else {\n this.visit(this.nicknames.shift());\n }\n }\n\n visit(nickname) {\n Turbo.visit((\"/u/\" + (nickname)));\n }\n}\n\nZapping.prototype.selection = \"\";\nZapping.prototype.nicknames = [];\n","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n 'use strict';\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
    ',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

    '\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","document.addEventListener(\"turbo:load\", function() {\n if (!document.querySelector(\".code-block .mathjax\")) {\n return;\n }\n\n if (window.MathJax) {\n MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n } else {\n window.MathJax = {\n showProcessingMessages: false,\n\n tex2jax: {\n inlineMath: [[\"$\", \"$\"], [\"\\\\(\", \"\\\\)\"]],\n displayMath: [[\"$$\", \"$$\"], [\"\\\\[\", \"\\\\]\"]],\n processEscapes: true,\n processEnvironments: false,\n processRefs: false,\n\n skipTags: [\n \"script\",\n \"noscript\",\n \"style\",\n \"textarea\",\n \"pre\",\n \"code\",\n \"annotation\",\n \"annotation-xml\"\n ]\n }\n };\n\n $.getScript(\n \"https://assets.esa.io/vendor/MathJax/2.6.1/MathJax.js?config=TeX-AMS_HTML-full\"\n );\n }\n});\n","document.addEventListener(\"turbo:load\", function() {\n var imageField = document.querySelector(\"#js-upload-image\");\n\n if ((!imageField)) {\n return;\n }\n\n document.querySelector(\"form\").addEventListener(\"drop\", function(e) {\n e.preventDefault();\n e.stopPropagation();\n document.querySelector(\"#js-upload-image\").files = e.dataTransfer.files;\n var file = document.querySelector(\"#js-upload-image\").files[0];\n previewUploadImage(file);\n });\n\n document.querySelector(\"#js-upload-image\").addEventListener(\"change\", function(e) {\n var file = e.target.files[0];\n previewUploadImage(file);\n });\n\n var previewUploadImage = function(file) {\n document.querySelector(\"#js-image-remove\").setAttribute(\"value\", \"\");\n var reader = new FileReader();\n var preview = document.querySelector(\"#js-upload-image-preview\");\n\n reader.onload = (function(file) {\n return function(e) {\n var img = preview.querySelector(\"img\") || document.createElement(\"img\");\n img.setAttribute(\"class\", \"image-responsive\");\n img.setAttribute(\"src\", e.target.result);\n img.setAttribute(\"width\", \"100px\");\n img.setAttribute(\"title\", file.name);\n preview.appendChild(img);\n preview.classList.remove(\"hidden\");\n };\n })(file);\n\n reader.readAsDataURL(file);\n };\n\n document.querySelector(\"#js-upload-image-remove\").addEventListener(\"click\", function(e) {\n document.querySelector(\"#js-upload-image\").value = \"\";\n document.querySelector(\"#js-image-remove\").setAttribute(\"value\", \"1\");\n document.querySelector(\"#js-upload-image-preview\").classList.add(\"hidden\");\n });\n});\n","\"use strict\";!function(){function keydown(e){var id,k=e?e.keyCode:event.keyCode;if(!held[k]){held[k]=!0;for(id in sequences)sequences[id].keydown(k)}}function keyup(e){var k=e?e.keyCode:event.keyCode;held[k]=!1}function reset(){var k;for(k in held)held[k]=!1}function on(obj,type,fn){obj.addEventListener?obj.addEventListener(type,fn,!1):obj.attachEvent&&(obj[\"e\"+type+fn]=fn,obj[type+fn]=function(){obj[\"e\"+type+fn](window.event)},obj.attachEvent(\"on\"+type,obj[type+fn]))}var cheet,Sequence,sequences={},keys={backspace:8,tab:9,enter:13,\"return\":13,shift:16,\"⇧\":16,control:17,ctrl:17,\"⌃\":17,alt:18,option:18,\"⌥\":18,pause:19,capslock:20,esc:27,space:32,pageup:33,pagedown:34,end:35,home:36,left:37,L:37,\"←\":37,up:38,U:38,\"↑\":38,right:39,R:39,\"→\":39,down:40,D:40,\"↓\":40,insert:45,\"delete\":46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,\"⌘\":91,command:91,kp_0:96,kp_1:97,kp_2:98,kp_3:99,kp_4:100,kp_5:101,kp_6:102,kp_7:103,kp_8:104,kp_9:105,kp_multiply:106,kp_plus:107,kp_minus:109,kp_decimal:110,kp_divide:111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,equal:187,\"=\":187,comma:188,\",\":188,minus:189,\"-\":189,period:190,\".\":190},NOOP=function(){},held={};Sequence=function(str,next,fail,done){var i;for(this.str=str,this.next=next?next:NOOP,this.fail=fail?fail:NOOP,this.done=done?done:NOOP,this.seq=str.split(\" \"),this.keys=[],i=0;i0&&(this.idx=0,this.fail(this.str),cheet.__fail(this.str)),void 0):(this.next(this.str,this.seq[i],i,this.seq),cheet.__next(this.str,this.seq[i],i,this.seq),++this.idx===this.keys.length&&(this.done(this.str),cheet.__done(this.str),this.idx=0),void 0)},cheet=function(str,handlers){var next,fail,done;\"function\"==typeof handlers?done=handlers:null!=handlers&&(next=handlers.next,fail=handlers.fail,done=handlers.done),sequences[str]=new Sequence(str,next,fail,done)},cheet.disable=function(str){delete sequences[str]},on(window,\"keydown\",keydown),on(window,\"keyup\",keyup),on(window,\"blur\",reset),on(window,\"focus\",reset),cheet.__next=NOOP,cheet.next=function(fn){cheet.__next=null===fn?NOOP:fn},cheet.__fail=NOOP,cheet.fail=function(fn){cheet.__fail=null===fn?NOOP:fn},cheet.__done=NOOP,cheet.done=function(fn){cheet.__done=null===fn?NOOP:fn},window.cheet=cheet,\"undefined\"!=typeof module&&(module.exports=cheet)}();","// onScreen jQuery plugin v0.2.1\n// (c) 2011-2013 Ben Pickles\n//\n// http://benpickles.github.io/onScreen\n//\n// Released under MIT license.\n;(function($) {\n $.expr[\":\"].onScreen = function(elem) {\n var $window = $(window)\n var viewport_top = $window.scrollTop()\n var viewport_height = $window.height()\n var viewport_bottom = viewport_top + viewport_height\n var $elem = $(elem)\n var top = $elem.offset().top\n var height = $elem.height()\n var bottom = top + height\n\n return (top >= viewport_top && top < viewport_bottom) ||\n (bottom > viewport_top && bottom <= viewport_bottom) ||\n (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom)\n }\n})(jQuery);\n","var map = {\n\t\"./VAG_Rounded_Bold.ttf\": 4139,\n\t\"./inuicon.eot\": 5496,\n\t\"./inuicon.svg\": 4022,\n\t\"./inuicon.ttf\": 5042,\n\t\"./inuicon.woff\": 8802\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 8063;","var map = {\n\t\"./apple-touch-icon.png\": 5950,\n\t\"./fa-shopping-cart.svg\": 6406,\n\t\"./favicon.ico\": 6498,\n\t\"./grass.svg\": 2465,\n\t\"./pplog_mola.svg\": 1557,\n\t\"./pplog_mola_footer.svg\": 2681,\n\t\"./team/fakestarbaby.png\": 3589,\n\t\"./team/fukayatsu.png\": 1863,\n\t\"./team/genuinebluejp.png\": 5561,\n\t\"./team/ken_c_lo.jpg\": 3386,\n\t\"./team/ppworks.jpg\": 7982,\n\t\"./team/satococoa.png\": 7684,\n\t\"./top/banner_android.svg\": 4351,\n\t\"./top/banner_android_gray.svg\": 2351,\n\t\"./top/banner_ios.svg\": 1501,\n\t\"./top/banner_ios_gray.svg\": 6605,\n\t\"./top/footstamps.svg\": 3017,\n\t\"./top/grass.svg\": 3301,\n\t\"./top/no.svg\": 3552,\n\t\"./top/xmas_footstamps.svg\": 8103,\n\t\"./top/xmas_tree_top.svg\": 6087,\n\t\"./unknown_user.png\": 4710,\n\t\"./xmas_tree_shadow.svg\": 9058\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 8257;","/*!\n * jQuery.selection - jQuery Plugin\n *\n * Copyright (c) 2010-2012 IWASAKI Koji (@madapaja).\n * http://blog.madapaja.net/\n * Under The MIT License\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n(function($, win, doc) {\n /**\n * 要素の文字列選択状態を取得します\n *\n * @param {Element} element 対象要素\n * @return {Object} return\n * @return {String} return.text 選択されている文字列\n * @return {Integer} return.start 選択開始位置\n * @return {Integer} return.end 選択終了位置\n */\n var _getCaretInfo = function(element){\n var res = {\n text: '',\n start: 0,\n end: 0\n };\n\n if (!element.value) {\n /* 値がない、もしくは空文字列 */\n return res;\n }\n\n try {\n if (win.getSelection) {\n /* IE 以外 */\n res.start = element.selectionStart;\n res.end = element.selectionEnd;\n res.text = element.value.slice(res.start, res.end);\n } else if (doc.selection) {\n /* for IE */\n element.focus();\n\n var range = doc.selection.createRange(),\n range2 = doc.body.createTextRange(),\n tmpLength;\n\n res.text = range.text;\n\n try {\n range2.moveToElementText(element);\n range2.setEndPoint('StartToStart', range);\n } catch (e) {\n range2 = element.createTextRange();\n range2.setEndPoint('StartToStart', range);\n }\n\n res.start = element.value.length - range2.text.length;\n res.end = res.start + range.text.length;\n }\n } catch (e) {\n /* あきらめる */\n }\n\n return res;\n };\n\n /**\n * 要素に対するキャレット操作\n * @type {Object}\n */\n var _CaretOperation = {\n /**\n * 要素のキャレット位置を取得します\n *\n * @param {Element} element 対象要素\n * @return {Object} return\n * @return {Integer} return.start 選択開始位置\n * @return {Integer} return.end 選択終了位置\n */\n getPos: function(element) {\n var tmp = _getCaretInfo(element);\n return {start: tmp.start, end: tmp.end};\n },\n\n /**\n * 要素のキャレット位置を設定します\n *\n * @param {Element} element 対象要素\n * @param {Object} toRange 設定するキャレット位置\n * @param {Integer} toRange.start 選択開始位置\n * @param {Integer} toRange.end 選択終了位置\n * @param {String} caret キャレットモード \"keep\" | \"start\" | \"end\" のいずれか\n */\n setPos: function(element, toRange, caret) {\n caret = this._caretMode(caret);\n\n if (caret == 'start') {\n toRange.end = toRange.start;\n } else if (caret == 'end') {\n toRange.start = toRange.end;\n }\n\n element.focus();\n try {\n if (element.createTextRange) {\n var range = element.createTextRange();\n\n if (win.navigator.userAgent.toLowerCase().indexOf(\"msie\") >= 0) {\n toRange.start = element.value.substr(0, toRange.start).replace(/\\r/g, '').length;\n toRange.end = element.value.substr(0, toRange.end).replace(/\\r/g, '').length;\n }\n\n range.collapse(true);\n range.moveStart('character', toRange.start);\n range.moveEnd('character', toRange.end - toRange.start);\n\n range.select();\n } else if (element.setSelectionRange) {\n element.setSelectionRange(toRange.start, toRange.end);\n }\n } catch (e) {\n /* あきらめる */\n }\n },\n\n /**\n * 要素内の選択文字列を取得します\n *\n * @param {Element} element 対象要素\n * @return {String} return 選択文字列\n */\n getText: function(element) {\n return _getCaretInfo(element).text;\n },\n\n /**\n * キャレットモードを選択します\n *\n * @param {String} caret キャレットモード\n * @return {String} return \"keep\" | \"start\" | \"end\" のいずれか\n */\n _caretMode: function(caret) {\n caret = caret || \"keep\";\n if (caret == false) {\n caret = 'end';\n }\n\n switch (caret) {\n case 'keep':\n case 'start':\n case 'end':\n break;\n\n default:\n caret = 'keep';\n }\n\n return caret;\n },\n\n /**\n * 選択文字列を置き換えます\n *\n * @param {Element} element 対象要素\n * @param {String} text 置き換える文字列\n * @param {String} caret キャレットモード \"keep\" | \"start\" | \"end\" のいずれか\n */\n replace: function(element, text, caret) {\n var tmp = _getCaretInfo(element),\n orig = element.value,\n pos = $(element).scrollTop(),\n range = {start: tmp.start, end: tmp.start + text.length};\n\n element.value = orig.substr(0, tmp.start) + text + orig.substr(tmp.end);\n\n $(element).scrollTop(pos);\n this.setPos(element, range, caret);\n },\n\n /**\n * 文字列を選択文字列の前に挿入します\n *\n * @param {Element} element 対象要素\n * @param {String} text 挿入文字列\n * @param {String} caret キャレットモード \"keep\" | \"start\" | \"end\" のいずれか\n */\n insertBefore: function(element, text, caret) {\n var tmp = _getCaretInfo(element),\n orig = element.value,\n pos = $(element).scrollTop(),\n range = {start: tmp.start + text.length, end: tmp.end + text.length};\n\n element.value = orig.substr(0, tmp.start) + text + orig.substr(tmp.start);\n\n $(element).scrollTop(pos);\n this.setPos(element, range, caret);\n },\n\n /**\n * 文字列を選択文字列の後に挿入します\n *\n * @param {Element} element 対象要素\n * @param {String} text 挿入文字列\n * @param {String} caret キャレットモード \"keep\" | \"start\" | \"end\" のいずれか\n */\n insertAfter: function(element, text, caret) {\n var tmp = _getCaretInfo(element),\n orig = element.value,\n pos = $(element).scrollTop(),\n range = {start: tmp.start, end: tmp.end};\n\n element.value = orig.substr(0, tmp.end) + text + orig.substr(tmp.end);\n\n $(element).scrollTop(pos);\n this.setPos(element, range, caret);\n }\n };\n\n /* jQuery.selection を追加 */\n $.extend({\n /**\n * ウィンドウの選択されている文字列を取得\n *\n * @param {String} mode 選択モード \"text\" | \"html\" のいずれか\n * @return {String} return\n */\n selection: function(mode) {\n var getText = ((mode || 'text').toLowerCase() == 'text');\n\n try {\n if (win.getSelection) {\n if (getText) {\n // get text\n return win.getSelection().toString();\n } else {\n // get html\n var sel = win.getSelection(), range;\n\n if (sel.getRangeAt) {\n range = sel.getRangeAt(0);\n } else {\n range = doc.createRange();\n range.setStart(sel.anchorNode, sel.anchorOffset);\n range.setEnd(sel.focusNode, sel.focusOffset);\n }\n\n return $('
    ').append(range.cloneContents()).html();\n }\n } else if (doc.selection) {\n if (getText) {\n // get text\n return doc.selection.createRange().text;\n } else {\n // get html\n return doc.selection.createRange().htmlText;\n }\n }\n } catch (e) {\n /* あきらめる */\n }\n\n return '';\n }\n });\n\n /* selection を追加 */\n $.fn.extend({\n selection: function(mode, opts) {\n opts = opts || {};\n\n switch (mode) {\n /**\n * selection('getPos')\n * キャレット位置を取得します\n *\n * @return {Object} return\n * @return {Integer} return.start 選択開始位置\n * @return {Integer} return.end 選択終了位置\n */\n case 'getPos':\n return _CaretOperation.getPos(this[0]);\n break;\n\n /**\n * selection('setPos', opts)\n * キャレット位置を設定します\n *\n * @param {Integer} opts.start 選択開始位置\n * @param {Integer} opts.end 選択終了位置\n */\n case 'setPos':\n return this.each(function() {\n _CaretOperation.setPos(this, opts);\n });\n break;\n\n /**\n * selection('replace', opts)\n * 選択文字列を置き換えます\n *\n * @param {String} opts.text 置き換える文字列\n * @param {String} opts.caret キャレットモード \"keep\" | \"start\" | \"end\" のいずれか\n */\n case 'replace':\n return this.each(function() {\n _CaretOperation.replace(this, opts.text, opts.caret);\n });\n break;\n\n /**\n * selection('insert', opts)\n * 選択文字列の前、もしくは後に文字列を挿入えます\n *\n * @param {String} opts.text 挿入文字列\n * @param {String} opts.caret キャレットモード \"keep\" | \"start\" | \"end\" のいずれか\n * @param {String} opts.mode 挿入モード \"before\" | \"after\" のいずれか\n */\n case 'insert':\n return this.each(function() {\n if (opts.mode == 'before') {\n _CaretOperation.insertBefore(this, opts.text, opts.caret);\n } else {\n _CaretOperation.insertAfter(this, opts.text, opts.caret);\n }\n });\n\n break;\n\n /**\n * selection('get')\n * 選択されている文字列を取得\n *\n * @return {String} return\n */\n case 'get':\n default:\n return _CaretOperation.getText(this[0]);\n break;\n }\n\n return this;\n }\n });\n})(jQuery, window, window.document);\n","jQuery(function() {\n var post = new Post();\n\n $(document).on(\"turbo:load, turbo:render\", function() {\n if (!$(\"body\").hasClass(\"post\")) {\n return;\n }\n\n post.init();\n });\n});\n\nclass Post {\n constructor() {}\n\n init() {\n if (rack_env !== \"test\" && window.twttr) {\n twttr.widgets.load();\n }\n\n this.listen();\n\n if ($(\"body\").hasClass(\"post-form\")) {\n if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {\n location.hash = \"#new_post\";\n }\n\n $(\"form#new_post, form#edit_post\").find(\"#post_content\").focus();\n }\n }\n\n listen() {\n this.listen_preview();\n this.listen_submit();\n this.listen_close();\n\n if (window.localStorage) {\n this.listen_content();\n }\n\n this.listen_mail_regenerator();\n }\n\n listen_preview() {\n $(\"a.preview\").on(\"click\", function(e) {\n e.preventDefault();\n var post_content = $(\"#new_post textarea[name=\\\"post[content]\\\"]\").val();\n $(\"#preview_post input[name=\\\"post[content]\\\"]\").val(post_content);\n $(\"#preview_post\").submit();\n });\n }\n\n listen_submit() {\n $(document).on(\"submit\", function(e) {\n $(window).off(\"beforeunload\");\n });\n }\n\n listen_close() {\n $(window).on(\"beforeunload\", function(e) {\n if ($(\"#js-post-content\").val() === \"\") {\n return;\n }\n\n $(\"form[data-close-confirmation]\").attr(\"data-close-confirmation\");\n });\n }\n\n listen_content() {\n var expires = new Date(window.localStorage.getItem(\"poem.expire\"));\n\n if ((new Date() < expires)) {\n $(\"textarea[name=\\\"post[content]\\\"]\").val(window.localStorage.getItem(\"poem.content\"));\n }\n\n $(\"textarea[name=\\\"post[content]\\\"]\").on(\"keyup\", function(e) {\n window.localStorage.setItem(\"poem.content\", $(e.currentTarget).val());\n expires = new Date();\n expires.setMinutes((new Date()).getMinutes() + 30);\n window.localStorage.setItem(\"poem.expire\", expires);\n });\n\n $(document).on(\"submit\", function(e) {\n window.localStorage.removeItem(\"poem.content\");\n window.localStorage.removeItem(\"poem.expire\");\n });\n }\n\n listen_mail_regenerator() {\n $(\"#js-mail-regenerator\").on(\"ajax:success\", function(e) {\n $(\"#js-email-to-post\").html(e.detail[0].user.email_to_post).addClass(\"flash\");\n\n setTimeout(function() {\n $(\"#js-email-to-post\").removeClass(\"flash\");\n }, 300);\n });\n }\n}\n","jQuery(function() {\n $(document).on(\"click\", \"a.ignore\", function(e) {\n e.preventDefault();\n });\n\n $(document).on(\"submit\", \"form.search_poem\", function(e) {\n e.preventDefault();\n var nickname = $(this).find(\"input[name=\\\"nickname\\\"]\").val().replace(/@/, \"\");\n\n if (!nickname) {\n return;\n }\n\n location.href = (\"/u/\" + (nickname));\n });\n\n $(document).on(\"click\", \".star-toggle a.trigger\", function(e) {\n e.preventDefault();\n $(e.currentTarget).closest(\".star-container\").find(\".star-toggle\").toggleClass(\"hidden\");\n });\n\n $(document).on(\"click\", \".star-toggle a.trigger.open\", function(e) {\n var scroll_top;\n scroll_top = $(\"body\").scrollTop();\n });\n\n $(document).on(\"click\", \".star-toggle a.trigger.close\", function(e) {\n var $li_post = $(e.currentTarget).closest(\".js-user-post\");\n\n if (!$li_post.find(\".user-name:first\").is(\":onScreen\")) {\n $(window).scrollTop($li_post.offset().top);\n }\n });\n\n if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {\n if (window.navigator.language.match(/ja/)) {\n document.title = \"ポエム\";\n } else {\n document.title = \"Poem\";\n }\n }\n\n $(document).on(\"click\", \".js-followee\", function(e) {\n var url = $(e.currentTarget).attr(\"href\");\n $((\"a[href='\" + (url) + \"']\")).removeClass(\"new-icon\");\n });\n\n $(document).on(\"turbo:load\", function() {\n if ($(\"blockquote.instagram-media\").length > 0) {\n window.instgrm.Embeds.process();\n }\n });\n});\n","jQuery(function() {\n var keyboardShortcut;\n keyboardShortcut = new KeyboardShortcut();\n});\n\nclass KeyboardShortcut {\n constructor() {\n this.init();\n }\n\n init() {\n this.listen();\n\n this.faces = [\n \"( ˘ω˘)\",\n \"٩( ˘ω˘ )و\",\n \"₍₍ (̨̡ ‾᷄⌂‾᷅)̧̢ ₎₎\",\n \"(εωз)\",\n \"ポエ\\\\\\ ٩( ˘ω˘ )و ////ポエ\",\n \"₍₍ (̨̡ ˘ω˘)̧̢ ₎₎ ₍₍ (̨̡˘ω˘ )̧̢ ₎₎\",\n \"ヾ(*’ω’*)ノ゙\",\n \"₍₍ (̨̡ ‾᷄⌂‾᷅)̧̢ ₎₎\",\n \"|˘ω˘)\\\"\"\n ];\n }\n\n listen() {\n cheet(\"↑ ↑ ↓ ↓ ← → ← → b a\", function() {\n $(\".zapping-button a i\").addClass(\"icon-shachihoko\");\n $(\".zapping-button a\").addClass(\"clicked\");\n\n setTimeout(function() {\n $(\".zapping-button a\").removeClass(\"clicked\");\n }, 300);\n });\n\n $(document).on(\"keydown\", \"body\", e => {\n if (e.metaKey) {\n return;\n }\n\n if (e.ctrlKey) {\n return;\n }\n\n if (e.altKey) {\n return;\n }\n\n if (e.shiftKey) {\n return;\n }\n\n if ($(\"input, textarea, selectbox\").is(\":focus\")) {\n return;\n }\n\n switch (e.key) {\n case 'f':\n case 'z':\n document.querySelector(\".zapping-button a\")?.click();\n break;\n case 'd':\n document.querySelector(\"a.post-star:not(.disabled)\")?.click();\n break;\n case 'h':\n location.href = \"/\";\n break;\n case 'n':\n location.href = \"/my/posts/new\";\n break;\n case 'p':\n $(\"head title\").html(this.faces[Math.floor(Math.random() * this.faces.length)]);\n break;\n case 's':\n document.querySelector(\"form#follow:not(.hidden) .follow.btn\")?.click();\n break;\n case 'j':\n window.scrollBy(0, 15);\n break;\n case 'k':\n window.scrollBy(0, -15);\n break;\n }\n });\n }\n}\n\nKeyboardShortcut.prototype.faces = null;\n"],"names":["jQuery","Following","_classCallCheck","this","init","key","value","listen","listen_follow","listen_following","_this","$","document","on","follow_toggle_selector","e","toggleClass","rack_env","trigger_hover_event","_this2","currentTarget","hide","show","prototype","Star","highlight_my_footprint","nickname","data","$icon_footprint","addClass","hasClass","closest","find","removeClass","listen_click_star","listen_post","listen_touch_end","listen_edit_star","append","selection","params","URLSearchParams","content","dataset","toString","html","originalEvent","detail","replaceWith","setTimeout","click","window","location","reload","popover","tooltip","require","PPLOG","Rails","start","addEventListener","Turbo","setProgressBarDelay","event","_document$querySelect","fetchOptions","headers","querySelector","querySelectorAll","forEach","element","setAttribute","nonce","animate","height","padding","remove","themeColor","ThemeColor","change","keyHandler","handleObj","origHandler","handler","keys","namespace","toLowerCase","split","map","length","substring","target","test","nodeName","type","prop","special","hotkeys","specialKeys","which","character","String","fromCharCode","modif","possible","altKey","ctrlKey","metaKey","shiftKey","shiftNums","i","l","apply","arguments","version","each","add","navigator","userAgent","match","CustomEvent","bubbles","documentElement","dispatchEvent","val","replace","keyCode","handleTabKey","handleEnterKey","handleSpaceKey","reindentedCount","reindentedText","newPos","preventDefault","currentLine","getCurrentLine","text","pos","end","charAt","lastIndexOf","mode","indexOf","join","trigger","prevLine","row","caret","endOfLine","_step","_iterator","_createForOfIteratorHelper","s","n","done","push","err","f","getPrevLine","replaceTo","checkMark","startPos","endPos","slice","trim","Zapping","next_nicknames","_this3","nicknames","ajax","url","dataType","success","json","visit","shift","Error","fn","jquery","emulateTransitionEnd","duration","called","$el","one","support","transition","el","createElement","transEndEventNames","WebkitTransition","MozTransition","OTransition","name","undefined","style","transitionEnd","bsTransitionEnd","bindType","delegateType","handle","is","dismiss","Alert","close","VERSION","TRANSITION_DURATION","$this","selector","attr","$parent","removeElement","detach","Event","isDefaultPrevented","old","alert","option","call","Constructor","noConflict","Button","options","$element","extend","DEFAULTS","isLoading","Plugin","toggle","setState","loadingText","state","d","resetText","proxy","removeAttr","changed","$input","button","$btn","first","Carousel","$indicators","paused","sliding","interval","$active","$items","keyboard","keydown","pause","cycle","action","slide","to","wrap","tagName","prev","next","clearInterval","setInterval","getItemIndex","item","parent","children","index","getItemForDirection","direction","active","activeIndex","itemIndex","eq","that","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","carousel","clickHandler","href","$target","slideIndex","$carousel","Collapse","$trigger","id","transitioning","getParent","addAriaAndCollapsedClass","getTargetFromTrigger","dimension","activesData","actives","startEvent","complete","scrollSize","camelCase","offsetHeight","isOpen","collapse","Dropdown","clearMenus","contains","isActive","insertAfter","stopPropagation","dropdown","Modal","$body","body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","fixedContent","remote","load","_relatedTarget","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","escape","resize","appendTo","scrollTop","adjustDialog","enforceFocus","off","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","callback","doAnimate","focus","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","css","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","right","Math","abs","left","clientWidth","measureScrollbar","bodyPad","parseInt","actualPadding","calculatedPadding","parseFloat","removeData","scrollDiv","className","removeChild","modal","showEvent","DISALLOWED_ATTRIBUTES","uriAttrs","DefaultWhitelist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","inArray","Boolean","nodeValue","regExp","filter","RegExp","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","implementation","createHTMLDocument","createdDocument","innerHTML","whitelistKeys","elements","len","elName","attributeList","attributes","whitelistedAttributes","concat","j","len2","removeAttribute","parentNode","Tooltip","enabled","timeout","hoverState","inState","animation","placement","template","title","delay","container","viewport","sanitize","getOptions","$viewport","isFunction","hover","constructor","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","dataAttributes","dataAttr","hasOwnProperty","getDelegateOptions","defaults","obj","self","tip","clearTimeout","isInStateTrue","hasContent","inDom","ownerDocument","$tip","tipId","getUID","setContent","autoToken","autoPlace","top","display","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","bottom","width","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","offset","marginTop","marginLeft","isNaN","setOffset","using","props","round","delta","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","$e","isBody","elRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","random","getElementById","$arrow","enable","disable","toggleEnabled","destroy","Popover","getContent","typeContent","ScrollSpy","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","max","offsetMethod","offsetBase","isWindow","$href","sort","maxScroll","activate","clear","parents","parentsUntil","scrollspy","$spy","Tab","$ul","$previous","hideEvent","tab","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetTop","offsetBottom","position","targetHeight","initializing","colliderTop","getPinnedOffset","affix","affixType","MathJax","Hub","Queue","showProcessingMessages","tex2jax","inlineMath","displayMath","processEscapes","processEnvironments","processRefs","skipTags","getScript","files","dataTransfer","file","previewUploadImage","reader","FileReader","preview","onload","result","appendChild","classList","readAsDataURL","reset","k","held","attachEvent","cheet","Sequence","sequences","backspace","control","ctrl","alt","capslock","esc","space","pageup","pagedown","home","L","up","U","R","down","D","insert","c","g","h","m","q","r","t","v","w","x","y","z","command","kp_0","kp_1","kp_2","kp_3","kp_4","kp_5","kp_6","kp_7","kp_8","kp_9","kp_multiply","kp_plus","kp_minus","kp_decimal","kp_divide","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","equal","comma","minus","period","NOOP","str","fail","seq","idx","__fail","__next","__done","handlers","module","exports","expr","onScreen","elem","$window","viewport_top","viewport_height","viewport_bottom","$elem","webpackContext","req","webpackContextResolve","__webpack_require__","Object","resolve","win","doc","_getCaretInfo","res","getSelection","selectionStart","selectionEnd","range","createRange","range2","createTextRange","moveToElementText","setEndPoint","_CaretOperation","getPos","tmp","setPos","toRange","_caretMode","substr","moveStart","moveEnd","select","setSelectionRange","getText","orig","insertBefore","sel","getRangeAt","setStart","anchorNode","anchorOffset","setEnd","focusNode","focusOffset","cloneContents","htmlText","opts","post","Post","twttr","widgets","hash","listen_preview","listen_submit","listen_close","localStorage","listen_content","listen_mail_regenerator","post_content","submit","expires","Date","getItem","setItem","setMinutes","getMinutes","removeItem","user","email_to_post","$li_post","language","instgrm","Embeds","KeyboardShortcut","faces","_document$querySelect2","_document$querySelect3","floor","scrollBy"],"sourceRoot":""}