1"use strict";(self.webpackChunkzk_theatermuseum=self.webpackChunkzk_theatermuseum||[]).push([[713],{2587:function(t,e,s){s.d(e,{Gu:function(){return o},XL:function(){return n},yh:function(){return r}});var i=s(3534);function n(t){return"horizontal"===t?"x":"y"}function o(t){return"horizontal"===t?"width":"height"}class r extends i.L{constructor(t,e={}){super(t,e),this.watchMode="idle";const{direction:s="both",isDisabled:i=!1,threshold:n=3}=e;this.direction=s,this.isDisabled=i,this.threshold=n}onDrag(t,e){return!0}onDragBegin(t,e){return!0}onDragClick(t,e){}onDragEnd(t,e){}onAdd(t,e){return!this.isDisabled&&"idle"===this.watchMode&&(this.watchMode="listening",!0)}onMove(t,e){const{watchMode:s}=this;if("listening"===s){const{direction:s,threshold:i}=this;if(e.deltaLength<i)return!0;const{x:n,y:o}=e.delta;if("horizontal"===s&&Math.abs(n)<Math.abs(o)||"vertical"===s&&Math.abs(n)>Math.abs(o)||!this.onDragBegin(t,e))return this.setWatchMode("idle"),!1;e.resetInitialPosition(),this.setWatchMode("draging")}return!("draging"===s&&!this.onDrag(t,e))||(this.setWatchMode("idle"),!1)}onRemove(t,e){const{watchMode:s}=this;this.setWatchMode("idle"),"draging"===s?this.onDragEnd(t,e):"listening"===s&&this.onDragClick(t,e)}setWatchMode(t){const{watchMode:e}=this;e!==t&&(this.watchMode=t)}}},5713:function(t,e,s){s.d(e,{p:function(){return ot}});var i=s(1635),n=s(6687);function o(t,e,s,i){return(t/=i/2)<1?s/2*t*t*t+e:s/2*((t-=2)*t*t+2)+e}!function(t){t.toCSS=function(){return"cubic-bezier(0.645, 0.045, 0.355, 1)"}}(o||(o={}));var r=s(4395),a=s(3138),h=s(2573),u=s(5640),l=s(6225),c=s(4940),d=s(4506),f=s(7740);class p extends c.Q{constructor(){super(...arguments),this.disableTimeout=0,this.hasFrameHook=!1,this.isEnabled=!0,this.isVisible=!1}onConnected(){d.XD.observe(this)}onDisconnected(){d.XD.unobserve(this),this.clearTimeout(),this.update()}onLayer({detail:t}){const e=!t;this.clearTimeout(),e?(this.isEnabled=e,this.update()):this.disableTimeout=window.setTimeout((()=>{this.isEnabled=e,this.update()}),300)}clearTimeout(){this.disableTimeout&&window.clearTimeout(this.disableTimeout),this.disableTimeout=0}setVisible(t){this.isVisible=t,this.update()}update(){const t=this.isConnected&&this.isEnabled&&this.isVisible;this.hasFrameHook!==t&&(this.hasFrameHook=t,t?(0,l.AS)(this.view.onFrame):(0,l.bp)(this.view.onFrame))}}(0,i.Cg)([(0,a.f)({name:f.rD,target:window})],p.prototype,"onLayer",null);var y=s(3201),g=s(2587),m=s(6037),x=s(8898);function v(t,e,s,i,n){return i+(t-e)/(s-e)*(n-i)}const w=1e3,b=200;function M(t,e,s){return{bottom:e+b,depth:v(s.float(),0,1,1,1.2),distance:S(t,e),index:-1,left:t-b,originalX:t,originalY:e,right:t+b,scale:v(s.float(),0,1,.25,.85),top:e-b,x:t,y:e}}function I(t){const e=[];function s(t,s,i){let n=e.find((e=>e.u===t&&e.v===s));n||e.push(n=function(t,e){return{right:(t+1)*w,bottom:(e+1)*w,left:t*w,top:e*w,slots:[],u:t,v:e}}(t,s)),n.slots.push(i)}for(const e of t){const t=Math.floor((e.x-b)/w),i=Math.floor((e.x+b)/w),n=Math.floor((e.y-b)/w),o=Math.floor((e.y+b)/w);for(let r=t;r<=i;r++)for(let t=n;t<=o;t++)s(r,t,e)}return e}function S(t,e){return Math.sqrt(t*t+e*e)}function C({x:t,y:e}){return Math.sqrt(t*t+e*e)}function P(t,e){return!(e.left>t.right||e.right<t.left||e.top>t.bottom||e.bottom<t.top)}let D;function O(t,{height:e,width:s}){return t.offset.x=-.5*s,t.offset.y=-.5*e,t.radius=.5*Math.sqrt(e*e+s*s),t}function q(){return document.createElement("div")}class T extends g.yh{constructor(){super(...arguments),this.startPosition={x:0,y:0}}onDragBegin(){const{view:t}=this,{layout:e}=t,{position:s}=e;return this.startPosition.x=s.x,this.startPosition.y=s.y,t.setCurrentInstance(null),(0,l.ds)(e),!0}onDrag(t,{delta:e}){const{startPosition:s,view:i}=this,{layout:n}=i,{radius:o}=n,r={x:s.x-e.x,y:s.y-e.y},a=C(r);if(a>o){const t=(o+.5*(a-o))/a;r.x*=t,r.y*=t}return n.setPosition(r),!0}onDragEnd(t,e){const{view:s}=this,{layout:i}=s,{position:o,radius:r}=i;n.w.tryPreventNextClick(s);const a=C(o),h=e.getVelocity(),l=C(h),c={x:h.x/l,y:h.y/l},d=function(t,e,s){let i=e.x*e.x+e.y*e.y,n=2*(t.x*-e.x+t.y*-e.y),o=n*n-4*i*(t.x*t.x+t.y*t.y-s*s);if(o<0)return 1/0;let r=Math.sqrt(o),a=(-n+r)/(2*i),h=(-n-r)/(2*i),u=Math.min(a,h);return u<0&&(u=Math.max(a,h)),u>0?u:0}(o,c,r);if(d>0)i.prepareMomentum(c),(0,x.P)(i,{momentum:{velocity:l,min:0,max:d}});else if(a>r){const t=r/a,e={x:o.x*t,y:o.y*t},s=(0,y.q)(2*Math.abs(a-r),750,1500);(0,u.Q)(i,{position:e},{duration:s,easing:m.l})}}}var k=s(1943),F=s(7904);function $(t,e){return t+Math.random()*(e-t)}
1var E=s(8595),R=s(1983),j=s(8420);class Q{constructor(t,e){this.collisionScale=.333,this.hasHover=!1,this.hoverScale=1,this.isCurrent=!1,this.item=null,this.offset={x:0,y:0},this.radius=100,this.screen={x:0,y:0},this.visuals=[],this.wasForeign=!1,this.depth=e.depth,this.defaultScale=e.scale,this.layout=t,this.position={x:e.x,y:e.y},this.scale=this.defaultScale,this.slot=e;const{repository:s}=t,i=s.getItemSync(e.index);i?this.setItem(i):(this.setElement(q()),s.getItem(e.index).then((t=>{this.setItem(t)})))}get actualRadius(){return this.radius*this.scale*this.hoverScale*v(this.collisionScale,0,1,.75,1)}applyOffset(){if(!this.wasForeign)return;this.wasForeign=!1;const{offset:t,position:e}=this;t.x-=e.x,t.y-=e.y;const s=(0,y.q)(.5*C(t),500,2e3);(0,u.Q)(this,{offset:{x:0,y:0}},{delay:0,duration:s,easing:o})}beforeFrame(){const{position:t,slot:e}=this,s=this.isCurrent?.01:.005;t.x+=(e.x-t.x)*s,t.y+=(e.y-t.y)*s}collide(t){const{position:e}=this,{position:s}=t,i=s.x-e.x,n=s.y-e.y,o=Math.sqrt(i*i+n*n),r=this.actualRadius+t.actualRadius;if(o<r){const a=this.isCurrent||t.isCurrent,h=a?this.isCurrent?0:1:.25,u=a?t.isCurrent?0:1:.25,l=1/o*(r-o)*.5;e.x-=i*l*h,e.y-=n*l*h,s.x+=i*l*u,s.y+=n*l*u}}clearTimeouts(t=this.visuals){for(const e of t.filter((({timeout:t})=>!!t)))window.clearTimeout(e.timeout),e.timeout=0;return t}dispose(){this.clearTimeouts().map((({el:t,listeners:e})=>{t.remove(),e.map((t=>t())).length=0})).length=0}fadeIn(){for(const t of this.clearTimeouts()){const{el:e}=t;e.classList.add("hidden"),t.timeout=window.setTimeout((()=>{e.classList.remove("hidden"),(0,E.K)(e,"fadeIn",300)}),$(250,750))}}fadeOut(t){const e=this.clearTimeouts(this.visuals.filter((t=>!t.isFadingOut)));for(const s of e)s.isFadingOut=!0,s.listeners.map((t=>t())).length=0,t?s.timeout=window.setTimeout((()=>this.fadeOutVisual(s)),$(0,500)):this.fadeOutVisual(s)}fadeOutVisual(t){(0,E.K)(t.el,"fadeOut",300).then((()=>{t.el.remove();const e=this.visuals.indexOf(t);
1-1!==e&&this.visuals.splice(e,1)}))}hasElement(t){return this.visuals.some((e=>e.el===t))}moveTo(t,e){const{layout:s,offset:i,position:n}=this;this.layout=t,this.slot=e,this.wasForeign=!0,i.x=n.x-s.position.x,i.y=n.y-s.position.y,n.x=e.x,n.y=e.y}onClick(t){const{item:e,layout:s}=this,{$query:i,payload:n}=s.space.host;if(!e||!n)return;const o=n.types.find((t=>t.id===e.type));o&&o.isExhibition&&i?((0,j.NY)(i,{category:e.slug,types:[]}),t.preventDefault(),t.stopImmediatePropagation()):e&&R.y.exhibits.handleUrl(e.url)&&(t.preventDefault(),t.stopImmediatePropagation())}onFrame(t,e,s){const{depth:i,hoverScale:n,offset:o,position:r,scale:a,screen:h,visuals:u}=this;for(const s of u)h.x=(r.x+o.x-t.x)*i+e.x+s.offset.x,h.y=(r.y+o.y-t.y)*i+e.y+s.offset.y,s.el.style.transform=`translate(${h.x}px, ${h.y}px) scale(${a*n})`}onMeasure(){for(const t of this.visuals)t.isFadingOut||(O(t,{height:t.display.offsetHeight,width:t.display.offsetWidth}),this.radius=t.radius)}onMouseEnter(){this.hasHover=!0,(0,u.Q)(this,{hoverScale:this.isCurrent?1:1.15})}onMouseLeave(){this.hasHover=!1,(0,u.Q)(this,{hoverScale:1})}setCurrent(t,e){this.isCurrent=t,e?(this.collisionScale=t?1:0,this.hoverScale=1,this.scale=t?1:this.defaultScale):(0,u.Q)(this,{collisionScale:t?1:0,hoverScale:1,scale:t?1:this.defaultScale},{duration:1e3,easing:o});
1for(const e of this.visuals)e.el.classList.toggle("current",t)}setElement(t){this.fadeOut();const e=document.createElement("div");e.classList.add("dtmDigitalSpace__item"),e.classList.toggle("current",this.isCurrent),e.appendChild(t),this.layout.el.append(e),this.layout.needsMeasure=!0,this.radius=100,this.visuals.push({display:t,el:e,offset:{x:0,y:0},radius:100,listeners:[(0,F.on)(e,"mouseenter",this.onMouseEnter,{scope:this}),(0,F.on)(e,"mouseleave",this.onMouseLeave,{scope:this})]})}setItem(t){t?(this.item=t,this.setElement(function(t){D||(D=new DOMParser);return D.parseFromString(t,"text/html").body.firstElementChild||q()}(t.html))):console.error("Missing instance item")}}const V=600,L=200;class H{constructor({el:t,layout:e,repository:s,space:i}){this.instances=[],this.needsMeasure=!1,this.needsUpdate=!0,this.momentum=0,this.momentumDirection={x:0,y:0},this.offset={x:0,y:0},this.position={x:0,y:0},this.slotScale=1;const n=function(t,e){if(t<1)return[];const s=[],i=()=>v(e.float(),0,1,-50,50);let n=0;function o(){const t=300*++n,o=Math.floor(2*t*Math.PI/300),r=2*Math.PI/o;let a=e.float()*Math.PI;for(let n=0;n<o;n++)a+=r,s.push(M(Math.cos(a)*t+i(),Math.sin(a)*t+i(),e))}const r=Math.floor(1.1*t);for(;s.length<r;)o();for(;s.length>Math.max(0,t-1);)s.splice(e.range(0,s.length),1);s.push(M(0,0,e)),s.sort(((t,e)=>t.distance-e.distance));for(let t=0;t<s.length;t++)s[t].index=t;return s}(s.numResults,s.rng);this.buckets=I(n),this.el=t,this.radius=function(t){let e=0;for(const s of t)s.distance>e&&(e=s.distance);return e}(n),this.repository=s,this.space=i,this.slots=n,this.setViewport(i.viewport),this.update(e),e&&this.relax()}createInstance(t,e){const{repository:s}=this,i=e?s.getItemSync(t.index):null;if(i&&e){const s=e.instances.findIndex((t=>t.item&&t.item.slug===i.slug)),n=-1===s?null:e.instances[s];if(n&&function({x:t,y:e},{height:s,width:i}){return t>-200&&e>-200&&t<i+L&&e<s+L}(n.screen,e.viewport)){const i=e.instances[s];return i.moveTo(e,t),e.instances.splice(s,1),i}}const n=new Q(this,t);return e&&n.fadeIn(),n}dispose(){for(const t of this.instances)t.fadeOut()}findInstance(t){for(const e of this.instances)if(e.hasElement(t))return e;return null}onFrame(t){this.needsUpdate&&this.update(),this.needsMeasure&&(this.onMeasure(),this.needsMeasure=!1);const{instances:e,offset:s,position:i}=this,{length:n}=e;for(let o=0;o<n;o++){const r=e[o];r.beforeFrame();for(let t=o+1;t<n;t++)r.collide(e[t]);r.onFrame(i,s,t)}}onMeasure(){const t=(0,y.q)(((0,k.N)()-400)/1e3,0,1),e=.1*Math.round(4+6*t);this.slotScale!==e&&this.setSlotScale(e);for(const t of this.instances)t.onMeasure()}prepareMomentum(t){this.momentum=0,this.momentumDirection=t}relax(){const{instances:t}=this,{length:e}=t;for(let s=100;s>0;s--)for(let s=0;s<e;s++){const i=t[s];i.beforeFrame();for(let n=s+1;n<e;n++)i.collide(t[n])}for(const e of t)e.applyOffset()}setMomentum(t){const{position:e,momentum:s,momentumDirection:i}=this,n=s-t;e.x+=i.x*n,e.y+=i.y*n,this.momentum=t}setPosition(t){this.needsUpdate=!0,this.position.x=t.x,this.position.y=t.y}setSlotScale(t){const{instances:e,slots:s}=this;this.slotScale=t;for(const e of s)e.x=e.originalX*t,e.y=e.originalY*t;for(const t of e)t.position.x=t.slot.x,t.position.y=t.slot.y;this.buckets=I(s),this.relax()}setViewport(t){this.needsUpdate=!0,this.offset.x=.5*t.width,this.offset.y=.5*t.height,this.viewport=t}update(t){const{instances:e,offset:s,position:i}=this,n=function(t,e){const s=[],i=[];for(const n of e)if(P(t,n))for(const e of n.slots)-1===i.indexOf(e.index)&&(i.push(e.index),P(t,e)&&s.push(e));return s}({bottom:i.y+s.y+V,left:i.x-s.x-V,right:i.x+s.x+V,top:i.y-s.y-V},this.buckets);let o=0;for(;o<e.length;){const t=e[o];-1===n.indexOf(t.slot)?(t.dispose(),e.splice(o,1)):o++}for(const s of n)e.some((t=>t.slot===s))||e.push(this.createInstance(s,t));this.onMeasure(),this.needsUpdate=!1}}var z=s(8541),B=s(8052),_=s(1142);const A=2147483648;class U{constructor(t){this.state=t||Math.floor(Math.random()*(A-1))}float(){return this.int()/(A-1)}int(){return this.state=(1103515245*this.state+12345)%A,this.state}pick(t){return t[this.range(0,t.length)]}range(t,e){var s=e-t,i=this.int()/A;return t+Math.floor(i*s)}}const W={};function N(t){try{const e=JSON.parse(t);return"object"!=typeof e?{}:e}catch(t){console.error(t)}return{}}class X{constructor(t){this.language=t.language||"de",this.numResults=t.numResults,this.pages=t.pages||[],this.pageSize=t.pageSize||100,this.query=t.query||{},this.seed=t.seed||0,this.typeIds=t.typeIds||[],this.rng=new U(this.seed)}clone(){return new X({language:this.language,numResults:this.numResults,pages:this.pages,pageSize:this.pageSize,query:Object.assign({}
1,this.query),seed:this.seed,typeIds:this.typeIds})}fetchPage(t){const e=_.s.compose({path:`/${this.language}/api/digital`,query:Object.assign(Object.assign({},this.query),{page:t})});return(0,z.h)(e.toString()).then((t=>t.json())).then((e=>e.currentPage===t?e.results:[]))}getItem(t){return(0,i.sH)(this,void 0,void 0,(function*(){const{pageIndex:e,pageOffset:s}=this.toPageOffset(t),i=yield this.getPage(e);return i[s],i[s]}))}getItemSync(t){const{pageIndex:e,pageOffset:s}=this.toPageOffset(t),i=this.getPageSync(e);return i?i[s]:null}getPage(t){return(0,i.sH)(this,void 0,void 0,(function*(){const{pages:e}=this;let s=e.find((e=>e.index===t));if(!s){const i=this.fetchPage(t),n={index:t,results:i};i.then((t=>n.results=t)),e.push(s=n)}return s.results}))}getPageSync(t){const{pages:e}=this,s=e.find((e=>e.index===t));return!s||s.results instanceof Promise?null:s.results}toPageOffset(t){const{pageSize:e}=this,s=Math.floor(t/e);return{pageIndex:s+1,pageOffset:t-s*e}}static fromDocument(){const t=(0,B.I)(".dtmDigital__staticRepository"),e=N(t?t.getAttribute("data-repository"):null),s=[];if(t){const i=(0,B.J)(".dtmDigital__staticRepositoryItem",t);s.push({index:e.currentPage||1,results:i.map((t=>Object.assign(Object.assign({},N(t.getAttribute("data-repository"))),{html:t.innerHTML})))})}return new X(Object.assign({numResults:0,pages:s},e))}static formQuery(t){return(0,i.sH)(this,void 0,void 0,(function*(){const e=_.s.compose({path:"/api/digital",query:(0,j.RP)(t)});return e in W||(W[e]=(0,z.h)(e).then((t=>t.json())).then((t=>{var{currentPage:e,results:s}=t,n=(0,i.Tt)(t,["currentPage","results"]);return n.pages=[{index:e,results:s}],new X(n)}))),W[e]}))}}class Y extends c.Q{constructor(){super(...arguments),this.isInitialQuery=!0,this.listener=null,this.request=null,this.onQueryChanged=t=>{if(this.isInitialQuery)return void(this.isInitialQuery=!1);const e=X.formQuery(t).then((t=>{this.request===e&&(this.request=null,this.view.setRepository(t))}));this.request=e}}onConnected(){this.onDisconnected();const{$query:t}=this.view.host;t&&(this.isInitialQuery=!0,this.listener=t.subscribe(this.onQueryChanged))}onDisconnected(){this.listener&&this.listener(),this.listener=null}}var G=s(2381);function J(t){return function(e,s,{nullable:i=!1,optional:n=!1}={},o){const r=e[s],a=function(t){const e=typeof t;if("object"===e){if(null===t)return"null";if(Array.isArray(t))return"array"}return e}(r);return a===t&&(!o||o(r))||!0===n&&"undefined"===a||!0===i&&null===r}}const K=J("array"),Z=J("boolean"),tt=J("number"),et=J("object"),st=J("string");class it{constructor(t){(0,G.G)(t)?(this.value=t,this.$result=!0):(this.value={},this.$result=!1)}get isValid(){return this.$result}array(t,e,s){return this.$result&&(this.$result=K(this.value,t,e,s)),this}boolean(t,e,s){return this.$result&&(this.$result=Z(this.value,t,e,s)),this}enum(t,e,{optional:s=!1,nullable:i=!1}={},n){const o=this.value[t],r=e.some((t=>t===o));return this.$result&&(this.$result=r&&(!n||n(o))||!0===s&&void 0===o||!0===i&&null===o),this}number(t,e,s){return this.$result&&(this.$result=tt(this.value,t,e,s)),this}object(t,e,s){return this.$result&&(this.$result=et(this.value,t,e,s)),this}shape(t,e,s){return this.object(t,s,(t=>e(it.for(t)).isValid))}shapes(t,e,s){return this.array(t,s,(t=>t.every((t=>e(it.for(t)).isValid))))}string(t,e,s){return this.$result&&(this.$result=st(this.value,t,e,s)),this}static for(t){return new it(t)}}class nt extends c.Q{constructor(t,e){super(t,e),this.tryRestore()}onBeforeUnload(){const{currentInstance:t,layout:e}=this.view,s=t?t.slot:null,i={position:Object.assign({},e.position),slotIndex:s?s.index:null};window.history.replaceState(i,"",window.location.href)}tryRestore(){const{layout:t}=this.view,{state:e}=window.history;if(s=e,!it.for(s).number("slotIndex",{nullable:!0}).object("position",{},(t=>it.for(t).number("x").number("y").isValid)).isValid)return void t.relax();var s;t.setPosition(e.position),t.update();const i=t.instances.find((({slot:t})=>t.index===e.slotIndex));i&&(this.view.currentInstance=i,i.setCurrent(!0,!0)),t.relax()}}(0,i.Cg)([(0,a.f)({name:"beforeunload",target:window})],nt.prototype,"onBeforeUnload",null);class ot extends r.S{constructor(t){super(t),this.currentInstance=null,this.viewport={width:0,height:0},this.onFrame=t=>{this.layout.onFrame(undefined)},this.host=t.host,this.layout=this.createInitialLayout(),this.addBehaviour(p),this.addBehaviour(n.w),this.addBehaviour(T),this.addBehaviour(nt),this.addBehaviour(Y)}createInitialLayout(){const{host:t,el:e,viewport:s}=this;s.height=e.offsetHeight,s.width=e.offsetWidth;const i=X.fromDocument(),n=new H({el:this.el,repository:i,space:this});return t.setAvailableTypeIds(i.typeIds),n}onClick(t){const e=this.layout.findInstance(t.current);e&&(e.isCurrent?e.onClick(t):(this.setCurrentInstance(e),t.preventDefault(),t.stopImmediatePropagation()))}onMeasure(){const{el:t,layout:e,viewport:s}=this;s.height=t.offsetHeight,s.width=t.offsetWidth,e.setViewport(s),e.onMeasure()}setCurrentInstance(t){const{currentInstance:e,layout:s}=this;e&&e.setCurrent(!1),this.currentInstance=t,t&&((0,u.Q)(s,{position:{x:t.slot.x,y:t.slot.y}},{duration:1e3,easing:o}),t.setCurrent(!0))}setRepository(t){const{host:e,layout:s}=this;
1this.layout=new H({el:this.el,layout:s,repository:t,space:this}),e.setAvailableTypeIds(t.typeIds),s.dispose()}}(0,i.Cg)([(0,a.f)({name:"click",selector:".dtmDigitalSpace__item"})],ot.prototype,"onClick",null),(0,i.Cg)([(0,h.y)({events:"resize"})],ot.prototype,"onMeasure",null)},8420:function(t,e,s){s.d(e,{NY:function(){return h},RP:function(){return u},Yj:function(){return a},go:function(){return r},q:function(){return o}});var i=s(1142);const n=" ";function o(t){return null===t.category&&0===t.types.length}function r(t,e){return t.category===e.category&&t.types.length===e.types.length&&t.types.every((t=>-1!==e.types.indexOf(t)))}function a(t=window.location.href){const e=t=>"string"==typeof t?t:null,s=new i.s(t),o=e(s.getParam("types")),r=o?o.split(n).map((t=>t.trim())).filter((t=>!!t)):[];return{category:e(s.getParam("category")),types:r}}function h(t,e){if(!r(t.peek(),e)){const s=new i.s(window.location.href);s.query=u(e),window.history.pushState(null,"",s.toString()),t.value=e}}function u(t){const e={};return t.category&&(e.category=t.category),t.types.length&&(e.types=t.types.join(n)),e}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.