Skip to content

Instantly share code, notes, and snippets.

@mpetroff
Last active July 5, 2016 02:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mpetroff/7601c14adbde2800e553cce2eee9292e to your computer and use it in GitHub Desktop.
Save mpetroff/7601c14adbde2800e553cce2eee9292e to your computer and use it in GitHub Desktop.
/* Pannellum 0b04d18, https://github.com/mpetroff/pannellum */
.pnlm-container{margin:0;padding:0;overflow:hidden;position:relative;cursor:default;width:100%;height:100%;font-family:Helvetica,"Nimbus Sans L","Liberation Sans",Arial,sans-serif;background:#f4f4f4 url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2267%22%20height%3D%22100%22%20viewBox%3D%220%200%2067%20100%22%3E%0A%3Cpath%20stroke%3D%22%23ccc%22%20fill%3D%22none%22%20d%3D%22M33.5%2C50%2C0%2C63%2C33.5%2C75%2C67%2C63%2C33.5%2C50m-33.5-50%2C67%2C25m-0.5%2C0%2C0%2C75m-66.5-75%2C67-25m-33.5%2C75%2C0%2C25m0-100%2C0%2C50%22%2F%3E%0A%3C%2Fsvg%3E%0A') repeat;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none;outline:0;line-height:1.4}.pnlm-container *{box-sizing:content-box}.pnlm-grab{cursor:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2226%22%20width%3D%2226%22%3E%0A%3Cpath%20stroke%3D%22%23000%22%20stroke-width%3D%221px%22%20fill%3D%22%23fff%22%20d%3D%22m15.3%2020.5s6.38-6.73%204.64-8.24-3.47%201.01-3.47%201.01%203.61-5.72%201.41-6.49c-2.2-0.769-3.33%204.36-3.33%204.36s0.873-5.76-1.06-5.76-1.58%205.39-1.58%205.39-0.574-4.59-2.18-4.12c-1.61%200.468-0.572%205.51-0.572%205.51s-1.58-4.89-2.93-3.79c-1.35%201.11%200.258%205.25%200.572%206.62%200.836%202.43%202.03%202.94%202.17%205.55%22%2F%3E%0A%3C%2Fsvg%3E%0A') 12 8,default}.pnlm-grabbing{cursor:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2226%22%20width%3D%2226%22%3E%0A%3Cpath%20stroke%3D%22%23000%22%20stroke-width%3D%221px%22%20fill%3D%22%23fff%22%20d%3D%22m15.3%2020.5s5.07-5.29%203.77-6.74c-1.31-1.45-2.53%200.14-2.53%200.14s2.74-3.29%200.535-4.06c-2.2-0.769-2.52%201.3-2.52%201.3s0.81-2.13-1.12-2.13-1.52%201.77-1.52%201.77-0.261-1.59-1.87-1.12c-1.61%200.468-0.874%202.17-0.874%202.17s-0.651-1.55-2-0.445c-1.35%201.11-0.68%202.25-0.365%203.62%200.836%202.43%202.03%202.94%202.17%205.55%22%2F%3E%0A%3C%2Fsvg%3E%0A') 12 8,default}.pnlm-sprite{background-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2226%22%20height%3D%22182%22%3E%0A%3Ccircle%20fill-opacity%3D%22.78%22%20cy%3D%22117%22%20cx%3D%2213%22%20r%3D%2211%22%20fill%3D%22%23fff%22%2F%3E%0A%3Ccircle%20fill-opacity%3D%22.78%22%20cy%3D%22143%22%20cx%3D%2213%22%20r%3D%2211%22%20fill%3D%22%23fff%22%2F%3E%0A%3Ccircle%20cy%3D%22169%22%20cx%3D%2213%22%20r%3D%227%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%2F%3E%0A%3Cpath%20d%3D%22m5%2083v6h2v-4h4v-2zm10%200v2h4v4h2v-6zm-5%205v6h6v-6zm-5%205v6h6v-2h-4v-4zm14%200v4h-4v2h6v-6z%22%2F%3E%0A%3Cpath%20d%3D%22m13%20110a7%207%200%200%200%20-7%207%207%207%200%200%200%207%207%207%207%200%200%200%207%20-7%207%207%200%200%200%20-7%20-7zm-1%203h2v2h-2zm0%203h2v5h-2z%22%2F%3E%0A%3Cpath%20d%3D%22m5%2057v6h2v-4h4v-2zm10%200v2h4v4h2v-6zm-10%2010v6h6v-2h-4v-4zm14%200v4h-4v2h6v-6z%22%2F%3E%0A%3Cpath%20d%3D%22m17%2038v2h-8v-2z%22%2F%3E%0A%3Cpath%20d%3D%22m12%209v3h-3v2h3v3h2v-3h3v-2h-3v-3z%22%2F%3E%0A%3Cpath%20d%3D%22m13%20136-6.125%206.125h4.375v7.875h3.5v-7.875h4.375z%22%2F%3E%0A%3Cpath%20d%3D%22m10.428%20173.33v-5.77l5-2.89v5.77zm1-1.73%203-1.73-3.001-1.74z%22%2F%3E%0A%3C%2Fsvg%3E%0A')}.pnlm-container:-moz-full-screen{height:100%!important;width:100%!important}.pnlm-container:-webkit-full-screen{height:100%!important;width:100%!important}.pnlm-container:fullscreen{height:100%!important;width:100%!important}.pnlm-render-container{cursor:inherit;position:absolute;height:100%;width:100%}.pnlm-controls{margin-top:4px;background-color:#fff;border:1px solid #999;border-color:rgba(0,0,0,0.4);border-radius:3px;cursor:pointer;z-index:2;-webkit-transform:translateZ(9999px);transform:translateZ(9999px)}.pnlm-control:hover{background-color:#f8f8f8}.pnlm-controls-container{position:absolute;top:0;left:4px;z-index:1}.pnlm-zoom-controls{width:26px;height:52px}.pnlm-zoom-in{width:100%;height:50%;position:absolute;top:0;border-radius:3px 3px 0 0}.pnlm-zoom-out{width:100%;height:50%;position:absolute;bottom:0;background-position:0 -26px;border-top:1px solid #ddd;border-top-color:rgba(0,0,0,0.10);border-radius:0 0 3px 3px}.pnlm-fullscreen-toggle-button,.pnlm-orientation-button{width:26px;height:26px;background-position:0 -156px}.pnlm-fullscreen-toggle-button-inactive{background-position:0 -52px}.pnlm-fullscreen-toggle-button-active{background-position:0 -78px}.pnlm-panorama-info{position:absolute;bottom:4px;background-color:rgba(0,0,0,0.7);border-radius:0 3px 3px 0;padding-right:10px;color:#fff;text-align:left;display:none;z-index:2;-webkit-transform:translateZ(9999px);transform:translateZ(9999px)}.pnlm-title-box{position:relative;font-size:20px;display:table;padding-left:5px;margin-bottom:3px}.pnlm-author-box{position:relative;font-size:12px;display:table;padding-left:5px}.pnlm-load-box{position:absolute;top:50%;left:50%;width:200px;height:150px;margin:-75px 0 0 -100px;background-color:rgba(0,0,0,0.7);border-radius:3px;text-align:center;font-size:20px;display:none;color:#fff}.pnlm-load-box p{margin:20px 0}.pnlm-lbox{position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;display:none}.pnlm-loading{animation-duration:1.5s;-webkit-animation-duration:1.5s;animation-name:pnlm-mv;-webkit-animation-name:pnlm-mv;animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;animation-timing-function:linear;-webkit-animation-timing-function:linear;height:10px;width:10px;background-color:#fff;position:relative}@keyframes pnlm-mv{from{left:0;top:0}25%{left:10px;top:0}50%{left:10px;top:10px}75%{left:0;top:10px}to{left:0;top:0}}@-webkit-keyframes pnlm-mv{from{left:0;top:0}25%{left:10px;top:0}50%{left:10px;top:10px}75%{left:0;top:10px}to{left:0;top:0}}.pnlm-load-button{position:absolute;top:50%;left:50%;width:200px;height:100px;margin:-50px 0 0 -100px;background-color:rgba(0,0,0,.7);border-radius:3px;text-align:center;font-size:20px;display:table;color:#fff;cursor:pointer}.pnlm-load-button:hover{background-color:rgba(0,0,0,.8)}.pnlm-load-button p{display:table-cell;vertical-align:middle}.pnlm-info-box{font-size:15px;position:absolute;top:50%;left:50%;width:200px;height:150px;margin:-75px 0 0 -100px;background-color:#000;border-radius:3px;display:table;text-align:center;color:#fff;table-layout:fixed}.pnlm-info-box a{color:#fff;word-wrap:break-word;overflow-wrap:break-word}.pnlm-info-box p{display:table-cell;vertical-align:middle;padding:0 5px 0 5px}.pnlm-error-msg{display:none}.pnlm-about-msg{font-size:11px;line-height:11px;color:#fff;padding:5px 8px 5px 8px;background:rgba(0,0,0,0.7);border-radius:3px;position:absolute;top:50px;left:50px;display:none;opacity:0;-moz-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;z-index:1}.pnlm-about-msg a:link,.pnlm-about-msg a:visited{color:#fff}.pnlm-about-msg a:hover,.pnlm-about-msg a:active{color:#eee}.pnlm-hotspot{position:absolute;height:26px;width:26px;visibility:hidden;cursor:default;border-radius:13px;vertical-align:middle;top:0;z-index:1}.pnlm-hotspot:hover{background-color:rgba(255,255,255,0.2)}.pnlm-hotspot.pnlm-info{background-position:0 -104px}.pnlm-hotspot.pnlm-scene{background-position:0 -130px}div.pnlm-tooltip span{visibility:hidden;position:absolute;border-radius:3px;background-color:rgba(0,0,0,0.7);color:#fff;text-align:center;max-width:200px;padding:5px 10px;margin-top:-41px;margin-left:-220px;cursor:default}div.pnlm-tooltip:hover span{visibility:visible}div.pnlm-tooltip:hover:after{content:'';position:absolute;width:0;height:0;border-width:10px;border-style:solid;border-color:rgba(0,0,0,0.7) transparent transparent transparent;top:-12px;left:3px}.pnlm-compass{position:absolute;width:50px;height:50px;right:4px;bottom:4px;border-radius:25px;background-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2250%22%20width%3D%2250%22%3E%0A%3Cpath%20d%3D%22m24.5078%206-3.2578%2018h7.5l-3.25781-18h-0.984376zm-3.2578%2020%203.2578%2018h0.9844l3.2578-18h-7.5zm1.19531%200.9941h5.10938l-2.5547%2014.1075-2.5547-14.1075z%22%2F%3E%0A%3C%2Fsvg%3E%0A');cursor:default;display:none}.pnlm-world{position:absolute;left:50%;top:50%}.pnlm-face{position:absolute;-webkit-transform-origin:0 0;transform-origin:0 0}.pnlm-dragfix,.pnlm-preview-img{position:absolute;height:100%;width:100%}.pnlm-preview-img{background-size:cover;background-position:center}.pnlm-lbar{width:150px;margin:0 auto;border:#fff 1px solid;height:6px}.pnlm-lbar-fill{background:#fff;height:100%;width:0}.pnlm-lmsg{font-size:12px}.pnlm-fade-img{position:absolute;top:0;left:0}
<!DOCTYPE HTML>
<!-- Pannellum 0b04d18, https://github.com/mpetroff/pannellum -->
<html><head><meta charset=utf-8><meta name=viewport content="width=device-width, initial-scale=1.0"><title>Pannellum</title><style type="text/css">.pnlm-container{margin:0;padding:0;overflow:hidden;position:relative;cursor:default;width:100%;height:100%;font-family:Helvetica,"Nimbus Sans L","Liberation Sans",Arial,sans-serif;background:#f4f4f4 url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2267%22%20height%3D%22100%22%20viewBox%3D%220%200%2067%20100%22%3E%0A%3Cpath%20stroke%3D%22%23ccc%22%20fill%3D%22none%22%20d%3D%22M33.5%2C50%2C0%2C63%2C33.5%2C75%2C67%2C63%2C33.5%2C50m-33.5-50%2C67%2C25m-0.5%2C0%2C0%2C75m-66.5-75%2C67-25m-33.5%2C75%2C0%2C25m0-100%2C0%2C50%22%2F%3E%0A%3C%2Fsvg%3E%0A') repeat;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none;outline:0;line-height:1.4}.pnlm-container *{box-sizing:content-box}.pnlm-grab{cursor:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2226%22%20width%3D%2226%22%3E%0A%3Cpath%20stroke%3D%22%23000%22%20stroke-width%3D%221px%22%20fill%3D%22%23fff%22%20d%3D%22m15.3%2020.5s6.38-6.73%204.64-8.24-3.47%201.01-3.47%201.01%203.61-5.72%201.41-6.49c-2.2-0.769-3.33%204.36-3.33%204.36s0.873-5.76-1.06-5.76-1.58%205.39-1.58%205.39-0.574-4.59-2.18-4.12c-1.61%200.468-0.572%205.51-0.572%205.51s-1.58-4.89-2.93-3.79c-1.35%201.11%200.258%205.25%200.572%206.62%200.836%202.43%202.03%202.94%202.17%205.55%22%2F%3E%0A%3C%2Fsvg%3E%0A') 12 8,default}.pnlm-grabbing{cursor:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2226%22%20width%3D%2226%22%3E%0A%3Cpath%20stroke%3D%22%23000%22%20stroke-width%3D%221px%22%20fill%3D%22%23fff%22%20d%3D%22m15.3%2020.5s5.07-5.29%203.77-6.74c-1.31-1.45-2.53%200.14-2.53%200.14s2.74-3.29%200.535-4.06c-2.2-0.769-2.52%201.3-2.52%201.3s0.81-2.13-1.12-2.13-1.52%201.77-1.52%201.77-0.261-1.59-1.87-1.12c-1.61%200.468-0.874%202.17-0.874%202.17s-0.651-1.55-2-0.445c-1.35%201.11-0.68%202.25-0.365%203.62%200.836%202.43%202.03%202.94%202.17%205.55%22%2F%3E%0A%3C%2Fsvg%3E%0A') 12 8,default}.pnlm-sprite{background-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2226%22%20height%3D%22182%22%3E%0A%3Ccircle%20fill-opacity%3D%22.78%22%20cy%3D%22117%22%20cx%3D%2213%22%20r%3D%2211%22%20fill%3D%22%23fff%22%2F%3E%0A%3Ccircle%20fill-opacity%3D%22.78%22%20cy%3D%22143%22%20cx%3D%2213%22%20r%3D%2211%22%20fill%3D%22%23fff%22%2F%3E%0A%3Ccircle%20cy%3D%22169%22%20cx%3D%2213%22%20r%3D%227%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%2F%3E%0A%3Cpath%20d%3D%22m5%2083v6h2v-4h4v-2zm10%200v2h4v4h2v-6zm-5%205v6h6v-6zm-5%205v6h6v-2h-4v-4zm14%200v4h-4v2h6v-6z%22%2F%3E%0A%3Cpath%20d%3D%22m13%20110a7%207%200%200%200%20-7%207%207%207%200%200%200%207%207%207%207%200%200%200%207%20-7%207%207%200%200%200%20-7%20-7zm-1%203h2v2h-2zm0%203h2v5h-2z%22%2F%3E%0A%3Cpath%20d%3D%22m5%2057v6h2v-4h4v-2zm10%200v2h4v4h2v-6zm-10%2010v6h6v-2h-4v-4zm14%200v4h-4v2h6v-6z%22%2F%3E%0A%3Cpath%20d%3D%22m17%2038v2h-8v-2z%22%2F%3E%0A%3Cpath%20d%3D%22m12%209v3h-3v2h3v3h2v-3h3v-2h-3v-3z%22%2F%3E%0A%3Cpath%20d%3D%22m13%20136-6.125%206.125h4.375v7.875h3.5v-7.875h4.375z%22%2F%3E%0A%3Cpath%20d%3D%22m10.428%20173.33v-5.77l5-2.89v5.77zm1-1.73%203-1.73-3.001-1.74z%22%2F%3E%0A%3C%2Fsvg%3E%0A')}.pnlm-container:-moz-full-screen{height:100%!important;width:100%!important}.pnlm-container:-webkit-full-screen{height:100%!important;width:100%!important}.pnlm-container:fullscreen{height:100%!important;width:100%!important}.pnlm-render-container{cursor:inherit;position:absolute;height:100%;width:100%}.pnlm-controls{margin-top:4px;background-color:#fff;border:1px solid #999;border-color:rgba(0,0,0,0.4);border-radius:3px;cursor:pointer;z-index:2;-webkit-transform:translateZ(9999px);transform:translateZ(9999px)}.pnlm-control:hover{background-color:#f8f8f8}.pnlm-controls-container{position:absolute;top:0;left:4px;z-index:1}.pnlm-zoom-controls{width:26px;height:52px}.pnlm-zoom-in{width:100%;height:50%;position:absolute;top:0;border-radius:3px 3px 0 0}.pnlm-zoom-out{width:100%;height:50%;position:absolute;bottom:0;background-position:0 -26px;border-top:1px solid #ddd;border-top-color:rgba(0,0,0,0.10);border-radius:0 0 3px 3px}.pnlm-fullscreen-toggle-button,.pnlm-orientation-button{width:26px;height:26px;background-position:0 -156px}.pnlm-fullscreen-toggle-button-inactive{background-position:0 -52px}.pnlm-fullscreen-toggle-button-active{background-position:0 -78px}.pnlm-panorama-info{position:absolute;bottom:4px;background-color:rgba(0,0,0,0.7);border-radius:0 3px 3px 0;padding-right:10px;color:#fff;text-align:left;display:none;z-index:2;-webkit-transform:translateZ(9999px);transform:translateZ(9999px)}.pnlm-title-box{position:relative;font-size:20px;display:table;padding-left:5px;margin-bottom:3px}.pnlm-author-box{position:relative;font-size:12px;display:table;padding-left:5px}.pnlm-load-box{position:absolute;top:50%;left:50%;width:200px;height:150px;margin:-75px 0 0 -100px;background-color:rgba(0,0,0,0.7);border-radius:3px;text-align:center;font-size:20px;display:none;color:#fff}.pnlm-load-box p{margin:20px 0}.pnlm-lbox{position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;display:none}.pnlm-loading{animation-duration:1.5s;-webkit-animation-duration:1.5s;animation-name:pnlm-mv;-webkit-animation-name:pnlm-mv;animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;animation-timing-function:linear;-webkit-animation-timing-function:linear;height:10px;width:10px;background-color:#fff;position:relative}@keyframes pnlm-mv{from{left:0;top:0}25%{left:10px;top:0}50%{left:10px;top:10px}75%{left:0;top:10px}to{left:0;top:0}}@-webkit-keyframes pnlm-mv{from{left:0;top:0}25%{left:10px;top:0}50%{left:10px;top:10px}75%{left:0;top:10px}to{left:0;top:0}}.pnlm-load-button{position:absolute;top:50%;left:50%;width:200px;height:100px;margin:-50px 0 0 -100px;background-color:rgba(0,0,0,.7);border-radius:3px;text-align:center;font-size:20px;display:table;color:#fff;cursor:pointer}.pnlm-load-button:hover{background-color:rgba(0,0,0,.8)}.pnlm-load-button p{display:table-cell;vertical-align:middle}.pnlm-info-box{font-size:15px;position:absolute;top:50%;left:50%;width:200px;height:150px;margin:-75px 0 0 -100px;background-color:#000;border-radius:3px;display:table;text-align:center;color:#fff;table-layout:fixed}.pnlm-info-box a{color:#fff;word-wrap:break-word;overflow-wrap:break-word}.pnlm-info-box p{display:table-cell;vertical-align:middle;padding:0 5px 0 5px}.pnlm-error-msg{display:none}.pnlm-about-msg{font-size:11px;line-height:11px;color:#fff;padding:5px 8px 5px 8px;background:rgba(0,0,0,0.7);border-radius:3px;position:absolute;top:50px;left:50px;display:none;opacity:0;-moz-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;z-index:1}.pnlm-about-msg a:link,.pnlm-about-msg a:visited{color:#fff}.pnlm-about-msg a:hover,.pnlm-about-msg a:active{color:#eee}.pnlm-hotspot{position:absolute;height:26px;width:26px;visibility:hidden;cursor:default;border-radius:13px;vertical-align:middle;top:0;z-index:1}.pnlm-hotspot:hover{background-color:rgba(255,255,255,0.2)}.pnlm-hotspot.pnlm-info{background-position:0 -104px}.pnlm-hotspot.pnlm-scene{background-position:0 -130px}div.pnlm-tooltip span{visibility:hidden;position:absolute;border-radius:3px;background-color:rgba(0,0,0,0.7);color:#fff;text-align:center;max-width:200px;padding:5px 10px;margin-top:-41px;margin-left:-220px;cursor:default}div.pnlm-tooltip:hover span{visibility:visible}div.pnlm-tooltip:hover:after{content:'';position:absolute;width:0;height:0;border-width:10px;border-style:solid;border-color:rgba(0,0,0,0.7) transparent transparent transparent;top:-12px;left:3px}.pnlm-compass{position:absolute;width:50px;height:50px;right:4px;bottom:4px;border-radius:25px;background-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2250%22%20width%3D%2250%22%3E%0A%3Cpath%20d%3D%22m24.5078%206-3.2578%2018h7.5l-3.25781-18h-0.984376zm-3.2578%2020%203.2578%2018h0.9844l3.2578-18h-7.5zm1.19531%200.9941h5.10938l-2.5547%2014.1075-2.5547-14.1075z%22%2F%3E%0A%3C%2Fsvg%3E%0A');cursor:default;display:none}.pnlm-world{position:absolute;left:50%;top:50%}.pnlm-face{position:absolute;-webkit-transform-origin:0 0;transform-origin:0 0}.pnlm-dragfix,.pnlm-preview-img{position:absolute;height:100%;width:100%}.pnlm-preview-img{background-size:cover;background-position:center}.pnlm-lbar{width:150px;margin:0 auto;border:#fff 1px solid;height:6px}.pnlm-lbar-fill{background:#fff;height:100%;width:0}.pnlm-lmsg{font-size:12px}.pnlm-fade-img{position:absolute;top:0;left:0}html{height:100%}body{margin:0;padding:0;overflow:hidden;position:fixed;cursor:default;width:100%;height:100%}</style></head><body><div id=container><noscript><div class=pnlm-info-box><p>Javascript is required to view this panorama.<br>(It could be worse; you could need a plugin.)</p></div></noscript></div><script type="text/javascript">window.libpannellum=function(s,f,k){function E(W){function R(a,g){return 1==a.level&&1!=g.level?-1:1==g.level&&1!=a.level?1:g.timestamp-a.timestamp}function E(a,g){return a.level!=g.level?a.level-g.level:a.diff-g.diff}function D(a,g,e,f,d,c){this.vertices=a;this.side=g;this.level=e;this.x=f;this.y=d;this.path=c.replace("%s",g).replace("%l",e).replace("%x",f).replace("%y",d)}function ka(a,g,f,d,p){var c;var h=g.vertices;c=X(a,h.slice(0,3));var l=X(a,h.slice(3,6)),u=X(a,h.slice(6,9)),h=X(a,h.slice(9,
12)),k=c[0]+l[0]+u[0]+h[0];-4==k||4==k?c=!1:(k=c[1]+l[1]+u[1]+h[1],c=-4==k||4==k?!1:4!=c[2]+l[2]+u[2]+h[2]);if(c){c=g.vertices;l=c[0]+c[3]+c[6]+c[9];u=c[1]+c[4]+c[7]+c[10];h=c[2]+c[5]+c[8]+c[11];k=Math.sqrt(l*l+u*u+h*h);h=Math.asin(h/k);l=Math.atan2(u,l)-d;l+=l>Math.PI?-2*Math.PI:l<-Math.PI?2*Math.PI:0;l=Math.abs(l);g.diff=Math.acos(Math.sin(f)*Math.sin(h)+Math.cos(f)*Math.cos(h)*Math.cos(l));l=!1;for(u=0;u<e.nodeCache.length;u++)if(e.nodeCache[u].path==g.path){l=!0;e.nodeCache[u].timestamp=e.nodeCacheTimestamp++;
e.nodeCache[u].diff=g.diff;e.currentNodes.push(e.nodeCache[u]);break}l||(g.timestamp=e.nodeCacheTimestamp++,e.currentNodes.push(g),e.nodeCache.push(g));if(g.level<e.level){var h=q.cubeResolution*Math.pow(2,g.level-q.maxLevel),l=Math.ceil(h*q.invTileResolution)-1,u=h%q.tileResolution*2,A=2*h%q.tileResolution;0===A&&(A=q.tileResolution);0===u&&(u=2*q.tileResolution);k=0.5;if(g.x==l||g.y==l)k=1-q.tileResolution/(q.tileResolution+A);var s=1-k,h=[],v=k,b=k,w=k,C=s,t=s,z=s;if(A<q.tileResolution)if(g.x==
l&&g.y!=l){if(t=b=0.5,"d"==g.side||"u"==g.side)z=w=0.5}else g.x!=l&&g.y==l&&(C=v=0.5,"l"==g.side||"r"==g.side)&&(z=w=0.5);u<=q.tileResolution&&(g.x==l&&(v=0,C=1,"l"==g.side||"r"==g.side)&&(w=0,z=1),g.y==l&&(b=0,t=1,"d"==g.side||"u"==g.side)&&(w=0,z=1));A=[c[0],c[1],c[2],c[0]*v+c[3]*C,c[1]*k+c[4]*s,c[2]*w+c[5]*z,c[0]*v+c[6]*C,c[1]*b+c[7]*t,c[2]*w+c[8]*z,c[0]*k+c[9]*s,c[1]*b+c[10]*t,c[2]*w+c[11]*z];A=new D(A,g.side,g.level+1,2*g.x,2*g.y,q.fullpath);h.push(A);g.x==l&&u<=q.tileResolution||(A=[c[0]*v+
c[3]*C,c[1]*k+c[4]*s,c[2]*w+c[5]*z,c[3],c[4],c[5],c[3]*k+c[6]*s,c[4]*b+c[7]*t,c[5]*w+c[8]*z,c[0]*v+c[6]*C,c[1]*b+c[7]*t,c[2]*w+c[8]*z],A=new D(A,g.side,g.level+1,2*g.x+1,2*g.y,q.fullpath),h.push(A));g.x==l&&u<=q.tileResolution||g.y==l&&u<=q.tileResolution||(A=[c[0]*v+c[6]*C,c[1]*b+c[7]*t,c[2]*w+c[8]*z,c[3]*k+c[6]*s,c[4]*b+c[7]*t,c[5]*w+c[8]*z,c[6],c[7],c[8],c[9]*v+c[6]*C,c[10]*k+c[7]*s,c[11]*w+c[8]*z],A=new D(A,g.side,g.level+1,2*g.x+1,2*g.y+1,q.fullpath),h.push(A));g.y==l&&u<=q.tileResolution||(A=
[c[0]*k+c[9]*s,c[1]*b+c[10]*t,c[2]*w+c[11]*z,c[0]*v+c[6]*C,c[1]*b+c[7]*t,c[2]*w+c[8]*z,c[9]*v+c[6]*C,c[10]*k+c[7]*s,c[11]*w+c[8]*z,c[9],c[10],c[11]],A=new D(A,g.side,g.level+1,2*g.x,2*g.y+1,q.fullpath),h.push(A));for(g=0;g<h.length;g++)ka(a,h[g],f,d,p)}}}function la(){return[-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,-1]}function ea(a,g,e){var f=Math.sin(g);g=Math.cos(g);
if("x"==e)return[a[0],g*a[1]+f*a[2],g*a[2]-f*a[1],a[3],g*a[4]+f*a[5],g*a[5]-f*a[4],a[6],g*a[7]+f*a[8],g*a[8]-f*a[7]];if("y"==e)return[g*a[0]-f*a[2],a[1],g*a[2]+f*a[0],g*a[3]-f*a[5],a[4],g*a[5]+f*a[3],g*a[6]-f*a[8],a[7],g*a[8]+f*a[6]];if("z"==e)return[g*a[0]+f*a[1],g*a[1]-f*a[0],a[2],g*a[3]+f*a[4],g*a[4]-f*a[3],a[5],g*a[6]+f*a[7],g*a[7]-f*a[6],a[8]]}function ca(a){return[a[0],a[4],a[8],a[12],a[1],a[5],a[9],a[13],a[2],a[6],a[10],a[14],a[3],a[7],a[11],a[15]]}function ma(a){a.texture||Aa(encodeURI(a.path+
"."+q.extension),function(g){a.texture=g;a.textureLoaded=!0})}function X(a,g){var f=[a[0]*g[0]+a[1]*g[1]+a[2]*g[2],a[4]*g[0]+a[5]*g[1]+a[6]*g[2],a[11]+a[8]*g[0]+a[9]*g[1]+a[10]*g[2],1/(a[12]*g[0]+a[13]*g[1]+a[14]*g[2])],e=f[0]*f[3],d=f[1]*f[3],f=f[2]*f[3],c=[0,0,0];-1>e&&(c[0]=-1);1<e&&(c[0]=1);-1>d&&(c[1]=-1);1<d&&(c[1]=1);if(-1>f||1<f)c[2]=1;return c}var v=f.createElement("canvas");v.style.width=v.style.height="100%";W.appendChild(v);var e,a,F,I,na,P,fa,Z,q,B,Q,J,oa,S,$;this.init=function(y,g,s,
da,p,c,h,l){typeof g===k&&(g="equirectangular");B=g;q=y;Q=s;if(e){F&&(a.detachShader(e,F),a.deleteShader(F));I&&(a.detachShader(e,I),a.deleteShader(I));a.bindBuffer(a.ARRAY_BUFFER,null);a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,null);e.texture&&a.deleteTexture(e.texture);if(e.nodeCache)for(y=0;y<e.nodeCache.length;y++)a.deleteTexture(e.nodeCache[y].texture);a.deleteProgram(e);e=k}Z=k;"cubemap"==B&&0!==(q[0].width&q[0].width-1)&&(navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 8_/)||navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 9_/)||
navigator.userAgent.match(/Trident.*rv[ :]*11\./))||a||(a=v.getContext("experimental-webgl",{alpha:!1,depth:!1}));if(!a&&("multires"==B&&q.hasOwnProperty("fallbackPath")||"cubemap"==B)&&("WebkitAppearance"in f.documentElement.style||navigator.userAgent.match(/Trident.*rv[ :]*11\./)||-1!==navigator.appVersion.indexOf("MSIE 10"))){P&&W.removeChild(P);P=f.createElement("div");P.className="pnlm-world";da=q.basePath?q.basePath+q.fallbackPath:q.fallbackPath;var u="frblud".split(""),D=0;p=function(){var a=
f.createElement("canvas");a.className="pnlm-face pnlm-"+u[this.side]+"face";P.appendChild(a);var c=a.getContext("2d");a.style.width=this.width+4+"px";a.style.height=this.height+4+"px";a.width=this.width+4;a.height=this.height+4;c.drawImage(this,2,2);var g=c.getImageData(0,0,a.width,a.height),b=g.data,e,d;for(e=2;e<a.width-2;e++)for(d=0;4>d;d++)b[4*(e+a.width)+d]=b[4*(e+2*a.width)+d],b[4*(e+a.width*(a.height-2))+d]=b[4*(e+a.width*(a.height-3))+d];for(e=2;e<a.height-2;e++)for(d=0;4>d;d++)b[4*(e*a.width+
1)+d]=b[4*(e*a.width+2)+d],b[4*((e+1)*a.width-2)+d]=b[4*((e+1)*a.width-3)+d];for(d=0;4>d;d++)b[4*(a.width+1)+d]=b[4*(2*a.width+2)+d],b[4*(2*a.width-2)+d]=b[4*(3*a.width-3)+d],b[4*(a.width*(a.height-2)+1)+d]=b[4*(a.width*(a.height-3)+2)+d],b[4*(a.width*(a.height-1)-2)+d]=b[4*(a.width*(a.height-2)-3)+d];for(e=1;e<a.width-1;e++)for(d=0;4>d;d++)b[4*e+d]=b[4*(e+a.width)+d],b[4*(e+a.width*(a.height-1))+d]=b[4*(e+a.width*(a.height-2))+d];for(e=1;e<a.height-1;e++)for(d=0;4>d;d++)b[e*a.width*4+d]=b[4*(e*a.width+
1)+d],b[4*((e+1)*a.width-1)+d]=b[4*((e+1)*a.width-2)+d];for(d=0;4>d;d++)b[d]=b[4*(a.width+1)+d],b[4*(a.width-1)+d]=b[4*(2*a.width-2)+d],b[a.width*(a.height-1)*4+d]=b[4*(a.width*(a.height-2)+1)+d],b[4*(a.width*a.height-1)+d]=b[4*(a.width*(a.height-1)-2)+d];c.putImageData(g,0,0);D++;6==D&&(na=this.width,W.appendChild(P),h())};for(y=0;6>y;y++)c=new Image,c.crossOrigin="anonymous",c.side=y,c.onload=p,c.src="multires"==B?encodeURI(da.replace("%s",u[y])+"."+q.extension):encodeURI(q[y].src)}else{if(!a)throw console.log("Error: no WebGL support detected!"),
{type:"no webgl"};q.fullpath=q.basePath?q.basePath+q.path:q.path;q.invTileResolution=1/q.tileResolution;g=la();fa=[];for(y=0;6>y;y++)fa[y]=g.slice(12*y,12*y+12),g=la();if("equirectangular"==B){if(y=Math.max(q.width,q.height),g=a.getParameter(a.MAX_TEXTURE_SIZE),y>g)throw console.log("Error: The image is too big; it's "+y+"px wide, but this device's maximum supported width is "+g+"px."),{type:"webgl size error",width:y,maxWidth:g};}else if("cubemap"==B&&(y=q[0].width,g=a.getParameter(a.MAX_CUBE_MAP_TEXTURE_SIZE),
y>g))throw console.log("Error: The cube face image is too big; it's "+y+"px wide, but this device's maximum supported width is "+g+"px."),{type:"webgl size error",width:y,maxWidth:g};l===k||l.horizonPitch===k&&l.horizonRoll===k||(Z=[l.horizonPitch==k?0:l.horizonPitch,l.horizonRoll==k?0:l.horizonRoll]);l=a.TEXTURE_2D;a.viewport(0,0,v.width,v.height);F=a.createShader(a.VERTEX_SHADER);y=d;"multires"==B&&(y=t);a.shaderSource(F,y);a.compileShader(F);I=a.createShader(a.FRAGMENT_SHADER);y=Ka;"cubemap"==
B?(l=a.TEXTURE_CUBE_MAP,y=ua):"multires"==B&&(y=ga);a.shaderSource(I,y);a.compileShader(I);e=a.createProgram();a.attachShader(e,F);a.attachShader(e,I);a.linkProgram(e);a.getShaderParameter(F,a.COMPILE_STATUS)||console.log(a.getShaderInfoLog(F));a.getShaderParameter(I,a.COMPILE_STATUS)||console.log(a.getShaderInfoLog(I));a.getProgramParameter(e,a.LINK_STATUS)||console.log(a.getProgramInfoLog(e));a.useProgram(e);e.drawInProgress=!1;e.texCoordLocation=a.getAttribLocation(e,"a_texCoord");a.enableVertexAttribArray(e.texCoordLocation);
"multires"!=B?(J||(J=a.createBuffer()),a.bindBuffer(a.ARRAY_BUFFER,J),a.bufferData(a.ARRAY_BUFFER,new Float32Array([-1,1,1,1,1,-1,-1,1,1,-1,-1,-1]),a.STATIC_DRAW),a.vertexAttribPointer(e.texCoordLocation,2,a.FLOAT,!1,0,0),e.aspectRatio=a.getUniformLocation(e,"u_aspectRatio"),a.uniform1f(e.aspectRatio,v.width/v.height),e.psi=a.getUniformLocation(e,"u_psi"),e.theta=a.getUniformLocation(e,"u_theta"),e.f=a.getUniformLocation(e,"u_f"),e.h=a.getUniformLocation(e,"u_h"),e.v=a.getUniformLocation(e,"u_v"),
e.vo=a.getUniformLocation(e,"u_vo"),e.rot=a.getUniformLocation(e,"u_rot"),a.uniform1f(e.h,da/(2*Math.PI)),a.uniform1f(e.v,p/Math.PI),a.uniform1f(e.vo,c/Math.PI*2),e.texture=a.createTexture(),a.bindTexture(l,e.texture),"cubemap"==B?(a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[1]),a.texImage2D(a.TEXTURE_CUBE_MAP_NEGATIVE_X,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[3]),a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_Y,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[4]),a.texImage2D(a.TEXTURE_CUBE_MAP_NEGATIVE_Y,
0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[5]),a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_Z,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[0]),a.texImage2D(a.TEXTURE_CUBE_MAP_NEGATIVE_Z,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[2])):a.texImage2D(l,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q),a.texParameteri(l,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(l,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(l,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(l,a.TEXTURE_MAG_FILTER,a.LINEAR)):(e.vertPosLocation=a.getAttribLocation(e,"a_vertCoord"),
a.enableVertexAttribArray(e.vertPosLocation),oa||(oa=a.createBuffer()),S||(S=a.createBuffer()),$||($=a.createBuffer()),a.bindBuffer(a.ARRAY_BUFFER,S),a.bufferData(a.ARRAY_BUFFER,new Float32Array([0,0,1,0,1,1,0,1]),a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,$),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),a.STATIC_DRAW),e.perspUniform=a.getUniformLocation(e,"u_perspMatrix"),e.cubeUniform=a.getUniformLocation(e,"u_cubeMatrix"),e.level=-1,e.currentNodes=[],e.nodeCache=[],
e.nodeCacheTimestamp=0);if(0!==a.getError())throw console.log("Error: Something went wrong with WebGL!"),{type:"webgl error"};h()}};this.destroy=function(){W!==k&&(v!==k&&W.removeChild(v),P!==k&&W.removeChild(P))};this.resize=function(){var d=s.devicePixelRatio||1;v.width=v.clientWidth*d;v.height=v.clientHeight*d;a&&(a.viewport(0,0,v.width,v.height),"multires"!=B&&a.uniform1f(e.aspectRatio,v.width/v.height))};this.resize();this.render=function(d,g,f,t){var p;p=0;t===k&&(t={});t.roll&&(p=t.roll);if(Z!==
k){var c=Z[0],h=Z[1],l=d,u=g,F=Math.cos(h)*Math.sin(d)*Math.sin(c)+Math.cos(d)*(Math.cos(c)*Math.cos(g)+Math.sin(h)*Math.sin(c)*Math.sin(g)),A=-Math.sin(d)*Math.sin(h)+Math.cos(d)*Math.cos(h)*Math.sin(g);d=Math.cos(h)*Math.cos(c)*Math.sin(d)+Math.cos(d)*(-Math.cos(g)*Math.sin(c)+Math.cos(c)*Math.sin(h)*Math.sin(g));d=Math.asin(Math.max(Math.min(d,1),-1));g=Math.atan2(A,F);c=[Math.cos(l)*(Math.sin(h)*Math.sin(c)*Math.cos(u)-Math.cos(c)*Math.sin(u)),Math.cos(l)*Math.cos(h)*Math.cos(u),Math.cos(l)*(Math.cos(c)*
Math.sin(h)*Math.cos(u)+Math.sin(u)*Math.sin(c))];h=[-Math.cos(d)*Math.sin(g),Math.cos(d)*Math.cos(g)];h=Math.acos(Math.max(Math.min((c[0]*h[0]+c[1]*h[1])/(Math.sqrt(c[0]*c[0]+c[1]*c[1]+c[2]*c[2])*Math.sqrt(h[0]*h[0]+h[1]*h[1])),1),-1));0>c[2]&&(h=2*Math.PI-h);p+=h}if(a||"multires"!=B&&"cubemap"!=B){if("multires"!=B)f=2*Math.atan(Math.tan(0.5*f)/(v.width/v.height)),f=1/Math.tan(0.5*f),a.uniform1f(e.psi,g),a.uniform1f(e.theta,d),a.uniform1f(e.rot,p),a.uniform1f(e.f,f),!0===Q&&"equirectangular"==B&&
(a.bindTexture(a.TEXTURE_2D,e.texture),a.texImage2D(a.TEXTURE_2D,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q)),a.drawArrays(a.TRIANGLES,0,6);else{c=v.width/v.height;h=2*Math.atan(Math.tan(f/2)*v.height/v.width);h=1/Math.tan(h/2);c=[h/c,0,0,0,0,h,0,0,0,0,100.1/-99.9,20/-99.9,0,0,-1,0];for(h=1;h<q.maxLevel&&v.width>q.tileResolution*Math.pow(2,h-1)*Math.tan(f/2)*0.707;)h++;e.level=h;h=[1,0,0,0,1,0,0,0,1];h=ea(h,-p,"z");h=ea(h,-d,"x");h=ea(h,g,"y");h=[h[0],h[1],h[2],0,h[3],h[4],h[5],0,h[6],h[7],h[8],0,0,0,0,1];a.uniformMatrix4fv(e.perspUniform,
!1,new Float32Array(ca(c)));a.uniformMatrix4fv(e.cubeUniform,!1,new Float32Array(ca(h)));c=[c[0]*h[0],c[0]*h[1],c[0]*h[2],0,c[5]*h[4],c[5]*h[5],c[5]*h[6],0,c[10]*h[8],c[10]*h[9],c[10]*h[10],c[11],-h[8],-h[9],-h[10],0];e.nodeCache.sort(R);if(200<e.nodeCache.length&&e.nodeCache.length>e.currentNodes.length+50)for(h=e.nodeCache.splice(200,e.nodeCache.length-200),p=0;p<h.length;p++)a.deleteTexture(h[p].texture);e.currentNodes=[];h="fbudlr".split("");for(p=0;6>p;p++)l=new D(fa[p],h[p],1,0,0,q.fullpath),
ka(c,l,d,g,f);e.currentNodes.sort(E);for(p=0;p<e.currentNodes.length;p++)if(!e.currentNodes[p].texture){setTimeout(ma(e.currentNodes[p]),0);break}if(!e.drawInProgress){e.drawInProgress=!0;for(d=0;d<e.currentNodes.length;d++)e.currentNodes[d].textureLoaded&&(a.bindBuffer(a.ARRAY_BUFFER,oa),a.bufferData(a.ARRAY_BUFFER,new Float32Array(e.currentNodes[d].vertices),a.STATIC_DRAW),a.vertexAttribPointer(e.vertPosLocation,3,a.FLOAT,!1,0,0),a.bindBuffer(a.ARRAY_BUFFER,S),a.vertexAttribPointer(e.texCoordLocation,
2,a.FLOAT,!1,0,0),a.bindTexture(a.TEXTURE_2D,e.currentNodes[d].texture),a.drawElements(a.TRIANGLES,6,a.UNSIGNED_SHORT,0));e.drawInProgress=!1}}if(t.returnImage!==k)return v.toDataURL("image/png")}else for(p=na/2,t={f:"translate3d(-"+(p+2)+"px, -"+(p+2)+"px, -"+p+"px)",b:"translate3d("+(p+2)+"px, -"+(p+2)+"px, "+p+"px) rotateX(180deg) rotateZ(180deg)",u:"translate3d(-"+(p+2)+"px, -"+p+"px, "+(p+2)+"px) rotateX(270deg)",d:"translate3d(-"+(p+2)+"px, "+p+"px, -"+(p+2)+"px) rotateX(90deg)",l:"translate3d(-"+
p+"px, -"+(p+2)+"px, "+(p+2)+"px) rotateX(180deg) rotateY(90deg) rotateZ(180deg)",r:"translate3d("+p+"px, -"+(p+2)+"px, -"+(p+2)+"px) rotateY(270deg)"},f=1/Math.tan(f/2),f=f*v.width/(s.devicePixelRatio||1)/2+"px",d="perspective("+f+") translateZ("+f+") rotateX("+d+"rad) rotateY("+g+"rad) ",g=Object.keys(t),p=0;6>p;p++)f=P.querySelector(".pnlm-"+g[p]+"face").style,f.webkitTransform=d+t[g[p]],f.transform=d+t[g[p]]};this.isLoading=function(){if(a&&"multires"==B)for(var d=0;d<e.currentNodes.length;d++)if(!e.currentNodes[d].textureLoaded)return!0;
return!1};this.getCanvas=function(){return v};var Aa=function(){function d(){var c=this;this.texture=this.callback=null;this.image=new Image;this.image.crossOrigin="anonymous";this.image.addEventListener("load",function(){var d=c.image;a.bindTexture(a.TEXTURE_2D,c.texture);a.texImage2D(a.TEXTURE_2D,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,d);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE);
a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);a.bindTexture(a.TEXTURE_2D,null);c.callback(c.texture);p.length?(d=p.shift(),c.loadTexture(d.src,d.texture,d.callback)):k[e++]=c})}function f(a,d,c){this.src=a;this.texture=d;this.callback=c}var e=4,k={},p=[];d.prototype.loadTexture=function(a,d,c){this.texture=d;this.callback=c;this.image.src=a};for(var c=0;c<e;c++)k[c]=new d;return function(d,c){var q=a.createTexture();e?k[--e].loadTexture(d,q,c):p.push(new f(d,q,c));return q}}()}var d=
"attribute vec2 a_texCoord;varying vec2 v_texCoord;void main() {gl_Position = vec4(a_texCoord, 0.0, 1.0);v_texCoord = a_texCoord;}",t="attribute vec3 a_vertCoord;attribute vec2 a_texCoord;uniform mat4 u_cubeMatrix;uniform mat4 u_perspMatrix;varying mediump vec2 v_texCoord;void main(void) {gl_Position = u_perspMatrix * u_cubeMatrix * vec4(a_vertCoord, 1.0);v_texCoord = a_texCoord;}",ua="precision mediump float;\nuniform float u_aspectRatio;\nuniform float u_psi;\nuniform float u_theta;\nuniform float u_f;\nuniform float u_h;\nuniform float u_v;\nuniform float u_vo;\nuniform float u_rot;\nconst float PI = 3.14159265358979323846264;\nuniform samplerCube u_image;\nvarying vec2 v_texCoord;\nvoid main() {\nvec3 planePos = vec3(v_texCoord.xy, 0.0);\nplanePos.x *= u_aspectRatio;\nfloat sinrot = sin(u_rot);\nfloat cosrot = cos(u_rot);\nvec3 rotPos = vec3(planePos.x * cosrot - planePos.y * sinrot, planePos.x * sinrot + planePos.y * cosrot, 0.0);\nvec3 viewVector = rotPos - vec3(0.0, 0.0, -u_f);\nfloat sinpsi = sin(-u_psi);\nfloat cospsi = cos(-u_psi);\nfloat sintheta = sin(u_theta);\nfloat costheta = cos(u_theta);\nvec3 viewVectorTheta = viewVector;\nviewVectorTheta.z = viewVector.z * costheta - viewVector.y * sintheta;\nviewVectorTheta.y = viewVector.z * sintheta + viewVector.y * costheta;\nvec3 viewVectorPsi = viewVectorTheta;\nviewVectorPsi.x = viewVectorTheta.x * cospsi - viewVectorTheta.z * sinpsi;\nviewVectorPsi.z = viewVectorTheta.x * sinpsi + viewVectorTheta.z * cospsi;\ngl_FragColor = textureCube(u_image, viewVectorPsi);\n}",
Ka="precision mediump float;\nuniform float u_aspectRatio;\nuniform float u_psi;\nuniform float u_theta;\nuniform float u_f;\nuniform float u_h;\nuniform float u_v;\nuniform float u_vo;\nuniform float u_rot;\nconst float PI = 3.14159265358979323846264;\nuniform sampler2D u_image;\nvarying vec2 v_texCoord;\nvoid main() {\nfloat x = v_texCoord.x * u_aspectRatio;\nfloat y = v_texCoord.y;\nfloat sinrot = sin(u_rot);\nfloat cosrot = cos(u_rot);\nfloat rot_x = x * cosrot - y * sinrot;\nfloat rot_y = x * sinrot + y * cosrot;\nfloat sintheta = sin(u_theta);\nfloat costheta = cos(u_theta);\nfloat a = u_f * costheta - rot_y * sintheta;\nfloat root = sqrt(rot_x * rot_x + a * a);\nfloat lambda = atan(rot_x / root, a / root) + u_psi;\nfloat phi = atan((rot_y * costheta + u_f * sintheta) / root);\nif(lambda > PI)\nlambda = lambda - PI * 2.0;\nif(lambda < -PI)\nlambda = lambda + PI * 2.0;\nvec2 coord = vec2(lambda / PI, phi / (PI / 2.0));\nif(coord.x < -u_h || coord.x > u_h || coord.y < -u_v + u_vo || coord.y > u_v + u_vo)\ngl_FragColor = vec4(0, 0, 0, 1.0);\nelse\ngl_FragColor = texture2D(u_image, vec2((coord.x + u_h) / (u_h * 2.0), (-coord.y + u_v + u_vo) / (u_v * 2.0)));\n}",
ga="varying mediump vec2 v_texCoord;uniform sampler2D u_sampler;void main(void) {gl_FragColor = texture2D(u_sampler, v_texCoord);}";return{renderer:function(d,f,k,s){return new E(d,f,k,s)}}}(window,document);window.requestAnimationFrame||(window.requestAnimationFrame=function(){return window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(s,f){window.setTimeout(s,1E3/60)}}());
window.pannellum=function(s,f,k){function E(d,t){function ua(){var a=f.createElement("div");a.innerHTML="\x3c!--[if lte IE 9]><i></i><![endif]--\x3e";if(1==a.getElementsByTagName("i").length)R();else{var n;if("cubemap"==b.type){K=[];for(a=0;6>a;a++)K.push(new Image),K[a].crossOrigin="anonymous";r.load.lbox.style.display="block";r.load.lbar.style.display="none"}else if("multires"==b.type)a=JSON.parse(JSON.stringify(b.multiRes)),b.basePath&&b.multiRes.basePath&&!/^(?:[a-z]+:)?\/\//i.test(b.multiRes.basePath)?
a.basePath=b.basePath+b.multiRes.basePath:b.multiRes.basePath?a.basePath=b.multiRes.basePath:b.basePath&&(a.basePath=b.basePath),K=a;else if(!0===b.dynamic)K=b.panorama;else{if(b.panorama===k){R("No panorama image was specified.");return}K=new Image}if("cubemap"==b.type)for(var c=6,e=function(){c--;0===c&&ga()},g=function(a){var b=f.createElement("a");b.href=a.target.src;b.innerHTML=b.href;R("The file "+b.outerHTML+" could not be accessed.")},a=0;a<K.length;a++)K[a].onload=e,K[a].onerror=g,n=b.cubeMap[a],
b.basePath&&!E(n)&&(n=b.basePath+n),K[a].src=encodeURI(n);else if("multires"==b.type)ga();else if(n="",b.basePath&&(n=b.basePath),!0!==b.dynamic){n=E(b.panorama)?b.panorama:n+b.panorama;K.onload=function(){s.URL.revokeObjectURL(this.src);ga()};var h=new XMLHttpRequest;h.onloadend=function(){if(200!=h.status){var a=f.createElement("a");a.href=encodeURI(n);a.innerHTML=a.href;R("The file "+a.outerHTML+" could not be accessed.")}W(this.response);r.load.msg.innerHTML=""};h.onprogress=function(a){if(a.lengthComputable){r.load.lbarFill.style.width=
a.loaded/a.total*100+"%";var b,va;1E6<a.total?(b="MB",va=(a.loaded/1E6).toFixed(2),a=(a.total/1E6).toFixed(2)):1E3<a.total?(b="kB",va=(a.loaded/1E3).toFixed(1),a=(a.total/1E3).toFixed(1)):(b="B",va=a.loaded,a=a.total);r.load.msg.innerHTML=va+" / "+a+" "+b}else r.load.lbox.style.display="block",r.load.lbar.style.display="none"};try{h.open("GET",n,!0)}catch(l){R("There is something wrong with the panorama URL.")}h.responseType="blob";h.setRequestHeader("Accept","image/*,*/*;q=0.9");h.send()}d.classList.add("pnlm-grab");
d.classList.remove("pnlm-grabbing")}}function E(a){return/^(?:[a-z]+:)?\/\//i.test(a)|"/"==a[0]}function ga(){w||(w=new libpannellum.renderer(L));Ba||(Ba=!0,d.addEventListener("mousedown",ka,!1),f.addEventListener("mousemove",ea,!1),f.addEventListener("mouseup",ca,!1),b.mouseZoom&&(d.addEventListener("mousewheel",I,!1),d.addEventListener("DOMMouseScroll",I,!1)),d.addEventListener("mozfullscreenchange",l,!1),d.addEventListener("webkitfullscreenchange",l,!1),d.addEventListener("msfullscreenchange",
l,!1),d.addEventListener("fullscreenchange",l,!1),s.addEventListener("resize",B,!1),s.addEventListener("orientationchange",B,!1),d.addEventListener("keydown",na,!1),d.addEventListener("keyup",fa,!1),d.addEventListener("blur",P,!1),f.addEventListener("mouseleave",ca,!1),d.addEventListener("touchstart",ma,!1),d.addEventListener("touchmove",X,!1),d.addEventListener("touchend",v,!1),d.addEventListener("pointerdown",e,!1),d.addEventListener("pointermove",a,!1),d.addEventListener("pointerup",F,!1),d.addEventListener("pointerleave",
F,!1),s.navigator.pointerEnabled&&(d.style.touchAction="none"));Aa();setTimeout(function(){},500)}function W(a){var n=new FileReader;n.addEventListener("loadend",function(){var d=n.result;if(navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 8_/)){var c=d.indexOf("\u00ff\u00c2");(0>c||65536<c)&&R("Due to iOS 8's broken WebGL implementation, only progressive encoded JPEGs work for your device (this panorama uses standard encoding).")}c=d.indexOf("<x:xmpmeta");if(-1<c&&!0!==b.ignoreGPanoXMP){var e=
d.substring(c,d.indexOf("</x:xmpmeta>")+12),f=function(a){var b;0<=e.indexOf(a+'="')?(b=e.substring(e.indexOf(a+'="')+a.length+2),b=b.substring(0,b.indexOf('"'))):0<=e.indexOf(a+">")&&(b=e.substring(e.indexOf(a+">")+a.length+1),b=b.substring(0,b.indexOf("<")));return b!==k?Number(b):null},d=f("GPano:FullPanoWidthPixels"),c=f("GPano:CroppedAreaImageWidthPixels"),g=f("GPano:FullPanoHeightPixels"),h=f("GPano:CroppedAreaImageHeightPixels"),l=f("GPano:CroppedAreaTopPixels"),m=f("GPano:PoseHeadingDegrees"),
p=f("GPano:PosePitchDegrees"),f=f("GPano:PoseRollDegrees");null!==d&&null!==c&&null!==g&&null!==h&&null!==l&&(0>U.indexOf("haov")&&(b.haov=c/d*360),0>U.indexOf("vaov")&&(b.vaov=h/g*180),0>U.indexOf("vOffset")&&(b.vOffset=-180*((l+h/2)/g-0.5)),null!==m&&0>U.indexOf("northOffset")&&(b.northOffset=m,!1!==b.compass&&(b.compass=!0)),null!==p&&null!==f&&(0>U.indexOf("horizonPitch")&&(b.horizonPitch=p/180*Math.PI),0>U.indexOf("horizonRoll")&&(b.horizonRoll=f/180*Math.PI)))}K.src=s.URL.createObjectURL(a)});
n.readAsBinaryString!==k?n.readAsBinaryString(a):n.readAsText(a)}function R(a){a===k&&(a="Your browser does not have the necessary WebGL support to display this panorama.");r.errorMsg.innerHTML="<p>"+a+"</p>";x.load.style.display="none";r.load.box.style.display="none";r.errorMsg.style.display="table";wa=!0;L.style.display="none";ta("error",a)}function ja(a){var b=D(a);V.style.left=b.x+"px";V.style.top=b.y+"px";clearTimeout(ja.t1);clearTimeout(ja.t2);V.style.display="block";V.style.opacity=1;ja.t1=
setTimeout(function(){V.style.opacity=0},2E3);ja.t2=setTimeout(function(){V.style.display="none"},2500);a.preventDefault()}function D(a){var b=d.getBoundingClientRect(),c={};c.x=a.clientX-b.left;c.y=a.clientY-b.top;return c}function ka(a){a.preventDefault();d.focus();if(M){var n=D(a);b.hotSpotDebug&&(a=la(a),console.log("Pitch: "+a[0]+", Yaw: "+a[1]+", Center Pitch: "+b.pitch+", Center Yaw: "+b.yaw+", HFOV: "+b.hfov));G=b.autoRotate?b.autoRotate:G;b.autoRotate=!1;s.removeEventListener("deviceorientation",
$);H=b.roll=0;Y=!0;z=Date.now();ha=n.x;ia=n.y;xa=b.yaw;ya=b.pitch;d.classList.add("pnlm-grabbing");d.classList.remove("pnlm-grab");Q()}}function la(a){var n=D(a),c=w.getCanvas();a=n.x/c.width*2-1;var d=(1-n.y/c.height*2)*c.height/c.width,f=1/Math.tan(b.hfov*Math.PI/360),e=Math.sin(b.pitch*Math.PI/180),g=Math.cos(b.pitch*Math.PI/180),n=f*g-d*e,c=Math.sqrt(a*a+n*n),d=180*Math.atan((d*g+f*e)/c)/Math.PI;a=180*Math.atan2(a/c,n/c)/Math.PI+b.yaw;return[d,a]}function ea(a){if(Y&&M){z=Date.now();var n=w.getCanvas();
a=D(a);var c=180*(Math.atan(ha/n.width*2-1)-Math.atan(a.x/n.width*2-1))/Math.PI*b.hfov/90+xa;N=(c-b.yaw)%360*0.2;b.yaw=c;c=360*Math.atan(Math.tan(b.hfov/360*Math.PI)*n.height/n.width)/Math.PI;n=180*(Math.atan(a.y/n.height*2-1)-Math.atan(ia/n.height*2-1))/Math.PI*c/90+ya;O=0.2*(n-b.pitch);b.pitch=n}}function ca(){Y&&(Y=!1,15<Date.now()-z&&(O=N=0),d.classList.add("pnlm-grab"),d.classList.remove("pnlm-grabbing"),z=Date.now())}function ma(a){if(M){G=b.autoRotate?b.autoRotate:G;b.autoRotate=!1;s.removeEventListener("deviceorientation",
$);H=b.roll=0;var n=D(a.targetTouches[0]);ha=n.x;ia=n.y;2==a.targetTouches.length&&(a=D(a.targetTouches[1]),ha+=0.5*(a.x-n.x),ia+=0.5*(a.y-n.y),pa=Math.sqrt((n.x-a.x)*(n.x-a.x)+(n.y-a.y)*(n.y-a.y)));Y=!0;z=Date.now();xa=b.yaw;ya=b.pitch;Q()}}function X(a){a.preventDefault();M&&(z=Date.now());if(Y&&M){var n=D(a.targetTouches[0]),c=n.x,d=n.y;2==a.targetTouches.length&&-1!=pa&&(a=D(a.targetTouches[1]),c+=0.5*(a.x-n.x),d+=0.5*(a.y-n.y),n=Math.sqrt((n.x-a.x)*(n.x-a.x)+(n.y-a.y)*(n.y-a.y)),u(b.hfov+0.1*
(pa-n)),pa=n);n=b.hfov/360;c=(ha-c)*n+xa;N=(c-b.yaw)%360*0.2;b.yaw=c;d=(d-ia)*n+ya;O=0.2*(d-b.pitch);b.pitch=d}}function v(){Y=!1;150<Date.now()-z&&(O=N=0);pa=-1;z=Date.now()}function e(a){"touch"==a.pointerType&&(aa.push(a.pointerId),qa.push({clientX:a.clientX,clientY:a.clientY}),a.targetTouches=qa,ma(a),a.preventDefault())}function a(a){if("touch"==a.pointerType)for(var b=0;b<aa.length;b++)if(a.pointerId==aa[b]){qa[b]={clientX:a.clientX,clientY:a.clientY};a.targetTouches=qa;X(a);break}}function F(a){if("touch"==
a.pointerType){for(var b=!1,c=0;c<aa.length;c++)a.pointerId==aa[c]&&(aa[c]=k),aa[c]&&(b=!0);b||(aa=[],qa=[],v());a.preventDefault()}}function I(a){a.preventDefault();M&&(G=b.autoRotate?b.autoRotate:G,b.autoRotate=!1,z=Date.now(),a.wheelDeltaY?(u(b.hfov-0.05*a.wheelDeltaY),H=0>a.wheelDelta?1:-1):a.wheelDelta?(u(b.hfov-0.05*a.wheelDelta),H=0>a.wheelDelta?1:-1):a.detail&&(u(b.hfov+1.5*a.detail),H=0<a.detail?1:-1),Q())}function na(a){a.preventDefault();G=b.autoRotate?b.autoRotate:G;b.autoRotate=!1;z=
Date.now();s.removeEventListener("deviceorientation",$);b.roll=0;var n=a.keycode;a.which&&(n=a.which);27==n?za&&h():Z(n,!0)}function P(){for(var a=0;10>a;a++)m[a]=!1}function fa(a){a.preventDefault();var b=a.keycode;a.which&&(b=a.which);Z(b,!1)}function Z(a,b){var c=!1;switch(a){case 109:case 189:case 17:m[0]!=b&&(c=!0);m[0]=b;break;case 107:case 187:case 16:m[1]!=b&&(c=!0);m[1]=b;break;case 38:m[2]!=b&&(c=!0);m[2]=b;break;case 87:m[6]!=b&&(c=!0);m[6]=b;break;case 40:m[3]!=b&&(c=!0);m[3]=b;break;
case 83:m[7]!=b&&(c=!0);m[7]=b;break;case 37:m[4]!=b&&(c=!0);m[4]=b;break;case 65:m[8]!=b&&(c=!0);m[8]=b;break;case 39:m[5]!=b&&(c=!0);m[5]=b;break;case 68:m[9]!=b&&(c=!0),m[9]=b}c&&b&&(ba="undefined"!==typeof performance&&performance.now()?performance.now():Date.now(),Q())}function q(){if(M){var a=!1,c=b.pitch,d=b.yaw,f=b.hfov,e;e="undefined"!==typeof performance&&performance.now()?performance.now():Date.now();ba===k&&(ba=e);var g=(e-ba)*b.hfov/1700,g=Math.min(g,1);m[0]&&!0===b.keyboardZoom&&(u(b.hfov+
(0.8*H+0.5)*g),a=!0);m[1]&&!0===b.keyboardZoom&&(u(b.hfov+(0.8*H-0.2)*g),a=!0);if(m[2]||m[6])b.pitch+=(0.8*O+0.2)*g,a=!0;if(m[3]||m[7])b.pitch+=(0.8*O-0.2)*g,a=!0;if(m[4]||m[8])b.yaw+=(0.8*N-0.2)*g,a=!0;if(m[5]||m[9])b.yaw+=(0.8*N+0.2)*g,a=!0;a&&(z=Date.now());Date.now();b.autoRotate&&!1!==b.autoRotateStopDelay&&(0.001<e-ba&&(b.yaw-=b.autoRotate*(e-ba)/1E3),b.autoRotateStopDelay&&(b.autoRotateStopDelay-=e-ba,0>=b.autoRotateStopDelay&&(b.autoRotateStopDelay=!1)));0<g&&(m[4]||m[5]||m[8]||m[9]||(b.yaw+=
N*g*0.85),m[2]||m[3]||m[6]||m[7]||(b.pitch+=O*g*0.85),m[0]||m[1]||u(b.hfov+H*g*0.85));ba=e;0<g&&(N=0.8*N+(b.yaw-d)/g*0.2,O=0.8*O+(b.pitch-c)/g*0.2,H=0.8*H+(b.hfov-f)/g*0.2,N=Math.min(5,Math.max(N,-5)),O=Math.min(5,Math.max(O,-5)),H=Math.min(5,Math.max(H,-5)));m[0]&&m[0]&&(H=0);(m[2]||m[6])&&(m[3]||m[7])&&(O=0);(m[4]||m[8])&&(m[5]||m[9])&&(N=0)}}function B(){l()}function Q(){Ca||(Ca=!0,J())}function J(){oa();Da&&clearTimeout(Da);if(Y)requestAnimationFrame(J);else if(m[0]||m[1]||m[2]||m[3]||m[4]||m[5]||
m[6]||m[7]||m[8]||m[9]||b.autoRotate||0.01<Math.abs(N)||0.01<Math.abs(O)||0.01<Math.abs(H))q(),0<=b.autoRotateInactivityDelay&&G&&Date.now()-z>b.autoRotateInactivityDelay&&(b.autoRotate=G),requestAnimationFrame(J);else if(w&&(w.isLoading()||!0===b.dynamic&&Ia))requestAnimationFrame(J);else{Ca=!1;var a=b.autoRotateInactivityDelay-(Date.now()-z);0<a?Da=setTimeout(function(){b.autoRotate=G;Q()},a):0<=b.autoRotateInactivityDelay&&G&&(b.autoRotate=G,Q())}}function oa(){var a;if(M){180<b.yaw?b.yaw-=360:
-180>b.yaw&&(b.yaw+=360);a=b.yaw;var c=b.maxYaw-b.minYaw,d=-180,e=180;360>c&&(d=b.minYaw+b.hfov/2,e=b.maxYaw-b.hfov/2,c<b.hfov&&(c=b.hfov-c,d-=c,e+=c));b.yaw=Math.max(d,Math.min(e,b.yaw));!1!==b.autoRotate&&a!=b.yaw&&(b.autoRotate*=-1);c=w.getCanvas();c=2*Math.atan(Math.tan(b.hfov/180*Math.PI*0.5)/(c.width/c.height))/Math.PI*180;a=b.minPitch+c/2;d=b.maxPitch-c/2;e=b.maxPitch-b.minPitch;e<c&&(c-=e,a-=c,d+=c);isNaN(a)&&(a=-90);isNaN(d)&&(d=90);b.pitch=Math.max(a,Math.min(d,b.pitch));w.render(b.pitch*
Math.PI/180,b.yaw*Math.PI/180,b.hfov*Math.PI/180,{roll:b.roll*Math.PI/180});da();b.compass&&(ra.style.transform="rotate("+(-b.yaw-b.northOffset)+"deg)",ra.style.webkitTransform="rotate("+(-b.yaw-b.northOffset)+"deg)")}}function S(a,b,c,d){this.w=a;this.x=b;this.y=c;this.z=d}function $(a){var c;c=a.alpha;var d=a.beta;a=a.gamma;d=[d?d*Math.PI/180/2:0,a?a*Math.PI/180/2:0,c?c*Math.PI/180/2:0];c=[Math.cos(d[0]),Math.cos(d[1]),Math.cos(d[2])];d=[Math.sin(d[0]),Math.sin(d[1]),Math.sin(d[2])];c=new S(c[0]*
c[1]*c[2]-d[0]*d[1]*d[2],d[0]*c[1]*c[2]-c[0]*d[1]*d[2],c[0]*d[1]*c[2]+d[0]*c[1]*d[2],c[0]*c[1]*d[2]+d[0]*d[1]*c[2]);c=c.multiply(new S(Math.sqrt(0.5),-Math.sqrt(0.5),0,0));d=s.orientation?-s.orientation*Math.PI/180/2:0;c=c.multiply(new S(Math.cos(d),0,-Math.sin(d),0)).toEulerAngles();b.pitch=c[0]/Math.PI*180;b.roll=-c[1]/Math.PI*180;b.yaw=-c[2]/Math.PI*180+b.northOffset;J()}function Aa(){try{var a={};b.horizonPitch!==k&&(a.horizonPitch=b.horizonPitch);b.horizonRoll!==k&&(a.horizonRoll=b.horizonRoll);
w.init(K,b.type,b.dynamic,b.haov*Math.PI/180,b.vaov*Math.PI/180,b.vOffset*Math.PI/180,y,a);!0!==b.dynamic&&(K=k)}catch(c){if("webgl error"==c.type||"no webgl"==c.type)R();else if("webgl size error"==c.type)R("This panorama is too big for your device! It's "+c.width+"px wide, but your device only supports images up to "+c.maxWidth+"px wide. Try another device. (If you're the author, try scaling down the image.)");else throw R("Unknown error. Check developer console."),c;}}function y(){if(b.sceneFadeDuration&&
w.fadeImg!==k){w.fadeImg.style.opacity=0;var a=w.fadeImg;delete w.fadeImg;setTimeout(function(){L.removeChild(a)},b.sceneFadeDuration)}ra.style.display=b.compass?"inline":"none";g();r.load.box.style.display="none";C!==k&&(L.removeChild(C),C=k);M=!0;ta("load");Q()}function g(){Ea||(b.hotSpots?(b.hotSpots=b.hotSpots.sort(function(a,b){return a.pitch<b.pitch}),b.hotSpots.forEach(function(a){var c=f.createElement("div");c.className="pnlm-hotspot pnlm-sprite pnlm-"+sa(a.type);var d=f.createElement("span");
a.text&&(d.innerHTML=sa(a.text));var e;if(a.video){e=f.createElement("video");var g=a.video;b.basePath&&!E(g)&&(g=b.basePath+g);e.src=encodeURI(g);e.controls=!0;e.style.width=a.width+"px";L.appendChild(c);d.appendChild(e)}else if(a.image){g=a.image;b.basePath&&!E(g)&&(g=b.basePath+g);e=f.createElement("a");e.href=encodeURI(a.URL?a.URL:g);e.target="_blank";d.appendChild(e);var h=f.createElement("img");h.src=encodeURI(g);h.style.width=a.width+"px";h.style.paddingTop="5px";L.appendChild(c);e.appendChild(h);
d.style.maxWidth="initial"}else a.URL?(e=f.createElement("a"),e.href=encodeURI(a.URL),e.target="_blank",L.appendChild(e),c.style.cursor="pointer",d.style.cursor="pointer",e.appendChild(c)):(a.sceneId&&(c.onclick=function(){A(a.sceneId,a.targetPitch,a.targetYaw,a.targetHfov);return!1},c.ontouchend=function(){A(a.sceneId,a.targetPitch,a.targetYaw,a.targetHfov);return!1},c.style.cursor="pointer",d.style.cursor="pointer"),L.appendChild(c));if(a.text||a.video||a.image)c.classList.add("pnlm-tooltip"),c.appendChild(d),
d.style.width=d.scrollWidth-20+"px",d.style.marginLeft=-(d.scrollWidth-26)/2+"px",d.style.marginTop=-d.scrollHeight-12+"px";a.div=c})):b.hotSpots=[],Ea=!0,da())}function Ja(){if(b.hotSpots)for(var a=0;a<b.hotSpots.length;a++){for(var c=b.hotSpots[a].div;c.parentNode!=L;)c=c.parentNode;L.removeChild(c);delete b.hotSpots[a].div}Ea=!1;delete b.hotSpots}function da(){b.hotSpots.forEach(function(a){var c=Math.sin(a.pitch*Math.PI/180),d=Math.cos(a.pitch*Math.PI/180),e=Math.sin(b.pitch*Math.PI/180),g=Math.cos(b.pitch*
Math.PI/180),f=Math.cos((-a.yaw+b.yaw)*Math.PI/180),h=Math.tan(b.hfov*Math.PI/360),k=c*e+d*f*g;if(90>=a.yaw&&-90<a.yaw&&0>=k||(90<a.yaw||-90>=a.yaw)&&0>=k)a.div.style.visibility="hidden";else{a.div.style.visibility="visible";var l=w.getCanvas(),m=l.width/(s.devicePixelRatio||1),l=l.height/(s.devicePixelRatio||1),c="translate("+(-m/h*Math.sin((-a.yaw+b.yaw)*Math.PI/180)*d/k/2+m/2-13)+"px, "+(-m/h*(c*g-d*f*e)/k/2+l/2-13)+"px) translateZ(9999px)";a.div.style.webkitTransform=c;a.div.style.MozTransform=
c;a.div.style.transform=c}})}function p(a){b={};var c,d="haov vaov vOffset northOffset horizonPitch horizonRoll".split(" ");U=[];for(c in Fa)Fa.hasOwnProperty(c)&&(b[c]=Fa[c]);for(c in t.default)t.default.hasOwnProperty(c)&&(b[c]=t.default[c],0<=d.indexOf(c)&&U.push(c));if(null!==a&&""!==a&&t.scenes&&t.scenes[a]){var e=t.scenes[a];for(c in e)e.hasOwnProperty(c)&&(b[c]=e[c],0<=d.indexOf(c)&&U.push(c));b.scene=a}for(c in t)t.hasOwnProperty(c)&&(b[c]=t[c],0<=d.indexOf(c)&&U.push(c))}function c(){if("preview"in
b){var a=b.preview;b.basePath&&(a=b.basePath+a);C=f.createElement("div");C.className="pnlm-preview-img";C.style.backgroundImage="url('"+encodeURI(a)+"')";L.appendChild(C)}for(var c in b)if(b.hasOwnProperty(c))switch(c){case "title":r.title.innerHTML=sa(b[c]);r.container.style.display="inline";break;case "author":r.author.innerHTML="by "+sa(b[c]);r.container.style.display="inline";break;case "fallback":r.errorMsg.innerHTML='<p>Your browser does not support WebGL.<br><a href="'+encodeURI(b[c])+'" target="_blank">Click here to view this panorama in an alternative viewer.</a></p>';
break;case "hfov":u(Number(b[c]));break;case "autoLoad":!0===b[c]&&w===k&&(r.load.box.style.display="inline",x.load.style.display="none",ua());break;case "showZoomCtrl":x.zoom.style.display=b[c]?"block":"none";break;case "showFullscreenCtrl":x.fullscreen.style.display=b[c]&&("fullscreen"in f||"mozFullScreen"in f||"webkitIsFullScreen"in f||"msFullscreenElement"in f)?"block":"none"}}function h(){if(M&&!wa)if(za)f.exitFullscreen?f.exitFullscreen():f.mozCancelFullScreen?f.mozCancelFullScreen():f.webkitCancelFullScreen?
f.webkitCancelFullScreen():f.msExitFullscreen&&f.msExitFullscreen();else try{d.requestFullscreen?d.requestFullscreen():d.mozRequestFullScreen?d.mozRequestFullScreen():d.msRequestFullscreen?d.msRequestFullscreen():d.webkitRequestFullScreen()}catch(a){}}function l(){f.fullscreen||f.mozFullScreen||f.webkitIsFullScreen||f.msFullscreenElement?(x.fullscreen.classList.add("pnlm-fullscreen-toggle-button-active"),za=!0):(x.fullscreen.classList.remove("pnlm-fullscreen-toggle-button-active"),za=!1);w.resize();
u(b.hfov);Q()}function u(a){var c=b.minHfov;"multires"==b.type&&w&&(c=Math.min(c,w.getCanvas().width/(b.multiRes.cubeResolution/90*0.9)));c>=b.maxHfov?console.log("HFOV bounds do not make sense (minHfov >= maxHfov)."):b.hfov=a<c?c:a>b.maxHfov?b.maxHfov:a}function Ha(){wa&&(r.load.box.style.display="none",r.errorMsg.style.display="none",wa=!1,ta("errorcleared"));x.load.style.display="none";r.load.box.style.display="inline";ua()}function A(a,d,e,g,f){M=!1;var h,l;b.sceneFadeDuration&&!f?(f=new Image,
f.className="pnlm-fade-img",f.style.transition="opacity "+b.sceneFadeDuration/1E3+"s",f.style.width="100%",f.style.height="100%",f.onload=function(){A(a,d,e,g,!0)},h=w.render(b.pitch*Math.PI/180,b.yaw*Math.PI/180,b.hfov*Math.PI/180,{returnImage:!0}),h!==k&&(f.src=h),L.appendChild(f),w.fadeImg=f):(f="same"===d?b.pitch:d,h="same"===e?b.yaw:"sameAzimuth"===e?b.yaw+b.northOffset-t.scenes[a].northOffset:e,l="same"===g?b.hfov:g,Ja(),p(a),N=O=H=0,c(),f!==k&&(b.pitch=f),h!==k&&(b.yaw=h),l!==k&&(b.hfov=l),
ta("scenechange"),Ha())}function sa(a){return String(a).replace(/&/g,"&amp;").replace('"',"&quot;").replace("'","&#39;").replace("<","&lt;").replace(">","&gt;").replace("/","&#x2f;")}function ta(a){if(a in T)for(var b=0;b<T[a].length;b++)T[a][b].apply(null,[].slice.call(arguments,1))}var b,w,C,Y=!1,z=Date.now(),ha=0,ia=0,pa=-1,xa=0,ya=0,m=Array(10),za=!1,M=!1,wa=!1,Ba=!1,K,ba,N=0,O=0,H=0,Ca=!1,Da,G=0,T={},U=[],Ia=!1,Ea=!1,Fa={hfov:100,minHfov:50,maxHfov:120,pitch:0,minPitch:k,maxPitch:k,yaw:0,minYaw:-180,
maxYaw:180,roll:0,haov:360,vaov:180,vOffset:0,autoRotate:!1,autoRotateInactivityDelay:-1,type:"equirectangular",northOffset:0,showFullscreenCtrl:!0,dynamic:!1,keyboardZoom:!0,mouseZoom:!0};d="string"===typeof d?f.getElementById(d):d;d.classList.add("pnlm-container");d.tabIndex=0;var L=f.createElement("div");L.className="pnlm-render-container";d.appendChild(L);var Ga=f.createElement("div");Ga.className="pnlm-dragfix";d.appendChild(Ga);var V=f.createElement("span");V.className="pnlm-about-msg";V.innerHTML=
'<a href="https://pannellum.org/" target="_blank">Pannellum</a> 0b04d18';d.appendChild(V);Ga.addEventListener("contextmenu",ja);var r={};r.container=f.createElement("div");r.container.className="pnlm-panorama-info";r.title=f.createElement("div");r.title.className="pnlm-title-box";r.container.appendChild(r.title);r.author=f.createElement("div");r.author.className="pnlm-author-box";r.container.appendChild(r.author);d.appendChild(r.container);r.load={};r.load.box=f.createElement("div");r.load.box.className=
"pnlm-load-box";r.load.box.innerHTML="<p>Loading...</p>";r.load.lbox=f.createElement("div");r.load.lbox.className="pnlm-lbox";r.load.lbox.innerHTML='<div class="pnlm-loading"></div>';r.load.box.appendChild(r.load.lbox);r.load.lbar=f.createElement("div");r.load.lbar.className="pnlm-lbar";r.load.lbarFill=f.createElement("div");r.load.lbarFill.className="pnlm-lbar-fill";r.load.lbar.appendChild(r.load.lbarFill);r.load.box.appendChild(r.load.lbar);r.load.msg=f.createElement("p");r.load.msg.className="pnlm-lmsg";
r.load.box.appendChild(r.load.msg);d.appendChild(r.load.box);r.errorMsg=f.createElement("div");r.errorMsg.className="pnlm-error-msg pnlm-info-box";d.appendChild(r.errorMsg);var x={};x.container=f.createElement("div");x.container.className="pnlm-controls-container";d.appendChild(x.container);x.load=f.createElement("div");x.load.className="pnlm-load-button";x.load.innerHTML="<p>Click to<br>Load<br>Panorama<p>";x.load.addEventListener("click",Ha);d.appendChild(x.load);x.zoom=f.createElement("div");x.zoom.className=
"pnlm-zoom-controls pnlm-controls";x.zoomIn=f.createElement("div");x.zoomIn.className="pnlm-zoom-in pnlm-sprite pnlm-control";x.zoomIn.addEventListener("click",function(){M&&u(b.hfov-5)});x.zoom.appendChild(x.zoomIn);x.zoomOut=f.createElement("div");x.zoomOut.className="pnlm-zoom-out pnlm-sprite pnlm-control";x.zoomOut.addEventListener("click",function(){M&&u(b.hfov+5)});x.zoom.appendChild(x.zoomOut);x.container.appendChild(x.zoom);x.fullscreen=f.createElement("div");x.fullscreen.addEventListener("click",
h);x.fullscreen.className="pnlm-fullscreen-toggle-button pnlm-sprite pnlm-fullscreen-toggle-button-inactive pnlm-controls pnlm-control";(f.fullscreenEnabled||f.mozFullScreenEnabled||f.webkitFullscreenEnabled)&&x.container.appendChild(x.fullscreen);x.orientation=f.createElement("div");x.orientation.addEventListener("click",function(a){s.addEventListener("deviceorientation",$)});x.orientation.className="pnlm-orientation-button pnlm-sprite pnlm-controls pnlm-control";s.DeviceOrientationEvent&&s.addEventListener("deviceorientation",
function(a){s.removeEventListener("deviceorientation",this);a&&null!==a.alpha&&null!==a.beta&&null!==a.gamma&&x.container.appendChild(x.orientation)});var ra=f.createElement("div");ra.className="pnlm-compass pnlm-controls pnlm-control";d.appendChild(ra);t.firstScene?p(t.firstScene):t.default&&t.default.firstScene?p(t.default.firstScene):p(null);c();var aa=[],qa=[];S.prototype.multiply=function(a){return new S(this.w*a.w-this.x*a.x-this.y*a.y-this.z*a.z,this.x*a.w+this.w*a.x+this.y*a.z-this.z*a.y,
this.y*a.w+this.w*a.y+this.z*a.x-this.x*a.z,this.z*a.w+this.w*a.z+this.x*a.y-this.y*a.x)};S.prototype.toEulerAngles=function(){var a=Math.atan2(2*(this.w*this.x+this.y*this.z),1-2*(this.x*this.x+this.y*this.y)),b=Math.asin(2*(this.w*this.y-this.z*this.x)),c=Math.atan2(2*(this.w*this.z+this.x*this.y),1-2*(this.y*this.y+this.z*this.z));return[a,b,c]};this.getPitch=function(){return b.pitch};this.setPitch=function(a){b.pitch=a;requestAnimationFrame(J);return this};this.getPitchBounds=function(){return[b.minPitch,
b.maxPitch]};this.setPitchBounds=function(a){b.minPitch=Math.max(-90,Math.min(a[0],90));b.maxPitch=Math.max(-90,Math.min(a[1],90));return this};this.getYaw=function(){return b.yaw};this.setYaw=function(a){for(;180<a;)a-=360;for(;-180>a;)a+=360;b.yaw=a;requestAnimationFrame(J);return this};this.getYawBounds=function(){return[b.minYaw,b.maxYaw]};this.setYawBounds=function(a){b.minYaw=Math.max(-180,Math.min(a[0],180));b.maxYaw=Math.max(-180,Math.min(a[1],180));return this};this.getHfov=function(){return b.hfov};
this.setHfov=function(a){u(a);requestAnimationFrame(J);return this};this.getHfovBounds=function(){return[b.minHfov,b.maxHfov]};this.setHfovBounds=function(a){b.minHfov=Math.max(0,a[0]);b.maxHfov=Math.max(0,a[1]);return this};this.getNorthOffset=function(){return b.northOffset};this.setNorthOffset=function(a){b.northOffset=Math.max(360,Math.min(0,a));requestAnimationFrame(J);return this};this.startAutoRotate=function(a){a=a||G||1;b.autoRotate=a;Q();return this};this.stopAutoRotate=function(){G=b.autoRotate?
b.autoRotate:G;b.autoRotate=!1;return this};this.getRenderer=function(){return w};this.setUpdate=function(a){Ia=!0===a;w===k?ga():requestAnimationFrame(J);return this};this.mouseEventToCoords=function(a){return la(a)};this.loadScene=function(a,b,c,d){M&&A(a,b,c,d);return this};this.getScene=function(){return b.scene};this.toggleFullscreen=function(){h();return this};this.on=function(a,b){T[a]=T[a]||[];T[a].push(b);return this};this.off=function(a,b){if(!a)return T={},this;if(b){var c=T[a].indexOf(b);
0<=c&&T[a].splice(c,1);T[a].length=0}else delete T[a];return this};this.destroy=function(){w&&w.destroy();Ba&&(d.removeEventListener("mousedown",ka,!1),f.removeEventListener("mousemove",ea,!1),f.removeEventListener("mouseup",ca,!1),d.removeEventListener("mousewheel",I,!1),d.removeEventListener("DOMMouseScroll",I,!1),d.removeEventListener("mozfullscreenchange",l,!1),d.removeEventListener("webkitfullscreenchange",l,!1),d.removeEventListener("msfullscreenchange",l,!1),d.removeEventListener("fullscreenchange",
l,!1),s.removeEventListener("resize",B,!1),s.removeEventListener("orientationchange",B,!1),d.removeEventListener("keydown",na,!1),d.removeEventListener("keyup",fa,!1),d.removeEventListener("blur",P,!1),f.removeEventListener("mouseleave",ca,!1),d.removeEventListener("touchstart",ma,!1),d.removeEventListener("touchmove",X,!1),d.removeEventListener("touchend",v,!1),d.removeEventListener("pointerdown",e,!1),d.removeEventListener("pointermove",a,!1),d.removeEventListener("pointerup",F,!1),d.removeEventListener("pointerleave",
F,!1));d.innerHTML="";d.classList.remove("pnlm-container");d.classList.remove("pnlm-grab");d.classList.remove("pnlm-grabbing")}}return{viewer:function(d,f){return new E(d,f)}}}(window,document);function anError(s){var f=document.createElement("div");f.className="pnlm-info-box";f.innerHTML="<p>"+s+"</p>";document.getElementById("container").appendChild(f)}
function parseURLParameters(){var s=decodeURI(window.location.href).split("?");s.shift();if(1>s.length)anError("No configuration options were specified.");else{for(var s=s[0].split("&"),f={},k=0;k<s.length;k++){var E=s[k].split("=")[0],d=s[k].split("=")[1];if(""!=d)switch(E){case "hfov":case "pitch":case "yaw":case "haov":case "vaov":case "minHfov":case "maxHfov":case "minPitch":case "maxPitch":case "minYaw":case "maxYaw":case "vOffset":case "autoRotate":f[E]=Number(d);break;case "autoLoad":case "ignoreGPanoXMP":f[E]=
JSON.parse(d);break;case "tour":console.log("The `tour` parameter is deprecated and will be removed. Use the `config` parameter instead.");case "author":case "title":case "firstScene":case "fallback":case "preview":case "panorama":case "config":f[E]=decodeURIComponent(d);break;default:anError("An invalid configuration parameter was specified: "+E)}}var t;f.tour&&(f.config=f.tour);f.config?(t=new XMLHttpRequest,t.onload=function(){if(200!=t.status){var d=document.createElement("a");d.href=f.config;
d.innerHTML=d.href;anError("The file "+d.outerHTML+" could not be accessed.")}else{d=JSON.parse(t.responseText);void 0===d.basePath&&(d.basePath=f.config.substring(0,f.config.lastIndexOf("/")+1));for(var k in d)f.hasOwnProperty(k)||(f[k]=d[k]);"title"in f&&(document.title=f.title);pannellum.viewer("container",f)}},t.open("GET",f.config),t.send()):("title"in f&&(document.title=f.title),pannellum.viewer("container",f))}}
"file:"==window.location.protocol?anError("Due to browser security restrictions, Pannellum can't be run from the local filesystem; some sort of web server must be used."):parseURLParameters();
</script></body></html>
// Pannellum 0b04d18, https://github.com/mpetroff/pannellum
window.libpannellum=function(w,h,n){function W(X){function R(a,f){return 1==a.level&&1!=f.level?-1:1==f.level&&1!=a.level?1:f.timestamp-a.timestamp}function da(a,f){return a.level!=f.level?a.level-f.level:a.diff-f.diff}function D(a,f,e,b,k,d){this.vertices=a;this.side=f;this.level=e;this.x=b;this.y=k;this.path=d.replace("%s",f).replace("%l",e).replace("%x",b).replace("%y",k)}function la(a,f,b,h,k){var d;var g=f.vertices;d=Y(a,g.slice(0,3));var l=Y(a,g.slice(3,6)),s=Y(a,g.slice(6,9)),g=Y(a,g.slice(9,
12)),n=d[0]+l[0]+s[0]+g[0];-4==n||4==n?d=!1:(n=d[1]+l[1]+s[1]+g[1],d=-4==n||4==n?!1:4!=d[2]+l[2]+s[2]+g[2]);if(d){d=f.vertices;l=d[0]+d[3]+d[6]+d[9];s=d[1]+d[4]+d[7]+d[10];g=d[2]+d[5]+d[8]+d[11];n=Math.sqrt(l*l+s*s+g*g);g=Math.asin(g/n);l=Math.atan2(s,l)-h;l+=l>Math.PI?-2*Math.PI:l<-Math.PI?2*Math.PI:0;l=Math.abs(l);f.diff=Math.acos(Math.sin(b)*Math.sin(g)+Math.cos(b)*Math.cos(g)*Math.cos(l));l=!1;for(s=0;s<e.nodeCache.length;s++)if(e.nodeCache[s].path==f.path){l=!0;e.nodeCache[s].timestamp=e.nodeCacheTimestamp++;
e.nodeCache[s].diff=f.diff;e.currentNodes.push(e.nodeCache[s]);break}l||(f.timestamp=e.nodeCacheTimestamp++,e.currentNodes.push(f),e.nodeCache.push(f));if(f.level<e.level){var g=q.cubeResolution*Math.pow(2,f.level-q.maxLevel),l=Math.ceil(g*q.invTileResolution)-1,s=g%q.tileResolution*2,A=2*g%q.tileResolution;0===A&&(A=q.tileResolution);0===s&&(s=2*q.tileResolution);n=0.5;if(f.x==l||f.y==l)n=1-q.tileResolution/(q.tileResolution+A);var t=1-n,g=[],w=n,c=n,u=n,C=t,y=t,z=t;if(A<q.tileResolution)if(f.x==
l&&f.y!=l){if(y=c=0.5,"d"==f.side||"u"==f.side)z=u=0.5}else f.x!=l&&f.y==l&&(C=w=0.5,"l"==f.side||"r"==f.side)&&(z=u=0.5);s<=q.tileResolution&&(f.x==l&&(w=0,C=1,"l"==f.side||"r"==f.side)&&(u=0,z=1),f.y==l&&(c=0,y=1,"d"==f.side||"u"==f.side)&&(u=0,z=1));A=[d[0],d[1],d[2],d[0]*w+d[3]*C,d[1]*n+d[4]*t,d[2]*u+d[5]*z,d[0]*w+d[6]*C,d[1]*c+d[7]*y,d[2]*u+d[8]*z,d[0]*n+d[9]*t,d[1]*c+d[10]*y,d[2]*u+d[11]*z];A=new D(A,f.side,f.level+1,2*f.x,2*f.y,q.fullpath);g.push(A);f.x==l&&s<=q.tileResolution||(A=[d[0]*w+
d[3]*C,d[1]*n+d[4]*t,d[2]*u+d[5]*z,d[3],d[4],d[5],d[3]*n+d[6]*t,d[4]*c+d[7]*y,d[5]*u+d[8]*z,d[0]*w+d[6]*C,d[1]*c+d[7]*y,d[2]*u+d[8]*z],A=new D(A,f.side,f.level+1,2*f.x+1,2*f.y,q.fullpath),g.push(A));f.x==l&&s<=q.tileResolution||f.y==l&&s<=q.tileResolution||(A=[d[0]*w+d[6]*C,d[1]*c+d[7]*y,d[2]*u+d[8]*z,d[3]*n+d[6]*t,d[4]*c+d[7]*y,d[5]*u+d[8]*z,d[6],d[7],d[8],d[9]*w+d[6]*C,d[10]*n+d[7]*t,d[11]*u+d[8]*z],A=new D(A,f.side,f.level+1,2*f.x+1,2*f.y+1,q.fullpath),g.push(A));f.y==l&&s<=q.tileResolution||(A=
[d[0]*n+d[9]*t,d[1]*c+d[10]*y,d[2]*u+d[11]*z,d[0]*w+d[6]*C,d[1]*c+d[7]*y,d[2]*u+d[8]*z,d[9]*w+d[6]*C,d[10]*n+d[7]*t,d[11]*u+d[8]*z,d[9],d[10],d[11]],A=new D(A,f.side,f.level+1,2*f.x,2*f.y+1,q.fullpath),g.push(A));for(f=0;f<g.length;f++)la(a,g[f],b,h,k)}}}function ma(){return[-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,-1]}function fa(a,f,e){var b=Math.sin(f);f=Math.cos(f);
if("x"==e)return[a[0],f*a[1]+b*a[2],f*a[2]-b*a[1],a[3],f*a[4]+b*a[5],f*a[5]-b*a[4],a[6],f*a[7]+b*a[8],f*a[8]-b*a[7]];if("y"==e)return[f*a[0]-b*a[2],a[1],f*a[2]+b*a[0],f*a[3]-b*a[5],a[4],f*a[5]+b*a[3],f*a[6]-b*a[8],a[7],f*a[8]+b*a[6]];if("z"==e)return[f*a[0]+b*a[1],f*a[1]-b*a[0],a[2],f*a[3]+b*a[4],f*a[4]-b*a[3],a[5],f*a[6]+b*a[7],f*a[7]-b*a[6],a[8]]}function ea(a){return[a[0],a[4],a[8],a[12],a[1],a[5],a[9],a[13],a[2],a[6],a[10],a[14],a[3],a[7],a[11],a[15]]}function na(a){a.texture||W(encodeURI(a.path+
"."+q.extension),function(f){a.texture=f;a.textureLoaded=!0})}function Y(a,f){var e=[a[0]*f[0]+a[1]*f[1]+a[2]*f[2],a[4]*f[0]+a[5]*f[1]+a[6]*f[2],a[11]+a[8]*f[0]+a[9]*f[1]+a[10]*f[2],1/(a[12]*f[0]+a[13]*f[1]+a[14]*f[2])],b=e[0]*e[3],k=e[1]*e[3],e=e[2]*e[3],d=[0,0,0];-1>b&&(d[0]=-1);1<b&&(d[0]=1);-1>k&&(d[1]=-1);1<k&&(d[1]=1);if(-1>e||1<e)d[2]=1;return d}var t=h.createElement("canvas");t.style.width=t.style.height="100%";X.appendChild(t);var e,a,H,I,oa,P,ga,$,q,y,Q,J,pa,S,aa;this.init=function(x,f,
w,E,k,d,g,l){typeof f===n&&(f="equirectangular");y=f;q=x;Q=w;if(e){H&&(a.detachShader(e,H),a.deleteShader(H));I&&(a.detachShader(e,I),a.deleteShader(I));a.bindBuffer(a.ARRAY_BUFFER,null);a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,null);e.texture&&a.deleteTexture(e.texture);if(e.nodeCache)for(x=0;x<e.nodeCache.length;x++)a.deleteTexture(e.nodeCache[x].texture);a.deleteProgram(e);e=n}$=n;"cubemap"==y&&0!==(q[0].width&q[0].width-1)&&(navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 8_/)||navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 9_/)||
navigator.userAgent.match(/Trident.*rv[ :]*11\./))||a||(a=t.getContext("experimental-webgl",{alpha:!1,depth:!1}));if(!a&&("multires"==y&&q.hasOwnProperty("fallbackPath")||"cubemap"==y)&&("WebkitAppearance"in h.documentElement.style||navigator.userAgent.match(/Trident.*rv[ :]*11\./)||-1!==navigator.appVersion.indexOf("MSIE 10"))){P&&X.removeChild(P);P=h.createElement("div");P.className="pnlm-world";E=q.basePath?q.basePath+q.fallbackPath:q.fallbackPath;var s="frblud".split(""),D=0;k=function(){var a=
h.createElement("canvas");a.className="pnlm-face pnlm-"+s[this.side]+"face";P.appendChild(a);var d=a.getContext("2d");a.style.width=this.width+4+"px";a.style.height=this.height+4+"px";a.width=this.width+4;a.height=this.height+4;d.drawImage(this,2,2);var f=d.getImageData(0,0,a.width,a.height),c=f.data,e,b;for(e=2;e<a.width-2;e++)for(b=0;4>b;b++)c[4*(e+a.width)+b]=c[4*(e+2*a.width)+b],c[4*(e+a.width*(a.height-2))+b]=c[4*(e+a.width*(a.height-3))+b];for(e=2;e<a.height-2;e++)for(b=0;4>b;b++)c[4*(e*a.width+
1)+b]=c[4*(e*a.width+2)+b],c[4*((e+1)*a.width-2)+b]=c[4*((e+1)*a.width-3)+b];for(b=0;4>b;b++)c[4*(a.width+1)+b]=c[4*(2*a.width+2)+b],c[4*(2*a.width-2)+b]=c[4*(3*a.width-3)+b],c[4*(a.width*(a.height-2)+1)+b]=c[4*(a.width*(a.height-3)+2)+b],c[4*(a.width*(a.height-1)-2)+b]=c[4*(a.width*(a.height-2)-3)+b];for(e=1;e<a.width-1;e++)for(b=0;4>b;b++)c[4*e+b]=c[4*(e+a.width)+b],c[4*(e+a.width*(a.height-1))+b]=c[4*(e+a.width*(a.height-2))+b];for(e=1;e<a.height-1;e++)for(b=0;4>b;b++)c[e*a.width*4+b]=c[4*(e*a.width+
1)+b],c[4*((e+1)*a.width-1)+b]=c[4*((e+1)*a.width-2)+b];for(b=0;4>b;b++)c[b]=c[4*(a.width+1)+b],c[4*(a.width-1)+b]=c[4*(2*a.width-2)+b],c[a.width*(a.height-1)*4+b]=c[4*(a.width*(a.height-2)+1)+b],c[4*(a.width*a.height-1)+b]=c[4*(a.width*(a.height-1)-2)+b];d.putImageData(f,0,0);D++;6==D&&(oa=this.width,X.appendChild(P),g())};for(x=0;6>x;x++)d=new Image,d.crossOrigin="anonymous",d.side=x,d.onload=k,d.src="multires"==y?encodeURI(E.replace("%s",s[x])+"."+q.extension):encodeURI(q[x].src)}else{if(!a)throw console.log("Error: no WebGL support detected!"),
{type:"no webgl"};q.fullpath=q.basePath?q.basePath+q.path:q.path;q.invTileResolution=1/q.tileResolution;f=ma();ga=[];for(x=0;6>x;x++)ga[x]=f.slice(12*x,12*x+12),f=ma();if("equirectangular"==y){if(x=Math.max(q.width,q.height),f=a.getParameter(a.MAX_TEXTURE_SIZE),x>f)throw console.log("Error: The image is too big; it's "+x+"px wide, but this device's maximum supported width is "+f+"px."),{type:"webgl size error",width:x,maxWidth:f};}else if("cubemap"==y&&(x=q[0].width,f=a.getParameter(a.MAX_CUBE_MAP_TEXTURE_SIZE),
x>f))throw console.log("Error: The cube face image is too big; it's "+x+"px wide, but this device's maximum supported width is "+f+"px."),{type:"webgl size error",width:x,maxWidth:f};l===n||l.horizonPitch===n&&l.horizonRoll===n||($=[l.horizonPitch==n?0:l.horizonPitch,l.horizonRoll==n?0:l.horizonRoll]);l=a.TEXTURE_2D;a.viewport(0,0,t.width,t.height);H=a.createShader(a.VERTEX_SHADER);x=b;"multires"==y&&(x=B);a.shaderSource(H,x);a.compileShader(H);I=a.createShader(a.FRAGMENT_SHADER);x=ha;"cubemap"==
y?(l=a.TEXTURE_CUBE_MAP,x=Ka):"multires"==y&&(x=ia);a.shaderSource(I,x);a.compileShader(I);e=a.createProgram();a.attachShader(e,H);a.attachShader(e,I);a.linkProgram(e);a.getShaderParameter(H,a.COMPILE_STATUS)||console.log(a.getShaderInfoLog(H));a.getShaderParameter(I,a.COMPILE_STATUS)||console.log(a.getShaderInfoLog(I));a.getProgramParameter(e,a.LINK_STATUS)||console.log(a.getProgramInfoLog(e));a.useProgram(e);e.drawInProgress=!1;e.texCoordLocation=a.getAttribLocation(e,"a_texCoord");a.enableVertexAttribArray(e.texCoordLocation);
"multires"!=y?(J||(J=a.createBuffer()),a.bindBuffer(a.ARRAY_BUFFER,J),a.bufferData(a.ARRAY_BUFFER,new Float32Array([-1,1,1,1,1,-1,-1,1,1,-1,-1,-1]),a.STATIC_DRAW),a.vertexAttribPointer(e.texCoordLocation,2,a.FLOAT,!1,0,0),e.aspectRatio=a.getUniformLocation(e,"u_aspectRatio"),a.uniform1f(e.aspectRatio,t.width/t.height),e.psi=a.getUniformLocation(e,"u_psi"),e.theta=a.getUniformLocation(e,"u_theta"),e.f=a.getUniformLocation(e,"u_f"),e.h=a.getUniformLocation(e,"u_h"),e.v=a.getUniformLocation(e,"u_v"),
e.vo=a.getUniformLocation(e,"u_vo"),e.rot=a.getUniformLocation(e,"u_rot"),a.uniform1f(e.h,E/(2*Math.PI)),a.uniform1f(e.v,k/Math.PI),a.uniform1f(e.vo,d/Math.PI*2),e.texture=a.createTexture(),a.bindTexture(l,e.texture),"cubemap"==y?(a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[1]),a.texImage2D(a.TEXTURE_CUBE_MAP_NEGATIVE_X,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[3]),a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_Y,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[4]),a.texImage2D(a.TEXTURE_CUBE_MAP_NEGATIVE_Y,
0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[5]),a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_Z,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[0]),a.texImage2D(a.TEXTURE_CUBE_MAP_NEGATIVE_Z,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q[2])):a.texImage2D(l,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q),a.texParameteri(l,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(l,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(l,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(l,a.TEXTURE_MAG_FILTER,a.LINEAR)):(e.vertPosLocation=a.getAttribLocation(e,"a_vertCoord"),
a.enableVertexAttribArray(e.vertPosLocation),pa||(pa=a.createBuffer()),S||(S=a.createBuffer()),aa||(aa=a.createBuffer()),a.bindBuffer(a.ARRAY_BUFFER,S),a.bufferData(a.ARRAY_BUFFER,new Float32Array([0,0,1,0,1,1,0,1]),a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,aa),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),a.STATIC_DRAW),e.perspUniform=a.getUniformLocation(e,"u_perspMatrix"),e.cubeUniform=a.getUniformLocation(e,"u_cubeMatrix"),e.level=-1,e.currentNodes=[],e.nodeCache=
[],e.nodeCacheTimestamp=0);if(0!==a.getError())throw console.log("Error: Something went wrong with WebGL!"),{type:"webgl error"};g()}};this.destroy=function(){X!==n&&(t!==n&&X.removeChild(t),P!==n&&X.removeChild(P))};this.resize=function(){var b=w.devicePixelRatio||1;t.width=t.clientWidth*b;t.height=t.clientHeight*b;a&&(a.viewport(0,0,t.width,t.height),"multires"!=y&&a.uniform1f(e.aspectRatio,t.width/t.height))};this.resize();this.render=function(b,f,h,E){var k;k=0;E===n&&(E={});E.roll&&(k=E.roll);
if($!==n){var d=$[0],g=$[1],l=b,s=f,B=Math.cos(g)*Math.sin(b)*Math.sin(d)+Math.cos(b)*(Math.cos(d)*Math.cos(f)+Math.sin(g)*Math.sin(d)*Math.sin(f)),A=-Math.sin(b)*Math.sin(g)+Math.cos(b)*Math.cos(g)*Math.sin(f);b=Math.cos(g)*Math.cos(d)*Math.sin(b)+Math.cos(b)*(-Math.cos(f)*Math.sin(d)+Math.cos(d)*Math.sin(g)*Math.sin(f));b=Math.asin(Math.max(Math.min(b,1),-1));f=Math.atan2(A,B);d=[Math.cos(l)*(Math.sin(g)*Math.sin(d)*Math.cos(s)-Math.cos(d)*Math.sin(s)),Math.cos(l)*Math.cos(g)*Math.cos(s),Math.cos(l)*
(Math.cos(d)*Math.sin(g)*Math.cos(s)+Math.sin(s)*Math.sin(d))];g=[-Math.cos(b)*Math.sin(f),Math.cos(b)*Math.cos(f)];g=Math.acos(Math.max(Math.min((d[0]*g[0]+d[1]*g[1])/(Math.sqrt(d[0]*d[0]+d[1]*d[1]+d[2]*d[2])*Math.sqrt(g[0]*g[0]+g[1]*g[1])),1),-1));0>d[2]&&(g=2*Math.PI-g);k+=g}if(a||"multires"!=y&&"cubemap"!=y){if("multires"!=y)h=2*Math.atan(Math.tan(0.5*h)/(t.width/t.height)),h=1/Math.tan(0.5*h),a.uniform1f(e.psi,f),a.uniform1f(e.theta,b),a.uniform1f(e.rot,k),a.uniform1f(e.f,h),!0===Q&&"equirectangular"==
y&&(a.bindTexture(a.TEXTURE_2D,e.texture),a.texImage2D(a.TEXTURE_2D,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,q)),a.drawArrays(a.TRIANGLES,0,6);else{d=t.width/t.height;g=2*Math.atan(Math.tan(h/2)*t.height/t.width);g=1/Math.tan(g/2);d=[g/d,0,0,0,0,g,0,0,0,0,100.1/-99.9,20/-99.9,0,0,-1,0];for(g=1;g<q.maxLevel&&t.width>q.tileResolution*Math.pow(2,g-1)*Math.tan(h/2)*0.707;)g++;e.level=g;g=[1,0,0,0,1,0,0,0,1];g=fa(g,-k,"z");g=fa(g,-b,"x");g=fa(g,f,"y");g=[g[0],g[1],g[2],0,g[3],g[4],g[5],0,g[6],g[7],g[8],0,0,0,0,1];
a.uniformMatrix4fv(e.perspUniform,!1,new Float32Array(ea(d)));a.uniformMatrix4fv(e.cubeUniform,!1,new Float32Array(ea(g)));d=[d[0]*g[0],d[0]*g[1],d[0]*g[2],0,d[5]*g[4],d[5]*g[5],d[5]*g[6],0,d[10]*g[8],d[10]*g[9],d[10]*g[10],d[11],-g[8],-g[9],-g[10],0];e.nodeCache.sort(R);if(200<e.nodeCache.length&&e.nodeCache.length>e.currentNodes.length+50)for(g=e.nodeCache.splice(200,e.nodeCache.length-200),k=0;k<g.length;k++)a.deleteTexture(g[k].texture);e.currentNodes=[];g="fbudlr".split("");for(k=0;6>k;k++)l=
new D(ga[k],g[k],1,0,0,q.fullpath),la(d,l,b,f,h);e.currentNodes.sort(da);for(k=0;k<e.currentNodes.length;k++)if(!e.currentNodes[k].texture){setTimeout(na(e.currentNodes[k]),0);break}if(!e.drawInProgress){e.drawInProgress=!0;for(b=0;b<e.currentNodes.length;b++)e.currentNodes[b].textureLoaded&&(a.bindBuffer(a.ARRAY_BUFFER,pa),a.bufferData(a.ARRAY_BUFFER,new Float32Array(e.currentNodes[b].vertices),a.STATIC_DRAW),a.vertexAttribPointer(e.vertPosLocation,3,a.FLOAT,!1,0,0),a.bindBuffer(a.ARRAY_BUFFER,S),
a.vertexAttribPointer(e.texCoordLocation,2,a.FLOAT,!1,0,0),a.bindTexture(a.TEXTURE_2D,e.currentNodes[b].texture),a.drawElements(a.TRIANGLES,6,a.UNSIGNED_SHORT,0));e.drawInProgress=!1}}if(E.returnImage!==n)return t.toDataURL("image/png")}else for(k=oa/2,E={f:"translate3d(-"+(k+2)+"px, -"+(k+2)+"px, -"+k+"px)",b:"translate3d("+(k+2)+"px, -"+(k+2)+"px, "+k+"px) rotateX(180deg) rotateZ(180deg)",u:"translate3d(-"+(k+2)+"px, -"+k+"px, "+(k+2)+"px) rotateX(270deg)",d:"translate3d(-"+(k+2)+"px, "+k+"px, -"+
(k+2)+"px) rotateX(90deg)",l:"translate3d(-"+k+"px, -"+(k+2)+"px, "+(k+2)+"px) rotateX(180deg) rotateY(90deg) rotateZ(180deg)",r:"translate3d("+k+"px, -"+(k+2)+"px, -"+(k+2)+"px) rotateY(270deg)"},h=1/Math.tan(h/2),h=h*t.width/(w.devicePixelRatio||1)/2+"px",b="perspective("+h+") translateZ("+h+") rotateX("+b+"rad) rotateY("+f+"rad) ",f=Object.keys(E),k=0;6>k;k++)h=P.querySelector(".pnlm-"+f[k]+"face").style,h.webkitTransform=b+E[f[k]],h.transform=b+E[f[k]]};this.isLoading=function(){if(a&&"multires"==
y)for(var b=0;b<e.currentNodes.length;b++)if(!e.currentNodes[b].textureLoaded)return!0;return!1};this.getCanvas=function(){return t};var W=function(){function b(){var d=this;this.texture=this.callback=null;this.image=new Image;this.image.crossOrigin="anonymous";this.image.addEventListener("load",function(){var b=d.image;a.bindTexture(a.TEXTURE_2D,d.texture);a.texImage2D(a.TEXTURE_2D,0,a.RGB,a.RGB,a.UNSIGNED_BYTE,b);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,
a.TEXTURE_MIN_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);a.bindTexture(a.TEXTURE_2D,null);d.callback(d.texture);k.length?(b=k.shift(),d.loadTexture(b.src,b.texture,b.callback)):n[h++]=d})}function e(a,b,d){this.src=a;this.texture=b;this.callback=d}var h=4,n={},k=[];b.prototype.loadTexture=function(a,b,d){this.texture=b;this.callback=d;this.image.src=a};for(var d=0;d<h;d++)n[d]=new b;return function(b,
d){var q=a.createTexture();h?n[--h].loadTexture(b,q,d):k.push(new e(b,q,d));return q}}()}var b="attribute vec2 a_texCoord;varying vec2 v_texCoord;void main() {gl_Position = vec4(a_texCoord, 0.0, 1.0);v_texCoord = a_texCoord;}",B="attribute vec3 a_vertCoord;attribute vec2 a_texCoord;uniform mat4 u_cubeMatrix;uniform mat4 u_perspMatrix;varying mediump vec2 v_texCoord;void main(void) {gl_Position = u_perspMatrix * u_cubeMatrix * vec4(a_vertCoord, 1.0);v_texCoord = a_texCoord;}",Ka="precision mediump float;\nuniform float u_aspectRatio;\nuniform float u_psi;\nuniform float u_theta;\nuniform float u_f;\nuniform float u_h;\nuniform float u_v;\nuniform float u_vo;\nuniform float u_rot;\nconst float PI = 3.14159265358979323846264;\nuniform samplerCube u_image;\nvarying vec2 v_texCoord;\nvoid main() {\nvec3 planePos = vec3(v_texCoord.xy, 0.0);\nplanePos.x *= u_aspectRatio;\nfloat sinrot = sin(u_rot);\nfloat cosrot = cos(u_rot);\nvec3 rotPos = vec3(planePos.x * cosrot - planePos.y * sinrot, planePos.x * sinrot + planePos.y * cosrot, 0.0);\nvec3 viewVector = rotPos - vec3(0.0, 0.0, -u_f);\nfloat sinpsi = sin(-u_psi);\nfloat cospsi = cos(-u_psi);\nfloat sintheta = sin(u_theta);\nfloat costheta = cos(u_theta);\nvec3 viewVectorTheta = viewVector;\nviewVectorTheta.z = viewVector.z * costheta - viewVector.y * sintheta;\nviewVectorTheta.y = viewVector.z * sintheta + viewVector.y * costheta;\nvec3 viewVectorPsi = viewVectorTheta;\nviewVectorPsi.x = viewVectorTheta.x * cospsi - viewVectorTheta.z * sinpsi;\nviewVectorPsi.z = viewVectorTheta.x * sinpsi + viewVectorTheta.z * cospsi;\ngl_FragColor = textureCube(u_image, viewVectorPsi);\n}",
ha="precision mediump float;\nuniform float u_aspectRatio;\nuniform float u_psi;\nuniform float u_theta;\nuniform float u_f;\nuniform float u_h;\nuniform float u_v;\nuniform float u_vo;\nuniform float u_rot;\nconst float PI = 3.14159265358979323846264;\nuniform sampler2D u_image;\nvarying vec2 v_texCoord;\nvoid main() {\nfloat x = v_texCoord.x * u_aspectRatio;\nfloat y = v_texCoord.y;\nfloat sinrot = sin(u_rot);\nfloat cosrot = cos(u_rot);\nfloat rot_x = x * cosrot - y * sinrot;\nfloat rot_y = x * sinrot + y * cosrot;\nfloat sintheta = sin(u_theta);\nfloat costheta = cos(u_theta);\nfloat a = u_f * costheta - rot_y * sintheta;\nfloat root = sqrt(rot_x * rot_x + a * a);\nfloat lambda = atan(rot_x / root, a / root) + u_psi;\nfloat phi = atan((rot_y * costheta + u_f * sintheta) / root);\nif(lambda > PI)\nlambda = lambda - PI * 2.0;\nif(lambda < -PI)\nlambda = lambda + PI * 2.0;\nvec2 coord = vec2(lambda / PI, phi / (PI / 2.0));\nif(coord.x < -u_h || coord.x > u_h || coord.y < -u_v + u_vo || coord.y > u_v + u_vo)\ngl_FragColor = vec4(0, 0, 0, 1.0);\nelse\ngl_FragColor = texture2D(u_image, vec2((coord.x + u_h) / (u_h * 2.0), (-coord.y + u_v + u_vo) / (u_v * 2.0)));\n}",
ia="varying mediump vec2 v_texCoord;uniform sampler2D u_sampler;void main(void) {gl_FragColor = texture2D(u_sampler, v_texCoord);}";return{renderer:function(b,h,n,w){return new W(b,h,n,w)}}}(window,document);window.requestAnimationFrame||(window.requestAnimationFrame=function(){return window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(w,h){window.setTimeout(w,1E3/60)}}());
window.pannellum=function(w,h,n){function W(b,B){function W(){var a=h.createElement("div");a.innerHTML="\x3c!--[if lte IE 9]><i></i><![endif]--\x3e";if(1==a.getElementsByTagName("i").length)R();else{var p;if("cubemap"==c.type){K=[];for(a=0;6>a;a++)K.push(new Image),K[a].crossOrigin="anonymous";r.load.lbox.style.display="block";r.load.lbar.style.display="none"}else if("multires"==c.type)a=JSON.parse(JSON.stringify(c.multiRes)),c.basePath&&c.multiRes.basePath&&!/^(?:[a-z]+:)?\/\//i.test(c.multiRes.basePath)?
a.basePath=c.basePath+c.multiRes.basePath:c.multiRes.basePath?a.basePath=c.multiRes.basePath:c.basePath&&(a.basePath=c.basePath),K=a;else if(!0===c.dynamic)K=c.panorama;else{if(c.panorama===n){R("No panorama image was specified.");return}K=new Image}if("cubemap"==c.type)for(var d=6,e=function(){d--;0===d&&ia()},f=function(a){var c=h.createElement("a");c.href=a.target.src;c.innerHTML=c.href;R("The file "+c.outerHTML+" could not be accessed.")},a=0;a<K.length;a++)K[a].onload=e,K[a].onerror=f,p=c.cubeMap[a],
c.basePath&&!ha(p)&&(p=c.basePath+p),K[a].src=encodeURI(p);else if("multires"==c.type)ia();else if(p="",c.basePath&&(p=c.basePath),!0!==c.dynamic){p=ha(c.panorama)?c.panorama:p+c.panorama;K.onload=function(){w.URL.revokeObjectURL(this.src);ia()};var g=new XMLHttpRequest;g.onloadend=function(){if(200!=g.status){var a=h.createElement("a");a.href=encodeURI(p);a.innerHTML=a.href;R("The file "+a.outerHTML+" could not be accessed.")}X(this.response);r.load.msg.innerHTML=""};g.onprogress=function(a){if(a.lengthComputable){r.load.lbarFill.style.width=
a.loaded/a.total*100+"%";var c,va;1E6<a.total?(c="MB",va=(a.loaded/1E6).toFixed(2),a=(a.total/1E6).toFixed(2)):1E3<a.total?(c="kB",va=(a.loaded/1E3).toFixed(1),a=(a.total/1E3).toFixed(1)):(c="B",va=a.loaded,a=a.total);r.load.msg.innerHTML=va+" / "+a+" "+c}else r.load.lbox.style.display="block",r.load.lbar.style.display="none"};try{g.open("GET",p,!0)}catch(k){R("There is something wrong with the panorama URL.")}g.responseType="blob";g.setRequestHeader("Accept","image/*,*/*;q=0.9");g.send()}b.classList.add("pnlm-grab");
b.classList.remove("pnlm-grabbing")}}function ha(a){return/^(?:[a-z]+:)?\/\//i.test(a)|"/"==a[0]}function ia(){u||(u=new libpannellum.renderer(L));Aa||(Aa=!0,b.addEventListener("mousedown",la,!1),h.addEventListener("mousemove",fa,!1),h.addEventListener("mouseup",ea,!1),c.mouseZoom&&(b.addEventListener("mousewheel",I,!1),b.addEventListener("DOMMouseScroll",I,!1)),b.addEventListener("mozfullscreenchange",l,!1),b.addEventListener("webkitfullscreenchange",l,!1),b.addEventListener("msfullscreenchange",
l,!1),b.addEventListener("fullscreenchange",l,!1),w.addEventListener("resize",y,!1),w.addEventListener("orientationchange",y,!1),b.addEventListener("keydown",oa,!1),b.addEventListener("keyup",ga,!1),b.addEventListener("blur",P,!1),h.addEventListener("mouseleave",ea,!1),b.addEventListener("touchstart",na,!1),b.addEventListener("touchmove",Y,!1),b.addEventListener("touchend",t,!1),b.addEventListener("pointerdown",e,!1),b.addEventListener("pointermove",a,!1),b.addEventListener("pointerup",H,!1),b.addEventListener("pointerleave",
H,!1),w.navigator.pointerEnabled&&(b.style.touchAction="none"));Ja();setTimeout(function(){},500)}function X(a){var p=new FileReader;p.addEventListener("loadend",function(){var b=p.result;if(navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 8_/)){var d=b.indexOf("\u00ff\u00c2");(0>d||65536<d)&&R("Due to iOS 8's broken WebGL implementation, only progressive encoded JPEGs work for your device (this panorama uses standard encoding).")}d=b.indexOf("<x:xmpmeta");if(-1<d&&!0!==c.ignoreGPanoXMP){var e=
b.substring(d,b.indexOf("</x:xmpmeta>")+12),f=function(a){var c;0<=e.indexOf(a+'="')?(c=e.substring(e.indexOf(a+'="')+a.length+2),c=c.substring(0,c.indexOf('"'))):0<=e.indexOf(a+">")&&(c=e.substring(e.indexOf(a+">")+a.length+1),c=c.substring(0,c.indexOf("<")));return c!==n?Number(c):null},b=f("GPano:FullPanoWidthPixels"),d=f("GPano:CroppedAreaImageWidthPixels"),g=f("GPano:FullPanoHeightPixels"),h=f("GPano:CroppedAreaImageHeightPixels"),k=f("GPano:CroppedAreaTopPixels"),l=f("GPano:PoseHeadingDegrees"),
m=f("GPano:PosePitchDegrees"),f=f("GPano:PoseRollDegrees");null!==b&&null!==d&&null!==g&&null!==h&&null!==k&&(0>U.indexOf("haov")&&(c.haov=d/b*360),0>U.indexOf("vaov")&&(c.vaov=h/g*180),0>U.indexOf("vOffset")&&(c.vOffset=-180*((k+h/2)/g-0.5)),null!==l&&0>U.indexOf("northOffset")&&(c.northOffset=l,!1!==c.compass&&(c.compass=!0)),null!==m&&null!==f&&(0>U.indexOf("horizonPitch")&&(c.horizonPitch=m/180*Math.PI),0>U.indexOf("horizonRoll")&&(c.horizonRoll=f/180*Math.PI)))}K.src=w.URL.createObjectURL(a)});
p.readAsBinaryString!==n?p.readAsBinaryString(a):p.readAsText(a)}function R(a){a===n&&(a="Your browser does not have the necessary WebGL support to display this panorama.");r.errorMsg.innerHTML="<p>"+a+"</p>";v.load.style.display="none";r.load.box.style.display="none";r.errorMsg.style.display="table";wa=!0;L.style.display="none";ua("error",a)}function da(a){var c=D(a);V.style.left=c.x+"px";V.style.top=c.y+"px";clearTimeout(da.t1);clearTimeout(da.t2);V.style.display="block";V.style.opacity=1;da.t1=
setTimeout(function(){V.style.opacity=0},2E3);da.t2=setTimeout(function(){V.style.display="none"},2500);a.preventDefault()}function D(a){var c=b.getBoundingClientRect(),d={};d.x=a.clientX-c.left;d.y=a.clientY-c.top;return d}function la(a){a.preventDefault();b.focus();if(M){var p=D(a);c.hotSpotDebug&&(a=ma(a),console.log("Pitch: "+a[0]+", Yaw: "+a[1]+", Center Pitch: "+c.pitch+", Center Yaw: "+c.yaw+", HFOV: "+c.hfov));F=c.autoRotate?c.autoRotate:F;c.autoRotate=!1;w.removeEventListener("deviceorientation",
aa);G=c.roll=0;Z=!0;z=Date.now();ja=p.x;ka=p.y;xa=c.yaw;ya=c.pitch;b.classList.add("pnlm-grabbing");b.classList.remove("pnlm-grab");Q()}}function ma(a){var p=D(a),b=u.getCanvas();a=p.x/b.width*2-1;var d=(1-p.y/b.height*2)*b.height/b.width,e=1/Math.tan(c.hfov*Math.PI/360),f=Math.sin(c.pitch*Math.PI/180),g=Math.cos(c.pitch*Math.PI/180),p=e*g-d*f,b=Math.sqrt(a*a+p*p),d=180*Math.atan((d*g+e*f)/b)/Math.PI;a=180*Math.atan2(a/b,p/b)/Math.PI+c.yaw;return[d,a]}function fa(a){if(Z&&M){z=Date.now();var p=u.getCanvas();
a=D(a);var b=180*(Math.atan(ja/p.width*2-1)-Math.atan(a.x/p.width*2-1))/Math.PI*c.hfov/90+xa;N=(b-c.yaw)%360*0.2;c.yaw=b;b=360*Math.atan(Math.tan(c.hfov/360*Math.PI)*p.height/p.width)/Math.PI;p=180*(Math.atan(a.y/p.height*2-1)-Math.atan(ka/p.height*2-1))/Math.PI*b/90+ya;O=0.2*(p-c.pitch);c.pitch=p}}function ea(){Z&&(Z=!1,15<Date.now()-z&&(O=N=0),b.classList.add("pnlm-grab"),b.classList.remove("pnlm-grabbing"),z=Date.now())}function na(a){if(M){F=c.autoRotate?c.autoRotate:F;c.autoRotate=!1;w.removeEventListener("deviceorientation",
aa);G=c.roll=0;var p=D(a.targetTouches[0]);ja=p.x;ka=p.y;2==a.targetTouches.length&&(a=D(a.targetTouches[1]),ja+=0.5*(a.x-p.x),ka+=0.5*(a.y-p.y),qa=Math.sqrt((p.x-a.x)*(p.x-a.x)+(p.y-a.y)*(p.y-a.y)));Z=!0;z=Date.now();xa=c.yaw;ya=c.pitch;Q()}}function Y(a){a.preventDefault();M&&(z=Date.now());if(Z&&M){var p=D(a.targetTouches[0]),b=p.x,d=p.y;2==a.targetTouches.length&&-1!=qa&&(a=D(a.targetTouches[1]),b+=0.5*(a.x-p.x),d+=0.5*(a.y-p.y),p=Math.sqrt((p.x-a.x)*(p.x-a.x)+(p.y-a.y)*(p.y-a.y)),s(c.hfov+0.1*
(qa-p)),qa=p);p=c.hfov/360;b=(ja-b)*p+xa;N=(b-c.yaw)%360*0.2;c.yaw=b;d=(d-ka)*p+ya;O=0.2*(d-c.pitch);c.pitch=d}}function t(){Z=!1;150<Date.now()-z&&(O=N=0);qa=-1;z=Date.now()}function e(a){"touch"==a.pointerType&&(ba.push(a.pointerId),ra.push({clientX:a.clientX,clientY:a.clientY}),a.targetTouches=ra,na(a),a.preventDefault())}function a(a){if("touch"==a.pointerType)for(var c=0;c<ba.length;c++)if(a.pointerId==ba[c]){ra[c]={clientX:a.clientX,clientY:a.clientY};a.targetTouches=ra;Y(a);break}}function H(a){if("touch"==
a.pointerType){for(var c=!1,b=0;b<ba.length;b++)a.pointerId==ba[b]&&(ba[b]=n),ba[b]&&(c=!0);c||(ba=[],ra=[],t());a.preventDefault()}}function I(a){a.preventDefault();M&&(F=c.autoRotate?c.autoRotate:F,c.autoRotate=!1,z=Date.now(),a.wheelDeltaY?(s(c.hfov-0.05*a.wheelDeltaY),G=0>a.wheelDelta?1:-1):a.wheelDelta?(s(c.hfov-0.05*a.wheelDelta),G=0>a.wheelDelta?1:-1):a.detail&&(s(c.hfov+1.5*a.detail),G=0<a.detail?1:-1),Q())}function oa(a){a.preventDefault();F=c.autoRotate?c.autoRotate:F;c.autoRotate=!1;z=
Date.now();w.removeEventListener("deviceorientation",aa);c.roll=0;var b=a.keycode;a.which&&(b=a.which);27==b?za&&g():$(b,!0)}function P(){for(var a=0;10>a;a++)m[a]=!1}function ga(a){a.preventDefault();var c=a.keycode;a.which&&(c=a.which);$(c,!1)}function $(a,c){var b=!1;switch(a){case 109:case 189:case 17:m[0]!=c&&(b=!0);m[0]=c;break;case 107:case 187:case 16:m[1]!=c&&(b=!0);m[1]=c;break;case 38:m[2]!=c&&(b=!0);m[2]=c;break;case 87:m[6]!=c&&(b=!0);m[6]=c;break;case 40:m[3]!=c&&(b=!0);m[3]=c;break;
case 83:m[7]!=c&&(b=!0);m[7]=c;break;case 37:m[4]!=c&&(b=!0);m[4]=c;break;case 65:m[8]!=c&&(b=!0);m[8]=c;break;case 39:m[5]!=c&&(b=!0);m[5]=c;break;case 68:m[9]!=c&&(b=!0),m[9]=c}b&&c&&(ca="undefined"!==typeof performance&&performance.now()?performance.now():Date.now(),Q())}function q(){if(M){var a=!1,b=c.pitch,d=c.yaw,e=c.hfov,f;f="undefined"!==typeof performance&&performance.now()?performance.now():Date.now();ca===n&&(ca=f);var g=(f-ca)*c.hfov/1700,g=Math.min(g,1);m[0]&&!0===c.keyboardZoom&&(s(c.hfov+
(0.8*G+0.5)*g),a=!0);m[1]&&!0===c.keyboardZoom&&(s(c.hfov+(0.8*G-0.2)*g),a=!0);if(m[2]||m[6])c.pitch+=(0.8*O+0.2)*g,a=!0;if(m[3]||m[7])c.pitch+=(0.8*O-0.2)*g,a=!0;if(m[4]||m[8])c.yaw+=(0.8*N-0.2)*g,a=!0;if(m[5]||m[9])c.yaw+=(0.8*N+0.2)*g,a=!0;a&&(z=Date.now());Date.now();c.autoRotate&&!1!==c.autoRotateStopDelay&&(0.001<f-ca&&(c.yaw-=c.autoRotate*(f-ca)/1E3),c.autoRotateStopDelay&&(c.autoRotateStopDelay-=f-ca,0>=c.autoRotateStopDelay&&(c.autoRotateStopDelay=!1)));0<g&&(m[4]||m[5]||m[8]||m[9]||(c.yaw+=
N*g*0.85),m[2]||m[3]||m[6]||m[7]||(c.pitch+=O*g*0.85),m[0]||m[1]||s(c.hfov+G*g*0.85));ca=f;0<g&&(N=0.8*N+(c.yaw-d)/g*0.2,O=0.8*O+(c.pitch-b)/g*0.2,G=0.8*G+(c.hfov-e)/g*0.2,N=Math.min(5,Math.max(N,-5)),O=Math.min(5,Math.max(O,-5)),G=Math.min(5,Math.max(G,-5)));m[0]&&m[0]&&(G=0);(m[2]||m[6])&&(m[3]||m[7])&&(O=0);(m[4]||m[8])&&(m[5]||m[9])&&(N=0)}}function y(){l()}function Q(){Ba||(Ba=!0,J())}function J(){pa();Ca&&clearTimeout(Ca);if(Z)requestAnimationFrame(J);else if(m[0]||m[1]||m[2]||m[3]||m[4]||m[5]||
m[6]||m[7]||m[8]||m[9]||c.autoRotate||0.01<Math.abs(N)||0.01<Math.abs(O)||0.01<Math.abs(G))q(),0<=c.autoRotateInactivityDelay&&F&&Date.now()-z>c.autoRotateInactivityDelay&&(c.autoRotate=F),requestAnimationFrame(J);else if(u&&(u.isLoading()||!0===c.dynamic&&Ha))requestAnimationFrame(J);else{Ba=!1;var a=c.autoRotateInactivityDelay-(Date.now()-z);0<a?Ca=setTimeout(function(){c.autoRotate=F;Q()},a):0<=c.autoRotateInactivityDelay&&F&&(c.autoRotate=F,Q())}}function pa(){var a;if(M){180<c.yaw?c.yaw-=360:
-180>c.yaw&&(c.yaw+=360);a=c.yaw;var b=c.maxYaw-c.minYaw,d=-180,e=180;360>b&&(d=c.minYaw+c.hfov/2,e=c.maxYaw-c.hfov/2,b<c.hfov&&(b=c.hfov-b,d-=b,e+=b));c.yaw=Math.max(d,Math.min(e,c.yaw));!1!==c.autoRotate&&a!=c.yaw&&(c.autoRotate*=-1);b=u.getCanvas();b=2*Math.atan(Math.tan(c.hfov/180*Math.PI*0.5)/(b.width/b.height))/Math.PI*180;a=c.minPitch+b/2;d=c.maxPitch-b/2;e=c.maxPitch-c.minPitch;e<b&&(b-=e,a-=b,d+=b);isNaN(a)&&(a=-90);isNaN(d)&&(d=90);c.pitch=Math.max(a,Math.min(d,c.pitch));u.render(c.pitch*
Math.PI/180,c.yaw*Math.PI/180,c.hfov*Math.PI/180,{roll:c.roll*Math.PI/180});E();c.compass&&(sa.style.transform="rotate("+(-c.yaw-c.northOffset)+"deg)",sa.style.webkitTransform="rotate("+(-c.yaw-c.northOffset)+"deg)")}}function S(a,c,b,d){this.w=a;this.x=c;this.y=b;this.z=d}function aa(a){var b;b=a.alpha;var d=a.beta;a=a.gamma;d=[d?d*Math.PI/180/2:0,a?a*Math.PI/180/2:0,b?b*Math.PI/180/2:0];b=[Math.cos(d[0]),Math.cos(d[1]),Math.cos(d[2])];d=[Math.sin(d[0]),Math.sin(d[1]),Math.sin(d[2])];b=new S(b[0]*
b[1]*b[2]-d[0]*d[1]*d[2],d[0]*b[1]*b[2]-b[0]*d[1]*d[2],b[0]*d[1]*b[2]+d[0]*b[1]*d[2],b[0]*b[1]*d[2]+d[0]*d[1]*b[2]);b=b.multiply(new S(Math.sqrt(0.5),-Math.sqrt(0.5),0,0));d=w.orientation?-w.orientation*Math.PI/180/2:0;b=b.multiply(new S(Math.cos(d),0,-Math.sin(d),0)).toEulerAngles();c.pitch=b[0]/Math.PI*180;c.roll=-b[1]/Math.PI*180;c.yaw=-b[2]/Math.PI*180+c.northOffset;J()}function Ja(){try{var a={};c.horizonPitch!==n&&(a.horizonPitch=c.horizonPitch);c.horizonRoll!==n&&(a.horizonRoll=c.horizonRoll);
u.init(K,c.type,c.dynamic,c.haov*Math.PI/180,c.vaov*Math.PI/180,c.vOffset*Math.PI/180,x,a);!0!==c.dynamic&&(K=n)}catch(b){if("webgl error"==b.type||"no webgl"==b.type)R();else if("webgl size error"==b.type)R("This panorama is too big for your device! It's "+b.width+"px wide, but your device only supports images up to "+b.maxWidth+"px wide. Try another device. (If you're the author, try scaling down the image.)");else throw R("Unknown error. Check developer console."),b;}}function x(){if(c.sceneFadeDuration&&
u.fadeImg!==n){u.fadeImg.style.opacity=0;var a=u.fadeImg;delete u.fadeImg;setTimeout(function(){L.removeChild(a)},c.sceneFadeDuration)}sa.style.display=c.compass?"inline":"none";f();r.load.box.style.display="none";C!==n&&(L.removeChild(C),C=n);M=!0;ua("load");Q()}function f(){Da||(c.hotSpots?(c.hotSpots=c.hotSpots.sort(function(a,c){return a.pitch<c.pitch}),c.hotSpots.forEach(function(a){var b=h.createElement("div");b.className="pnlm-hotspot pnlm-sprite pnlm-"+ta(a.type);var d=h.createElement("span");
a.text&&(d.innerHTML=ta(a.text));var e;if(a.video){e=h.createElement("video");var f=a.video;c.basePath&&!ha(f)&&(f=c.basePath+f);e.src=encodeURI(f);e.controls=!0;e.style.width=a.width+"px";L.appendChild(b);d.appendChild(e)}else if(a.image){f=a.image;c.basePath&&!ha(f)&&(f=c.basePath+f);e=h.createElement("a");e.href=encodeURI(a.URL?a.URL:f);e.target="_blank";d.appendChild(e);var g=h.createElement("img");g.src=encodeURI(f);g.style.width=a.width+"px";g.style.paddingTop="5px";L.appendChild(b);e.appendChild(g);
d.style.maxWidth="initial"}else a.URL?(e=h.createElement("a"),e.href=encodeURI(a.URL),e.target="_blank",L.appendChild(e),b.style.cursor="pointer",d.style.cursor="pointer",e.appendChild(b)):(a.sceneId&&(b.onclick=function(){A(a.sceneId,a.targetPitch,a.targetYaw,a.targetHfov);return!1},b.ontouchend=function(){A(a.sceneId,a.targetPitch,a.targetYaw,a.targetHfov);return!1},b.style.cursor="pointer",d.style.cursor="pointer"),L.appendChild(b));if(a.text||a.video||a.image)b.classList.add("pnlm-tooltip"),b.appendChild(d),
d.style.width=d.scrollWidth-20+"px",d.style.marginLeft=-(d.scrollWidth-26)/2+"px",d.style.marginTop=-d.scrollHeight-12+"px";a.div=b})):c.hotSpots=[],Da=!0,E())}function Ia(){if(c.hotSpots)for(var a=0;a<c.hotSpots.length;a++){for(var b=c.hotSpots[a].div;b.parentNode!=L;)b=b.parentNode;L.removeChild(b);delete c.hotSpots[a].div}Da=!1;delete c.hotSpots}function E(){c.hotSpots.forEach(function(a){var b=Math.sin(a.pitch*Math.PI/180),d=Math.cos(a.pitch*Math.PI/180),e=Math.sin(c.pitch*Math.PI/180),f=Math.cos(c.pitch*
Math.PI/180),g=Math.cos((-a.yaw+c.yaw)*Math.PI/180),h=Math.tan(c.hfov*Math.PI/360),k=b*e+d*g*f;if(90>=a.yaw&&-90<a.yaw&&0>=k||(90<a.yaw||-90>=a.yaw)&&0>=k)a.div.style.visibility="hidden";else{a.div.style.visibility="visible";var l=u.getCanvas(),m=l.width/(w.devicePixelRatio||1),l=l.height/(w.devicePixelRatio||1),b="translate("+(-m/h*Math.sin((-a.yaw+c.yaw)*Math.PI/180)*d/k/2+m/2-13)+"px, "+(-m/h*(b*f-d*g*e)/k/2+l/2-13)+"px) translateZ(9999px)";a.div.style.webkitTransform=b;a.div.style.MozTransform=
b;a.div.style.transform=b}})}function k(a){c={};var b,d="haov vaov vOffset northOffset horizonPitch horizonRoll".split(" ");U=[];for(b in Ea)Ea.hasOwnProperty(b)&&(c[b]=Ea[b]);for(b in B.default)B.default.hasOwnProperty(b)&&(c[b]=B.default[b],0<=d.indexOf(b)&&U.push(b));if(null!==a&&""!==a&&B.scenes&&B.scenes[a]){var e=B.scenes[a];for(b in e)e.hasOwnProperty(b)&&(c[b]=e[b],0<=d.indexOf(b)&&U.push(b));c.scene=a}for(b in B)B.hasOwnProperty(b)&&(c[b]=B[b],0<=d.indexOf(b)&&U.push(b))}function d(){if("preview"in
c){var a=c.preview;c.basePath&&(a=c.basePath+a);C=h.createElement("div");C.className="pnlm-preview-img";C.style.backgroundImage="url('"+encodeURI(a)+"')";L.appendChild(C)}for(var b in c)if(c.hasOwnProperty(b))switch(b){case "title":r.title.innerHTML=ta(c[b]);r.container.style.display="inline";break;case "author":r.author.innerHTML="by "+ta(c[b]);r.container.style.display="inline";break;case "fallback":r.errorMsg.innerHTML='<p>Your browser does not support WebGL.<br><a href="'+encodeURI(c[b])+'" target="_blank">Click here to view this panorama in an alternative viewer.</a></p>';
break;case "hfov":s(Number(c[b]));break;case "autoLoad":!0===c[b]&&u===n&&(r.load.box.style.display="inline",v.load.style.display="none",W());break;case "showZoomCtrl":v.zoom.style.display=c[b]?"block":"none";break;case "showFullscreenCtrl":v.fullscreen.style.display=c[b]&&("fullscreen"in h||"mozFullScreen"in h||"webkitIsFullScreen"in h||"msFullscreenElement"in h)?"block":"none"}}function g(){if(M&&!wa)if(za)h.exitFullscreen?h.exitFullscreen():h.mozCancelFullScreen?h.mozCancelFullScreen():h.webkitCancelFullScreen?
h.webkitCancelFullScreen():h.msExitFullscreen&&h.msExitFullscreen();else try{b.requestFullscreen?b.requestFullscreen():b.mozRequestFullScreen?b.mozRequestFullScreen():b.msRequestFullscreen?b.msRequestFullscreen():b.webkitRequestFullScreen()}catch(a){}}function l(){h.fullscreen||h.mozFullScreen||h.webkitIsFullScreen||h.msFullscreenElement?(v.fullscreen.classList.add("pnlm-fullscreen-toggle-button-active"),za=!0):(v.fullscreen.classList.remove("pnlm-fullscreen-toggle-button-active"),za=!1);u.resize();
s(c.hfov);Q()}function s(a){var b=c.minHfov;"multires"==c.type&&u&&(b=Math.min(b,u.getCanvas().width/(c.multiRes.cubeResolution/90*0.9)));b>=c.maxHfov?console.log("HFOV bounds do not make sense (minHfov >= maxHfov)."):c.hfov=a<b?b:a>c.maxHfov?c.maxHfov:a}function Ga(){wa&&(r.load.box.style.display="none",r.errorMsg.style.display="none",wa=!1,ua("errorcleared"));v.load.style.display="none";r.load.box.style.display="inline";W()}function A(a,b,e,f,g){M=!1;var h,l;c.sceneFadeDuration&&!g?(g=new Image,
g.className="pnlm-fade-img",g.style.transition="opacity "+c.sceneFadeDuration/1E3+"s",g.style.width="100%",g.style.height="100%",g.onload=function(){A(a,b,e,f,!0)},h=u.render(c.pitch*Math.PI/180,c.yaw*Math.PI/180,c.hfov*Math.PI/180,{returnImage:!0}),h!==n&&(g.src=h),L.appendChild(g),u.fadeImg=g):(g="same"===b?c.pitch:b,h="same"===e?c.yaw:"sameAzimuth"===e?c.yaw+c.northOffset-B.scenes[a].northOffset:e,l="same"===f?c.hfov:f,Ia(),k(a),N=O=G=0,d(),g!==n&&(c.pitch=g),h!==n&&(c.yaw=h),l!==n&&(c.hfov=l),
ua("scenechange"),Ga())}function ta(a){return String(a).replace(/&/g,"&amp;").replace('"',"&quot;").replace("'","&#39;").replace("<","&lt;").replace(">","&gt;").replace("/","&#x2f;")}function ua(a){if(a in T)for(var b=0;b<T[a].length;b++)T[a][b].apply(null,[].slice.call(arguments,1))}var c,u,C,Z=!1,z=Date.now(),ja=0,ka=0,qa=-1,xa=0,ya=0,m=Array(10),za=!1,M=!1,wa=!1,Aa=!1,K,ca,N=0,O=0,G=0,Ba=!1,Ca,F=0,T={},U=[],Ha=!1,Da=!1,Ea={hfov:100,minHfov:50,maxHfov:120,pitch:0,minPitch:n,maxPitch:n,yaw:0,minYaw:-180,
maxYaw:180,roll:0,haov:360,vaov:180,vOffset:0,autoRotate:!1,autoRotateInactivityDelay:-1,type:"equirectangular",northOffset:0,showFullscreenCtrl:!0,dynamic:!1,keyboardZoom:!0,mouseZoom:!0};b="string"===typeof b?h.getElementById(b):b;b.classList.add("pnlm-container");b.tabIndex=0;var L=h.createElement("div");L.className="pnlm-render-container";b.appendChild(L);var Fa=h.createElement("div");Fa.className="pnlm-dragfix";b.appendChild(Fa);var V=h.createElement("span");V.className="pnlm-about-msg";V.innerHTML=
'<a href="https://pannellum.org/" target="_blank">Pannellum</a> 0b04d18';b.appendChild(V);Fa.addEventListener("contextmenu",da);var r={};r.container=h.createElement("div");r.container.className="pnlm-panorama-info";r.title=h.createElement("div");r.title.className="pnlm-title-box";r.container.appendChild(r.title);r.author=h.createElement("div");r.author.className="pnlm-author-box";r.container.appendChild(r.author);b.appendChild(r.container);r.load={};r.load.box=h.createElement("div");r.load.box.className=
"pnlm-load-box";r.load.box.innerHTML="<p>Loading...</p>";r.load.lbox=h.createElement("div");r.load.lbox.className="pnlm-lbox";r.load.lbox.innerHTML='<div class="pnlm-loading"></div>';r.load.box.appendChild(r.load.lbox);r.load.lbar=h.createElement("div");r.load.lbar.className="pnlm-lbar";r.load.lbarFill=h.createElement("div");r.load.lbarFill.className="pnlm-lbar-fill";r.load.lbar.appendChild(r.load.lbarFill);r.load.box.appendChild(r.load.lbar);r.load.msg=h.createElement("p");r.load.msg.className="pnlm-lmsg";
r.load.box.appendChild(r.load.msg);b.appendChild(r.load.box);r.errorMsg=h.createElement("div");r.errorMsg.className="pnlm-error-msg pnlm-info-box";b.appendChild(r.errorMsg);var v={};v.container=h.createElement("div");v.container.className="pnlm-controls-container";b.appendChild(v.container);v.load=h.createElement("div");v.load.className="pnlm-load-button";v.load.innerHTML="<p>Click to<br>Load<br>Panorama<p>";v.load.addEventListener("click",Ga);b.appendChild(v.load);v.zoom=h.createElement("div");v.zoom.className=
"pnlm-zoom-controls pnlm-controls";v.zoomIn=h.createElement("div");v.zoomIn.className="pnlm-zoom-in pnlm-sprite pnlm-control";v.zoomIn.addEventListener("click",function(){M&&s(c.hfov-5)});v.zoom.appendChild(v.zoomIn);v.zoomOut=h.createElement("div");v.zoomOut.className="pnlm-zoom-out pnlm-sprite pnlm-control";v.zoomOut.addEventListener("click",function(){M&&s(c.hfov+5)});v.zoom.appendChild(v.zoomOut);v.container.appendChild(v.zoom);v.fullscreen=h.createElement("div");v.fullscreen.addEventListener("click",
g);v.fullscreen.className="pnlm-fullscreen-toggle-button pnlm-sprite pnlm-fullscreen-toggle-button-inactive pnlm-controls pnlm-control";(h.fullscreenEnabled||h.mozFullScreenEnabled||h.webkitFullscreenEnabled)&&v.container.appendChild(v.fullscreen);v.orientation=h.createElement("div");v.orientation.addEventListener("click",function(a){w.addEventListener("deviceorientation",aa)});v.orientation.className="pnlm-orientation-button pnlm-sprite pnlm-controls pnlm-control";w.DeviceOrientationEvent&&w.addEventListener("deviceorientation",
function(a){w.removeEventListener("deviceorientation",this);a&&null!==a.alpha&&null!==a.beta&&null!==a.gamma&&v.container.appendChild(v.orientation)});var sa=h.createElement("div");sa.className="pnlm-compass pnlm-controls pnlm-control";b.appendChild(sa);B.firstScene?k(B.firstScene):B.default&&B.default.firstScene?k(B.default.firstScene):k(null);d();var ba=[],ra=[];S.prototype.multiply=function(a){return new S(this.w*a.w-this.x*a.x-this.y*a.y-this.z*a.z,this.x*a.w+this.w*a.x+this.y*a.z-this.z*a.y,
this.y*a.w+this.w*a.y+this.z*a.x-this.x*a.z,this.z*a.w+this.w*a.z+this.x*a.y-this.y*a.x)};S.prototype.toEulerAngles=function(){var a=Math.atan2(2*(this.w*this.x+this.y*this.z),1-2*(this.x*this.x+this.y*this.y)),b=Math.asin(2*(this.w*this.y-this.z*this.x)),c=Math.atan2(2*(this.w*this.z+this.x*this.y),1-2*(this.y*this.y+this.z*this.z));return[a,b,c]};this.getPitch=function(){return c.pitch};this.setPitch=function(a){c.pitch=a;requestAnimationFrame(J);return this};this.getPitchBounds=function(){return[c.minPitch,
c.maxPitch]};this.setPitchBounds=function(a){c.minPitch=Math.max(-90,Math.min(a[0],90));c.maxPitch=Math.max(-90,Math.min(a[1],90));return this};this.getYaw=function(){return c.yaw};this.setYaw=function(a){for(;180<a;)a-=360;for(;-180>a;)a+=360;c.yaw=a;requestAnimationFrame(J);return this};this.getYawBounds=function(){return[c.minYaw,c.maxYaw]};this.setYawBounds=function(a){c.minYaw=Math.max(-180,Math.min(a[0],180));c.maxYaw=Math.max(-180,Math.min(a[1],180));return this};this.getHfov=function(){return c.hfov};
this.setHfov=function(a){s(a);requestAnimationFrame(J);return this};this.getHfovBounds=function(){return[c.minHfov,c.maxHfov]};this.setHfovBounds=function(a){c.minHfov=Math.max(0,a[0]);c.maxHfov=Math.max(0,a[1]);return this};this.getNorthOffset=function(){return c.northOffset};this.setNorthOffset=function(a){c.northOffset=Math.max(360,Math.min(0,a));requestAnimationFrame(J);return this};this.startAutoRotate=function(a){a=a||F||1;c.autoRotate=a;Q();return this};this.stopAutoRotate=function(){F=c.autoRotate?
c.autoRotate:F;c.autoRotate=!1;return this};this.getRenderer=function(){return u};this.setUpdate=function(a){Ha=!0===a;u===n?ia():requestAnimationFrame(J);return this};this.mouseEventToCoords=function(a){return ma(a)};this.loadScene=function(a,b,c,d){M&&A(a,b,c,d);return this};this.getScene=function(){return c.scene};this.toggleFullscreen=function(){g();return this};this.on=function(a,b){T[a]=T[a]||[];T[a].push(b);return this};this.off=function(a,b){if(!a)return T={},this;if(b){var c=T[a].indexOf(b);
0<=c&&T[a].splice(c,1);T[a].length=0}else delete T[a];return this};this.destroy=function(){u&&u.destroy();Aa&&(b.removeEventListener("mousedown",la,!1),h.removeEventListener("mousemove",fa,!1),h.removeEventListener("mouseup",ea,!1),b.removeEventListener("mousewheel",I,!1),b.removeEventListener("DOMMouseScroll",I,!1),b.removeEventListener("mozfullscreenchange",l,!1),b.removeEventListener("webkitfullscreenchange",l,!1),b.removeEventListener("msfullscreenchange",l,!1),b.removeEventListener("fullscreenchange",
l,!1),w.removeEventListener("resize",y,!1),w.removeEventListener("orientationchange",y,!1),b.removeEventListener("keydown",oa,!1),b.removeEventListener("keyup",ga,!1),b.removeEventListener("blur",P,!1),h.removeEventListener("mouseleave",ea,!1),b.removeEventListener("touchstart",na,!1),b.removeEventListener("touchmove",Y,!1),b.removeEventListener("touchend",t,!1),b.removeEventListener("pointerdown",e,!1),b.removeEventListener("pointermove",a,!1),b.removeEventListener("pointerup",H,!1),b.removeEventListener("pointerleave",
H,!1));b.innerHTML="";b.classList.remove("pnlm-container");b.classList.remove("pnlm-grab");b.classList.remove("pnlm-grabbing")}}return{viewer:function(b,h){return new W(b,h)}}}(window,document);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment