@botfabrik/engine-webclient 4.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +169 -0
  2. package/dist/client/asset-manifest.json +22 -0
  3. package/dist/client/bot.png +0 -0
  4. package/dist/client/bot.svg +1 -0
  5. package/dist/client/custom.css +4 -0
  6. package/dist/client/favicon.ico +0 -0
  7. package/dist/client/index.html +1 -0
  8. package/dist/client/logo192.png +0 -0
  9. package/dist/client/logo512.png +0 -0
  10. package/dist/client/manifest.json +25 -0
  11. package/dist/client/play-button.png +0 -0
  12. package/dist/client/precache-manifest.18268e8ddbe40ae5d8e91a4a76774701.js +26 -0
  13. package/dist/client/robots.txt +3 -0
  14. package/dist/client/service-worker.js +39 -0
  15. package/dist/client/static/css/main.9f09e476.chunk.css +2 -0
  16. package/dist/client/static/css/main.9f09e476.chunk.css.map +1 -0
  17. package/dist/client/static/js/2.94d39000.chunk.js +3 -0
  18. package/dist/client/static/js/2.94d39000.chunk.js.LICENSE.txt +103 -0
  19. package/dist/client/static/js/2.94d39000.chunk.js.map +1 -0
  20. package/dist/client/static/js/main.1f8d6c7f.chunk.js +2 -0
  21. package/dist/client/static/js/main.1f8d6c7f.chunk.js.map +1 -0
  22. package/dist/client/static/js/runtime-main.f63e6028.js +2 -0
  23. package/dist/client/static/js/runtime-main.f63e6028.js.map +1 -0
  24. package/dist/client/visitor.png +0 -0
  25. package/dist/client/visitor.svg +1 -0
  26. package/dist/createSessionInfo.d.ts +5 -0
  27. package/dist/createSessionInfo.js +36 -0
  28. package/dist/createSessionInfo.js.map +1 -0
  29. package/dist/createSessionInfo.test.d.ts +1 -0
  30. package/dist/createSessionInfo.test.js +88 -0
  31. package/dist/createSessionInfo.test.js.map +1 -0
  32. package/dist/extractIP.d.ts +2 -0
  33. package/dist/extractIP.js +11 -0
  34. package/dist/extractIP.js.map +1 -0
  35. package/dist/extractIP.test.d.ts +1 -0
  36. package/dist/extractIP.test.js +38 -0
  37. package/dist/extractIP.test.js.map +1 -0
  38. package/dist/extractLocale.d.ts +2 -0
  39. package/dist/extractLocale.js +20 -0
  40. package/dist/extractLocale.js.map +1 -0
  41. package/dist/extractLocale.test.d.ts +1 -0
  42. package/dist/extractLocale.test.js +22 -0
  43. package/dist/extractLocale.test.js.map +1 -0
  44. package/dist/getSupportedClientLocale.d.ts +2 -0
  45. package/dist/getSupportedClientLocale.js +19 -0
  46. package/dist/getSupportedClientLocale.js.map +1 -0
  47. package/dist/getSupportedClientLocale.test.d.ts +1 -0
  48. package/dist/getSupportedClientLocale.test.js +20 -0
  49. package/dist/getSupportedClientLocale.test.js.map +1 -0
  50. package/dist/index.d.ts +14 -0
  51. package/dist/index.js +105 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/index.test.d.ts +1 -0
  54. package/dist/index.test.js +16 -0
  55. package/dist/index.test.js.map +1 -0
  56. package/dist/loadPreviousConversation.d.ts +3 -0
  57. package/dist/loadPreviousConversation.js +27 -0
  58. package/dist/loadPreviousConversation.js.map +1 -0
  59. package/dist/middleware/index.d.ts +3 -0
  60. package/dist/middleware/index.js +32 -0
  61. package/dist/middleware/index.js.map +1 -0
  62. package/dist/requestSessionData.d.ts +10 -0
  63. package/dist/requestSessionData.js +40 -0
  64. package/dist/requestSessionData.js.map +1 -0
  65. package/dist/requestSessionData.test.d.ts +1 -0
  66. package/dist/requestSessionData.test.js +83 -0
  67. package/dist/requestSessionData.test.js.map +1 -0
  68. package/dist/speechToText.d.ts +7 -0
  69. package/dist/speechToText.js +46 -0
  70. package/dist/speechToText.js.map +1 -0
  71. package/dist/types.d.ts +7 -0
  72. package/dist/types.js +3 -0
  73. package/dist/types.js.map +1 -0
  74. package/dist/views/index.d.ts +2 -0
  75. package/dist/views/index.js +102 -0
  76. package/dist/views/index.js.map +1 -0
  77. package/package.json +36 -0
@@ -0,0 +1,2 @@
1
+ (this.webpackJsonpclient=this.webpackJsonpclient||[]).push([[0],{1:function(e,t,n){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,n,a){void 0===a&&(a=n),Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,a){void 0===a&&(a=n),e[a]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||a(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(110),t),r(n(126),t),r(n(130),t)},110:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.feedbackFromGuestResponse=t.receiveFileFromGuest=t.requestNLUEvent=t.receiveTextMessageWithoutAnalysisFromGuest=t.receiveTextMessageFromGuest=t.sendMessageToGuest=t.guestDisconnected=t.guestConnected=void 0,t.ActionTypes=n(6);var a=n(111);t.feedbackFromGuestResponse=a.default;var r=n(112);t.guestConnected=r.default;var i=n(113);t.guestDisconnected=i.default;var o=n(114);t.receiveFileFromGuest=o.default;var s=n(122);t.receiveTextMessageFromGuest=s.default;var c=n(123);t.receiveTextMessageWithoutAnalysisFromGuest=c.default;var u=n(124);t.requestNLUEvent=u.default;var l=n(125);t.sendMessageToGuest=l.default},111:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(6);t.default=function(e,t){return{type:a.GUEST_FEEDBACK_RESPONSE,payload:{satisfaction:e,intent:t}}}},112:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(6);t.default=function(e){return{type:a.GUEST_CONNECTED,payload:{sessionId:e}}}},113:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(6);t.default=function(e){return{type:a.GUEST_DISCONNECTED,payload:{sessionId:e}}}},114:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(23),r=n(24),i=n(6);t.default=function(e,t,n){var o=new a.UploadFileMessage(e,t,n,new r.GuestUser);return{type:i.FILE_FROM_GUEST,file:o}}},122:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(23),r=n(24),i=n(6);t.default=function(e){var t=new a.TextMessage(e,new r.GuestUser);return{type:i.MESSAGE_FROM_GUEST,message:t}}},123:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(23),r=n(24),i=n(6);t.default=function(e){var t=new a.TextMessage(e,new r.GuestUser);return{type:i.MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST,message:t}}},124:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(6);t.default=function(e){return{type:a.NLU_REQUEST_EVENT,event:e}}},125:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(6);t.default=function(e){return{type:a.MESSAGE_TO_GUEST,message:e}}},126:function(e,t,n){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,n,a){void 0===a&&(a=n),Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,a){void 0===a&&(a=n),e[a]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||a(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(127),t),r(n(128),t),r(n(129),t),r(n(23),t),r(n(24),t)},127:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},128:function(e,t,n){"use strict";var a=n(35),r=n(36),i=n(37);Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonTypeEnum=t.PostbackButton=t.UrlButton=t.Button=void 0;var o=function e(t,n){i(this,e),this.title=t,this.type=n};t.Button=o;var s=function(e){a(n,e);var t=r(n);function n(e,a){var r;return i(this,n),(r=t.call(this,e,c.WEB_URL)).url=a,r}return n}(o);t.UrlButton=s;var c,u=function(e){a(n,e);var t=r(n);function n(e,a){var r;return i(this,n),(r=t.call(this,e,c.POSTBACK)).payload=a,r}return n}(o);t.PostbackButton=u,function(e){e.WEB_URL="web_url",e.POSTBACK="postback"}(c=t.ButtonTypeEnum||(t.ButtonTypeEnum={}))},129:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SatisfactionEnum=void 0,function(e){e.GOOD="GOOD",e.BAD="BAD"}(t.SatisfactionEnum||(t.SatisfactionEnum={}))},13:function(e,t,n){e.exports={audioRecorder:"AudioRecorder_audioRecorder__9e24N",recordButton:"AudioRecorder_recordButton__104a6",submitButton:"AudioRecorder_submitButton__kX6gE",cancelButton:"AudioRecorder_cancelButton__379d9",recorderIcon:"AudioRecorder_recorderIcon__2e6S0",pulse:"AudioRecorder_pulse__2JaAb",spinning:"AudioRecorder_spinning__26mEm",spin:"AudioRecorder_spin__3IqEo"}},130:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},167:function(e,t,n){var a={"./de.json":168,"./en.json":169,"./fr.json":170,"./it.json":171};function r(e){var t=i(e);return n(t)}function i(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=i,e.exports=r,r.id=167},168:function(e){e.exports=JSON.parse('{"Enter chat message":"Nachricht eingeben ..."}')},169:function(e){e.exports=JSON.parse('{"Enter chat message":"Enter chat message ..."}')},170:function(e){e.exports=JSON.parse('{"Enter chat message":"Entrez un message chat ..."}')},171:function(e){e.exports=JSON.parse('{"Enter chat message":"Inserisci messaggio chat ..."}')},20:function(e,t,n){e.exports={quickReplies:"QuickReplies_quickReplies__3s_Fe",quickReply:"QuickReplies_quickReply__1ALDF",more:"QuickReplies_more__1NmDD"}},205:function(e,t){},208:function(e,t,n){"use strict";n.r(t);var a,r,i=n(0),o=n.n(i),s=n(14),c=n.n(s),u=n(31),l=n(80),d=n.n(l),E=n(7),p=n(1),g=function(e){return{type:"MESSAGE_TO_PARENT_PAGE",message:{type:"webclient.change.url",url:e}}},m=n(52),f=n.n(m),_=n(53),v=n.n(_),h=n(210),T=function(e,t,n){return{type:"CONNECT",sessionId:e,userId:t,querystrings:n}},S=n(82),O=n.n(S),N=n(2),y=n.n(N),b=n(83),C=n.n(b),R=n(4),k=n.n(R),I=n(20),M=n.n(I),U=function(e){var t=e.quickReplies,n=e.onQuickReplyClick,a=e.onShowMore;return o.a.createElement("div",{className:M.a.quickReplies},t.map((function(e){return o.a.createElement("span",{key:e.label,className:y()(M.a.quickReply,k.a.button),onClick:function(){return n(e)}},e.label)})),o.a.createElement("span",{key:"more",className:y()(M.a.quickReply,M.a.more),onClick:function(){return a()}},"..."))},A=n(95),w=n(29),G=n(30),D=n(9),x=n(33),B=n(32),P=n(13),F=n.n(P),j=function(e){Object(x.a)(n,e);var t=Object(B.a)(n);function n(e){var a;return Object(w.a)(this,n),(a=t.call(this,e)).audioInput=null,a.volume=null,a.leftchannel=[],a.recorder=null,a.recordingLength=0,a.sampleRate=null,a.mediaStream=null,a.state={recordingState:"none"},a.triggerAudioRecording=a.triggerAudioRecording.bind(Object(D.a)(a)),a.triggerAudioRecordingSuccess=a.triggerAudioRecordingSuccess.bind(Object(D.a)(a)),a.initRecording=a.initRecording.bind(Object(D.a)(a)),a.processRecordingInput=a.processRecordingInput.bind(Object(D.a)(a)),a.handleClickSubmitAudio=a.handleClickSubmitAudio.bind(Object(D.a)(a)),a.handleClickStopAudio=a.handleClickStopAudio.bind(Object(D.a)(a)),a}return Object(G.a)(n,[{key:"triggerAudioRecording",value:function(){this.setState({recordingState:"connecting"}),navigator.mediaDevices.getUserMedia({audio:!0,video:!1}).then(this.triggerAudioRecordingSuccess)}},{key:"triggerAudioRecordingSuccess",value:function(e){this.mediaStream=e,this.leftchannel.length=0,this.recordingLength=0,this.initRecording(e),console.log("Recording now...")}},{key:"initRecording",value:function(e){var t=new(window.AudioContext||window.webkitAudioContext);this.sampleRate=t.sampleRate,this.volume=t.createGain(),this.audioInput=t.createMediaStreamSource(e),this.audioInput.connect(this.volume),this.recorder=t.createScriptProcessor(2048,1,1),this.recorder.onaudioprocess=this.processRecordingInput,this.volume.connect(this.recorder),this.recorder.connect(t.destination)}},{key:"processRecordingInput",value:function(e){if("connecting"===this.state.recordingState&&this.setState({recordingState:"recording"}),"none"!==this.state.recordingState){var t=e.inputBuffer.getChannelData(0);this.leftchannel.push(new Float32Array(t)),this.recordingLength+=2048,console.log("recording")}}},{key:"handleClickSubmitAudio",value:function(){var e=W(this.leftchannel,this.recordingLength),t=V(e,this.sampleRate||0),n=L(t);this.props.onAudioRecorded(n),this.handleClickStopAudio()}},{key:"handleClickStopAudio",value:function(){var e,t,n,a;(this.setState({recordingState:"none"}),null===(e=this.audioInput)||void 0===e||e.disconnect(),null===(t=this.volume)||void 0===t||t.disconnect(),null===(n=this.recorder)||void 0===n||n.disconnect(),this.mediaStream)&&(null===(a=this.mediaStream)||void 0===a||a.getAudioTracks().forEach((function(e){e.stop()})))}},{key:"render",value:function(){return console.log("state:",this.state.recordingState),o.a.createElement("div",{className:F.a.audioRecorder},"none"===this.state.recordingState&&o.a.createElement("button",{className:y()(k.a.button,F.a.recordButton),type:"submit",onClick:this.triggerAudioRecording},o.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},o.a.createElement("path",{d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"}),o.a.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))),"connecting"===this.state.recordingState&&o.a.createElement("svg",{className:F.a.spinning,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},o.a.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),o.a.createElement("path",{d:"M0 0h24v24H0z",fill:"none"})),"recording"===this.state.recordingState&&o.a.createElement("div",{className:F.a.audioRecorder},o.a.createElement("button",{className:y()(k.a.button,F.a.cancelButton),onClick:this.handleClickStopAudio},o.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},o.a.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),o.a.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))),o.a.createElement("div",{className:F.a.recorderIcon}),o.a.createElement("button",{className:y()(k.a.button,F.a.submitButton),type:"submit",onClick:this.handleClickSubmitAudio},o.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},o.a.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),o.a.createElement("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})))))}}]),n}(o.a.Component),L=function(e){var t=new ArrayBuffer(44+2*e.length),n=new DataView(t);q(n,0,"RIFF"),n.setUint32(4,44+2*e.length,!0),q(n,8,"WAVE"),q(n,12,"fmt "),n.setUint32(16,16,!0),n.setUint16(20,1,!0),n.setUint16(22,1,!0),n.setUint32(24,16e3,!0),n.setUint32(28,64e3,!0),n.setUint16(32,4,!0),n.setUint16(34,16,!0),q(n,36,"data"),n.setUint32(40,2*e.length,!0);for(var a=e.length,r=44,i=0;i<a;i++)n.setInt16(r,32767*e[i],!0),r+=2;return new Blob([n],{type:"audio/wav"})},q=function(e,t,n){for(var a=0;a<n.length;a++)e.setUint8(t+a,n.charCodeAt(a))},W=function(e,t){for(var n=new Float32Array(t),a=0,r=e.length,i=0;i<r;i++){var o=e[i];n.set(o,a),a+=o.length}return n},V=function(e,t){if(16e3===t)return e;for(var n=t/16e3,a=Math.round(e.length/n),r=new Float32Array(a),i=0,o=0;i<r.length;){for(var s=Math.round((i+1)*n),c=0,u=0,l=o;l<s&&l<e.length;l++)c+=e[l],u++;r[i]=c/u,i++,o=s}return r},H=n(21),Q=n.n(H),X=function(e){var t=e.speechSupport,n=e.translate,a=e.onTextInput,r=e.onAudioRecorded,s=Object(i.useState)(!1),c=Object(A.a)(s,2),u=c[0],l=c[1],d=Object(i.useRef)(null);return o.a.createElement("form",{className:Q.a.inputWrapper,onSubmit:function(e){e.preventDefault();var t=d.current;t&&t.value.trim().length>=1&&(a(t.value.trim()),t.value="",l(!1),t.focus())}},o.a.createElement("div",{className:Q.a.messageInputWrapper},o.a.createElement("input",{className:Q.a.messageInput,placeholder:n("Enter chat message"),ref:d,onChange:function(e){var t=e.target.value.trim();l(t.length>0)}})),u||!t||void 0===navigator.mediaDevices?o.a.createElement("button",{className:y()(Q.a.sendMessage,k.a.button),type:"submit"},o.a.createElement("svg",{width:"100%",height:"100%",viewBox:"0 0 232 168"},o.a.createElement("path",{d:"M227.514,84.044l-224,-80l48,80l-48,80l224,-80Z"}))):t&&void 0!==navigator.mediaDevices&&o.a.createElement(j,{onAudioRecorded:r}))},J=n(56),Y=n(22),z=n.n(Y),K=function(e){return"pending"===e?z.a.upload__button:"uploading"===e?y()(z.a.upload__button,z.a.uploading):""},Z=function(e){var t=e.uploadRequest,n=(t=void 0===t?{}:t).uploadState,a=t.label,r=void 0===a?"":a,i=t.payload,s=void 0===i?{}:i,c=e.onUploadFile;return o.a.createElement("div",{className:z.a.upload},r&&o.a.createElement("label",{className:K(n)},n===p.UploadStateEnum.PENDING&&o.a.createElement("div",null,o.a.createElement("input",{type:"file",onChange:function(e){var t,n,a=null===(t=e.target)||void 0===t||null===(n=t.files)||void 0===n?void 0:n.item(0);if(a){var r=new FileReader;r.onload=function(e){c(a.name,e.target.result,s)},r.readAsDataURL(a)}}}),o.a.createElement(J.a,null),o.a.createElement("span",null,r)),n===p.UploadStateEnum.UPLOADING&&o.a.createElement("div",null,o.a.createElement(J.b,null),o.a.createElement("span",null,"".concat(r," wird hochgeladen")))))},$=function(e){var t=e.quickReplies,n=e.uploadRequest,a=e.speechSupport,r=e.translate,i=e.onTextInput,s=e.onQuickReplyClick,c=e.onShowMore,u=e.onUploadFile,l=e.onAudioRecorded;return o.a.createElement("div",{className:y()(C.a.inputContainer)},o.a.createElement(Z,{uploadRequest:n,onUploadFile:u}),o.a.createElement(U,{quickReplies:t,onQuickReplyClick:s,onShowMore:c}),o.a.createElement(X,{translate:r,onTextInput:i,onAudioRecorded:l,speechSupport:a}))},ee=n(54),te=n.n(ee),ne=n(3),ae=n.n(ne),re=function(e){var t=e.sender,n=e.children;return o.a.createElement("li",{className:ae.a.messageBot},o.a.createElement("img",{className:ae.a.avatar,src:"".concat(t.avatar),alt:t.type===p.UserType.BOT?"Bot":"Agent"}),o.a.createElement("div",{className:y()(ae.a.textWrapper,ae.a.leftTextWrapper)},o.a.createElement("div",{className:y()(ae.a.text,ae.a.leftText)},n)))},ie=n(18),oe=n.n(ie),se=n(8),ce=n.n(se),ue=n(5),le=n.n(ue),de=function(e){var t=e.buttons,n=e.onButtonClick;return o.a.createElement("div",null,t.map((function(e,t){return o.a.createElement("button",{key:t,className:y()(le.a.button,k.a.button),onClick:function(){return n(e)}},e.title)})))},Ee=function(e){var t=e.alt,n=e.imageUrl,a=e.itemUrl;return n?o.a.createElement("div",{className:le.a.image},a?a.includes("youtube.com")?o.a.createElement("div",{className:le.a.video_container},o.a.createElement("iframe",{className:le.a.video,title:"Youtube",width:"100%",src:a+"?rel=0",frameBorder:"0",allowFullScreen:!0})):o.a.createElement("a",{href:a,target:"_blank",rel:"noopener noreferrer"},o.a.createElement("img",{src:n,alt:t})):o.a.createElement("img",{src:n,alt:t})):null},pe=n(84),ge=n.n(pe),me=n(85),fe=n.n(me),_e=n(86),ve=n.n(_e),he=function(e){var t=e.text,n=e.onLinkClick,a=function(e,t,a){return o.a.createElement("a",{key:a,onClick:(r=e,function(e){return e.preventDefault(),r&&n(r),!1})},t);var r};return o.a.createElement("div",null,t.split("\n").map((function(e,t){return o.a.createElement("span",{key:t,className:ve.a.text},o.a.createElement(fe.a,{componentDecorator:a},ge.a.emojify(e)),o.a.createElement("br",null))})))},Te=function(e){var t=e.subtitle,n=e.onLinkClick;return t?o.a.createElement("div",{className:le.a.subtitle},o.a.createElement(he,{text:t,onLinkClick:n})):null},Se=function(e){var t=e.title;return t?o.a.createElement("h2",{className:le.a.title},t):null},Oe=function(e){var t=e.title,n=e.subtitle,a=e.imageUrl,r=e.itemUrl,i=e.buttons,s=e.onButtonClick,c=e.onLinkClick;return o.a.createElement("div",null,o.a.createElement(ce.a,{query:"(max-height: 150px)"},o.a.createElement(oe.a,{clamp:2},o.a.createElement(Te,{subtitle:n,onLinkClick:c}))),o.a.createElement(ce.a,{query:"(min-height: 151px)"},o.a.createElement(Se,{title:t}),o.a.createElement(Ee,{imageUrl:a,itemUrl:r,alt:t||n}),o.a.createElement(Te,{subtitle:n,onLinkClick:c}),o.a.createElement(de,{buttons:i,onButtonClick:s})))},Ne=n(87),ye=n(89),be=n.n(ye),Ce=function(e){var t=e.markdown,n=e.excerpt,a=e.className,r=e.onLinkClick,i=function(e){return function(t){return t.preventDefault(),e&&r(e),!1}};return o.a.createElement("div",{className:y()(be.a.markdownMessage,a)},o.a.createElement(ce.a,{query:"(max-height: 150px)"},o.a.createElement(oe.a,{clamp:2},o.a.createElement(he,{text:n,onLinkClick:r}))),o.a.createElement(ce.a,{query:"(min-height: 151px)"},o.a.createElement(Ne.a,{options:{overrides:{a:function(e){var t=e.title,n=e.href;return o.a.createElement("a",{onClick:i(n)},t)}}}},t)))},Re=n(90),ke=n.n(Re),Ie=function(e){var t=e.text,n=e.onLinkClick;return o.a.createElement("div",{className:ke.a.text},o.a.createElement(ce.a,{query:"(max-height: 150px)"},o.a.createElement(oe.a,{clamp:2},o.a.createElement(he,{text:t,onLinkClick:n}))),o.a.createElement(ce.a,{query:"(min-height: 151px)"},o.a.createElement(he,{text:t,onLinkClick:n})))},Me=function(e){var t=e.children;return o.a.createElement("li",{className:ae.a.messageUser},o.a.createElement("div",{className:y()(ae.a.textWrapper,ae.a.rightTextWrapper)},o.a.createElement("div",{className:y()(ae.a.text,ae.a.rightText)},t)),o.a.createElement("img",{className:ae.a.avatar,alt:"Guest",src:"visitor.svg"}))},Ue=function(e,t,n){switch(e.type){case p.MessageTypeEnum.TEXT:var a=e;return o.a.createElement(Ie,{text:a.text,onLinkClick:n});case p.MessageTypeEnum.DETAIL:var r=e;return o.a.createElement(Oe,{title:r.title,subtitle:r.subtitle,imageUrl:r.imageUrl,itemUrl:r.itemUrl,buttons:r.buttons,onButtonClick:t,onLinkClick:n});case p.MessageTypeEnum.MARKDOWN:var i=e;return o.a.createElement(Ce,{markdown:i.markdown,excerpt:i.excerpt,className:i.className,onLinkClick:n})}},Ae=function(e){var t=e.message,n=e.onButtonClick,a=e.onLinkClick,r=Ue(t,n,a);switch(t.sender.type){case p.UserType.GUEST:return o.a.createElement(Me,null,r);default:return o.a.createElement(re,{sender:t.sender},r)}},we=n(55),Ge=n.n(we),De=n(91),xe=n.n(De),Be=function(e){var t=e.isTyping;return void 0!==t&&t?o.a.createElement("div",{className:xe.a.typingIndicator},o.a.createElement("span",null),o.a.createElement("span",null),o.a.createElement("span",null)):null},Pe=te.a.Element,Fe=function(e){Object(x.a)(n,e);var t=Object(B.a)(n);function n(){return Object(w.a)(this,n),t.apply(this,arguments)}return Object(G.a)(n,[{key:"scrollToBottom",value:function(e,t){te.a.scroller.scrollTo("ScrollToElement",{duration:e,delay:t,smooth:!0,containerId:"MessageContainer"})}},{key:"componentDidMount",value:function(){this.scrollToBottom(0,0)}},{key:"componentDidUpdate",value:function(e){var t=this;if(0===e.messages.length&&this.props.messages.length>0)this.scrollToBottom(0,0);else{var n=this.props.isBotTyping,a=e.messages.length!==this.props.messages.length&&e.messages.length>1;(n||a)&&setTimeout((function(){return t.scrollToBottom(700,20)}),10)}}},{key:"render",value:function(){var e=this.props,t=e.messages,n=e.isBotTyping,a=e.onButtonClick,r=e.onLinkClick;return o.a.createElement("div",{className:Ge.a.messageContainer,id:"MessageContainer"},o.a.createElement("ul",{className:Ge.a.messages},t.map((function(e,t){return o.a.createElement(Ae,{key:t,message:e,onButtonClick:a,onLinkClick:r})}))),o.a.createElement(Be,{isTyping:n}),o.a.createElement(Pe,{name:"ScrollToElement"}))}}]),n}(o.a.Component),je="TRIGGER_ACTION",Le="TRIGGER_STORY",qe="CHAT_MESSAGE_FROM_GUEST",We="ON_CHAT_WINDOW_OPEN",Ve="ON_CHAT_WINDOW_CLOSE",He=Object(u.b)((function(e){var t=e.chat;return{messages:t.messages,quickReplies:t.quickReplies,uploadRequest:t.uploadRequest,isBotTyping:t.isBotTyping,speechSupport:t.speechSupport,translate:Object(E.b)(e.locale)}}),(function(e){return{onConnect:function(t){return e(function(e){return function(t,n){var a=v.a.parse(e),r=n().connection,i=r.sessionId;void 0===i&&(i=Object(h.a)());var o=r.userId;if(void 0===o){var s=f.a.get("bf-webclient-userId");o=s||Object(h.a)(),f.a.set("bf-webclient-userId",o)}return a.sessionId=i,a.userId=o,t(T(i,o,v.a.stringify(a)))}}(t))},onMessageFromUser:function(t){return e(function(e){return Object(p.receiveTextMessageFromGuest)(e)}(t))},onAudioRecorded:function(t){return e(function(e){return{type:"AUDIO_MESSAGE_FROM_USER",buffer:e}}(t))},onActionFromUser:function(t){return e(t)},onQuickReplyClick:function(t){return e(function(e){return function(t){return e.payload.type!==p.ActionTypes.MESSAGE_FROM_GUEST&&t(Object(p.receiveTextMessageWithoutAnalysisFromGuest)(e.label)),t(e.payload)}}(t))},onNluEvent:function(t){return e(function(e){return Object(p.requestNLUEvent)(e)}(t))},onButtonClick:function(t){return e(function(e){switch(e.type){case p.ButtonTypeEnum.WEB_URL:return g(e.url);case p.ButtonTypeEnum.POSTBACK:return e.payload;default:throw new Error("unknown button type ".concat(e.type))}}(t))},onLinkClick:function(t){return e(function(e){return g(e)}(t))},onShowMore:function(){return e({type:"MESSAGE_TO_PARENT_PAGE",message:{type:"webclient.show.more"}})},onUploadFile:function(t,n,a){return e(function(e,t,n){return Object(p.receiveFileFromGuest)(e,t,n)}(t,n,a))}}}))((function(e){var t=e.messages,n=e.quickReplies,a=e.uploadRequest,r=e.isBotTyping,s=e.speechSupport,c=e.translate,u=e.onConnect,l=e.onNluEvent,d=e.onMessageFromUser,E=e.onQuickReplyClick,p=e.onButtonClick,g=e.onLinkClick,m=e.onUploadFile,f=e.onShowMore,_=e.onAudioRecorded,v=e.onActionFromUser;return Object(i.useEffect)((function(){var e=function(e){switch(e.data.type){case je:v(e.data.action);break;case Le:l(e.data.story);break;case We:v({type:"webclient.chatwindow.opened"});break;case Ve:v({type:"webclient.chatwindow.closed"});break;case qe:d(e.data.text)}};return u(window.location.search),window.addEventListener("message",(function(t){return e(t)}),!1),function(){return window.removeEventListener("message",e)}}),[u,v,d,l]),o.a.createElement("div",{className:O.a.chatwindow},o.a.createElement(Fe,{messages:t,isBotTyping:r,onButtonClick:p,onLinkClick:g}),o.a.createElement($,{quickReplies:n,uploadRequest:a,speechSupport:s,translate:c,onQuickReplyClick:E,onTextInput:d,onShowMore:f,onUploadFile:m,onAudioRecorded:_}))})),Qe=n(92),Xe=n.n(Qe),Je=n(12),Ye=n(93);!function(e){e[e.CONNECTING=0]="CONNECTING",e[e.CONNECTED=1]="CONNECTED",e[e.RECONNECTED=2]="RECONNECTED",e[e.DISCONNECTED=3]="DISCONNECTED"}(a||(a={})),function(e){e.GUEST="GUEST",e.BOT="BOT",e.PERSON="PERSON"}(r||(r={}));var ze={connectionState:a.DISCONNECTED,sessionId:void 0,userId:void 0},Ke=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ze,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"CONNECT":return Object.assign({},e,{sessionId:t.sessionId,userId:t.userId});case"CONNECTING":return console.log("BackendConnectionReducer: connecting ..."),Object.assign({},e,{connectionState:a.CONNECTING});case"CONNECTED":return console.log("BackendConnectionReducer: connected"),Object.assign({},e,{connectionState:a.CONNECTED});case"DISCONNECTED":return console.log("BackendConnectionReducer: disconnected"),Object.assign({},e,{connectionState:a.DISCONNECTED});case"RECONNECTED":return console.log("BackendConnectionReducer: reconnected"),Object.assign({},e,{connectionState:a.RECONNECTED});case"RESTORE_SESSION_ID":return Object.assign({},e,{sessionId:t.sessionId});default:return e}},Ze=function(e,t){return Object.assign({},e,{messages:e.messages.concat([t]),quickReplies:[]})},$e=function(e){et()?window.top.postMessage(e,"*"):"webclient.change.url"===e.type&&window.open(e.url)},et=function(){return"undefined"!==typeof window&&window.self!==window.top},tt={messages:[],quickReplies:[],isBotTyping:!1,speechSupport:!1},nt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:tt,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case p.ActionTypes.TYPING_ON:return Object.assign({},e,{isBotTyping:!0});case p.ActionTypes.TYPING_OFF:return Object.assign({},e,{isBotTyping:!1});case p.ActionTypes.MESSAGE_FROM_GUEST:case p.ActionTypes.MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST:return Ze(e,t.message);case p.ActionTypes.MESSAGE_TO_GUEST:console.log("nessage to guest"),console.log(t),$e(t);var n=Object.assign({},t.message,{_id:t.meta.actionId}),a=e.messages.filter((function(e){return e._id===t.meta.actionId})).length>0;return Object.assign({},e,{messages:a?e.messages:e.messages.concat([n]),quickReplies:n.quickReplies?n.quickReplies:[],uploadRequest:n.uploadRequest?n.uploadRequest:{}});case"RESTORE_PREVIOUS_CHAT_MESSAGES":var r=t.messages;if(r.length>0){var i=r[r.length-1];return Object.assign({},tt,{messages:r,quickReplies:i.quickReplies?i.quickReplies:[],uploadRequest:i.uploadRequest?i.uploadRequest:{}})}return tt;case p.ActionTypes.FILE_FROM_GUEST:var o=Object.assign({},e.uploadRequest,{uploadState:"uploading"});return Object.assign({},e,{uploadRequest:o});case"MESSAGE_TO_PARENT_PAGE":return $e(t.message),e;case p.ActionTypes.EVENT_TO_GUEST:return $e(t.event),e;case"webclient.expand.window":return $e(t),e;case"ENABLE_SPEECH_SUPPORT":return Object.assign({},e,{speechSupport:!0});case"RECEIVE_SPEECH_TRANSCRIPTION":var s=new p.TextMessage(t.transcription,new p.GuestUser);return Ze(e,s);default:return e}},at=Object(Je.c)({chat:nt,connection:Ke,locale:E.d}),rt=function(e){if(null===e)return!1;var t=new Date(e);return t.setHours(t.getHours()+12),new Date>t},it=n(94),ot=n.n(it),st=["CONNECT","CONNECTING","CONNECTED","DISCONNECTED","RECONNECTED","RESTORE_SESSION_ID",p.ActionTypes.MESSAGE_TO_GUEST,p.ActionTypes.EVENT_TO_GUEST,p.ActionTypes.TYPING_ON,p.ActionTypes.TYPING_OFF,"RESTORE_PREVIOUS_CHAT_MESSAGES","@@localize/SET_ACTIVE_LANGUAGE"],ct=function(e){var t=e.dispatch;return function(e){var n=null;return function(a){var r=e(a);if("CONNECT"===a.type)null!=n&&n.disconnect(),t({type:"CONNECTING"}),(n=ot()("/bf-webclient?"+a.querystrings)).on("action",t),n.on("connect",(function(){return t({type:"CONNECTED"})})),n.on("disconnect",(function(){return t({type:"DISCONNECTED"})})),n.on("reconnect",(function(){return t({type:"RECONNECTED"})})),n.on("set-active-language",(function(e){return t(Object(E.e)(e))})),n.on("enable-speech-support",(function(){return t({type:"ENABLE_SPEECH_SUPPORT"})})),n.on("speech-transcription",(function(e){return t(function(e){return{type:"RECEIVE_SPEECH_TRANSCRIPTION",transcription:e}}(e))})),n.on("restore-client-state",(function(e){n.io.uri=n.io.uri.replace(a.sessionId,e.sessionId),t({type:"RESTORE_SESSION_ID",sessionId:e.sessionId}),t({type:"RESTORE_PREVIOUS_CHAT_MESSAGES",messages:e.messages})})),n.on("file-uploaded",(function(){return console.log("webclient socket middle ware: file-uploaded")})),n.on("expand-window",(function(){return t({type:"webclient.expand.window"})}));else if("webclient.get.started"===a.type){var i;null===(i=n)||void 0===i||i.emit("get-started",JSON.stringify(a))}else if(a.type===p.ActionTypes.FILE_FROM_GUEST){var o;null===(o=n)||void 0===o||o.emit("file-from-guest",JSON.stringify(a))}else if("AUDIO_MESSAGE_FROM_USER"===a.type){var s;null===(s=n)||void 0===s||s.emit("audio-message",a.buffer)}else-1===st.indexOf(a.type)&&n&&n.emit("action",JSON.stringify(a));return r}}},ut=function(){var e=function(){try{if("undefined"===typeof localStorage)return;var e=localStorage.getItem("bf-webclient-state-last-saved-at");if(rt(e))return;var t=localStorage.getItem("bf-webclient-state");if(null===t)return;return JSON.parse(t)}catch(n){return void console.error(n)}}(),t=Object(Je.d)(Object(Je.a)(Ye.a,ct))(Je.e)(at,e);return t.subscribe(Xe()((function(){!function(e){try{var t=JSON.stringify(e);localStorage.setItem("bf-webclient-state",t);var n=(new Date).toISOString();localStorage.setItem("bf-webclient-state-last-saved-at",n)}catch(a){console.error(a)}}({connection:t.getState().connection})}),1e3)),t}();!function(e){var t=["de","en","fr","it"];e(Object(E.c)({languages:t,options:{defaultLanguage:"de",renderToStaticMarkup:!1}})),t.forEach((function(t){var a=n(167)("./".concat(t,".json"));e(Object(E.a)(a,t))}))}(ut.dispatch),c.a.render(o.a.createElement(u.a,{store:ut},o.a.createElement("div",{className:d.a.chatPage},o.a.createElement(He,null))),document.getElementById("root"))},21:function(e,t,n){e.exports={inputWrapper:"TextInput_inputWrapper__3g5RY",messageInputWrapper:"TextInput_messageInputWrapper__3kX2Z",messageInput:"TextInput_messageInput__1wtyj",sendMessage:"TextInput_sendMessage__1PytH"}},22:function(e,t,n){e.exports={upload:"Upload_upload__115Jj",upload__button:"Upload_upload__button__38-Um",uploading:"Upload_uploading__3ox9F",MoveUpDown:"Upload_MoveUpDown__127MH"}},23:function(e,t,n){"use strict";var a=n(35),r=n(36),i=n(37),o=n(121);Object.defineProperty(t,"__esModule",{value:!0}),t.getStringRepresentationFromMessage=t.MessageTypeEnum=t.AudioMessage=t.UploadFileMessage=t.FileMessage=t.ImageMessage=t.VideoMessage=t.MarkdownMessage=t.DetailMessage=t.TextMessage=t.UploadStateEnum=t.Message=void 0;var s,c=function(){function e(t,n){i(this,e),this.type=t,this.sender=n,this.quickReplies=[]}return o(e,[{key:"addQuickReply",value:function(e,t){this.quickReplies.push({label:e,payload:t})}},{key:"requestUpload",value:function(e,t){this.uploadRequest={label:e,payload:t,uploadState:s.PENDING}}}]),e}();t.Message=c,function(e){e.PENDING="pending",e.UPLOADING="uploading",e.FAILED="failed",e.FULFILLED="fulfilled"}(s=t.UploadStateEnum||(t.UploadStateEnum={}));var u=function(e){a(n,e);var t=r(n);function n(e,a){var r;return i(this,n),(r=t.call(this,f.TEXT,a)).text=e,r}return n}(c);t.TextMessage=u;var l=function(e){a(n,e);var t=r(n);function n(e,a){var r;return i(this,n),(r=t.call(this,f.DETAIL,a)).title=e,r.subtitle="",r.imageUrl="",r.itemUrl="",r.buttons=[],r}return o(n,[{key:"setImageUrl",value:function(e){this.imageUrl=e}},{key:"setItemUrl",value:function(e){this.itemUrl=e}},{key:"setSubtitle",value:function(e){this.subtitle=e}},{key:"addButton",value:function(e){this.buttons.push(e)}}]),n}(c);t.DetailMessage=l;var d=function(e){a(n,e);var t=r(n);function n(e,a,r){var o;return i(this,n),(o=t.call(this,f.MARKDOWN,r)).markdown=e,o.excerpt=a,o.className="",o}return o(n,[{key:"setClassName",value:function(e){this.className=e}}]),n}(c);t.MarkdownMessage=d;var E=function(e){a(n,e);var t=r(n);function n(e,a){var r;return i(this,n),(r=t.call(this,f.VIDEO,a)).url=e,r}return n}(c);t.VideoMessage=E;var p=function(e){a(n,e);var t=r(n);function n(e,a){var r;return i(this,n),(r=t.call(this,f.IMAGE,a)).url=e,r}return n}(c);t.ImageMessage=p;var g=function(e){a(n,e);var t=r(n);function n(e,a){var r;return i(this,n),(r=t.call(this,f.FILE,a)).url=e,r}return n}(c);t.FileMessage=g;var m=function(e){a(n,e);var t=r(n);function n(e,a,r,o){var s;return i(this,n),(s=t.call(this,f.FILE,o)).filename=e,s.blob=a,s.payload=r,s}return n}(c);t.UploadFileMessage=m;var f,_=function(e){a(n,e);var t=r(n);function n(e,a){var r;return i(this,n),(r=t.call(this,f.AUDIO,a)).url=e,r}return n}(c);t.AudioMessage=_,function(e){e.TEXT="TEXT",e.DETAIL="DETAIL",e.MARKDOWN="MARKDOWN",e.VIDEO="VIDEO",e.IMAGE="IMAGE",e.FILE="FILE",e.AUDIO="AUDIO"}(f=t.MessageTypeEnum||(t.MessageTypeEnum={})),t.getStringRepresentationFromMessage=function(e){switch(e.type){case f.TEXT:return e.text;case f.DETAIL:var t=e;return"".concat(t.title," // ").concat(t.subtitle);case f.MARKDOWN:return e.excerpt;case f.VIDEO:return"Video Url: ".concat(e.url);case f.IMAGE:return"Image Url: ".concat(e.url);case f.FILE:return"File Url: ".concat(e.url);case f.AUDIO:return"Audio Url: ".concat(e.url);default:throw new Error("Unknown message type "+e.type)}}},24:function(e,t,n){"use strict";var a=n(35),r=n(36),i=n(37);Object.defineProperty(t,"__esModule",{value:!0}),t.UserType=t.PersonUser=t.GuestUser=t.BotUser=t.User=void 0;var o=function e(t,n,a){i(this,e),this.type=t,this.name=n,this.avatar=a};t.User=o;var s=function(e){a(n,e);var t=r(n);function n(){return i(this,n),t.call(this,u.BOT,"Chatbot","bot.svg")}return n}(o);t.BotUser=s;var c=function(e){a(n,e);var t=r(n);function n(){return i(this,n),t.call(this,u.GUEST,"Guest","visitor.svg")}return n}(o);t.GuestUser=c;var u,l=function(e){a(n,e);var t=r(n);function n(e,a){return i(this,n),t.call(this,u.PERSON,e,a)}return n}(o);t.PersonUser=l,function(e){e.GUEST="GUEST",e.BOT="BOT",e.PERSON="PERSON"}(u=t.UserType||(t.UserType={}))},3:function(e,t,n){e.exports={messageBot:"Message_messageBot__1UGxS",messageUser:"Message_messageUser__3kL5s",avatar:"Message_avatar__3lDSz",textWrapper:"Message_textWrapper__2QTuM",text:"Message_text__3bVsr",leftTextWrapper:"Message_leftTextWrapper__T6JdA",leftText:"Message_leftText__3KRO6",rightTextWrapper:"Message_rightTextWrapper__3N8Sq",rightText:"Message_rightText__1PbWT"}},4:function(e,t,n){e.exports={button:"Global_button__33oEy"}},5:function(e,t,n){e.exports={image:"DetailMessage_image__1zbE4",image_container:"DetailMessage_image_container__30r15",play_button:"DetailMessage_play_button__2Hboo",title:"DetailMessage_title__A_inP",subtitle:"DetailMessage_subtitle__1ND_J",button:"DetailMessage_button__3wrCB",video_container:"DetailMessage_video_container__29xT4",video:"DetailMessage_video__2ChW3"}},55:function(e,t,n){e.exports={messageContainer:"MessageContainer_messageContainer__1JbXm",messages:"MessageContainer_messages__1EfQ1"}},6:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.INBOX_CONNECT_REQUEST=t.EVENT_TO_GUEST=t.FILE_FROM_GUEST=t.NLU_REQUEST_EVENT=t.EXPERTS_DISCONNECTED=t.EXPERTS_DISCONNECT_REQUEST=t.EXPERTS_CONNECTED=t.EXPERTS_CONNECT_REQUEST=t.MESSAGE_TO_GUEST=t.MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST=t.MESSAGE_FROM_GUEST=t.GUEST_FEEDBACK_RESPONSE=t.GUEST_DISCONNECTED=t.GUEST_CONNECTED=t.TYPING_OFF=t.TYPING_ON=void 0,t.TYPING_ON="core.typing.on",t.TYPING_OFF="core.typing.off",t.GUEST_CONNECTED="core.guest.connected",t.GUEST_DISCONNECTED="core.guest.disconnected",t.GUEST_FEEDBACK_RESPONSE="core.guest.feedback.response",t.MESSAGE_FROM_GUEST="core.message.from.guest",t.MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST="core.message.without.analysis.from.guest",t.MESSAGE_TO_GUEST="core.message.to.guest",t.EXPERTS_CONNECT_REQUEST="core.experts.connect.request",t.EXPERTS_CONNECTED="core.experts.connected",t.EXPERTS_DISCONNECT_REQUEST="core.experts.disconnect.request",t.EXPERTS_DISCONNECTED="core.experts.disconnected",t.NLU_REQUEST_EVENT="core.nlu.request.event",t.FILE_FROM_GUEST="core.file.from.guest",t.EVENT_TO_GUEST="core.event.to.guest",t.INBOX_CONNECT_REQUEST="core.inbox.connect.request"},80:function(e,t,n){e.exports={chatPage:"Client_chatPage__126Ne"}},82:function(e,t,n){e.exports={chatwindow:"Chat_chatwindow__2gTsn"}},83:function(e,t,n){e.exports={inputContainer:"InputContainer_inputContainer__2LEmG"}},86:function(e,t,n){e.exports={text:"Text_text__2JaXU"}},89:function(e,t,n){e.exports={markdownMessage:"MarkdownMessage_markdownMessage__hSbUt"}},90:function(e,t,n){},91:function(e,t,n){e.exports={typingIndicator:"TypingIndicator_typingIndicator__2vRCR",blink:"TypingIndicator_blink__3wJ7S"}},96:function(e,t,n){e.exports=n(208)}},[[96,1,2]]]);
2
+ //# sourceMappingURL=main.1f8d6c7f.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts","../../../src/actions/index.ts","../../../src/actions/feedbackFromGuestResponse.ts","../../../src/actions/guestConnected.ts","../../../src/actions/guestDisconnected.ts","../../../src/actions/receiveFileFromGuest.ts","../../../src/actions/receiveTextMessageFromGuest.ts","../../../src/actions/receiveTextMessageWithoutAnalysisFromGuest.ts","../../../src/actions/requestNLUEvent.ts","../../../src/actions/sendMessageToGuest.ts","../../../src/model/index.ts","../../../src/model/button.ts","../../../src/model/feedback.ts","components/AudioRecorder.module.scss","locales sync /^/.//.*/.json$","components/QuickReplies.module.scss","types.ts","actions/index.ts","actions/connectionActions.ts","components/QuickReplies.tsx","components/AudioRecorder.tsx","components/TextInput.tsx","components/Upload.tsx","components/InputContainer.tsx","components/BotMessage.tsx","components/detail-message/Buttons.tsx","components/detail-message/Image.tsx","components/Text.tsx","components/detail-message/Subtitle.tsx","components/detail-message/Title.tsx","components/detail-message/index.tsx","components/MarkdownMessage.tsx","components/TextMessage.tsx","components/UserMessage.tsx","components/Message.tsx","components/TypingIndicator.tsx","components/MessageContainer.tsx","components/Chat.tsx","reducers/backendConnectionReducer.ts","reducers/chatReducer.ts","reducers/index.ts","store/localStorage.ts","store/socketMiddleware.ts","store/index.ts","store/configureStore.ts","locales/initialize.ts","index.tsx","components/TextInput.module.scss","components/Upload.module.scss","../../../src/model/message.ts","../../../src/model/user.ts","components/Message.module.scss","Global.module.scss","components/detail-message/DetailMessage.module.scss","components/MessageContainer.module.scss","../../../src/actions/actionTypes.ts","Client.module.scss","components/Chat.module.scss","components/InputContainer.module.scss","components/Text.module.scss","components/MarkdownMessage.module.scss","components/TypingIndicator.module.scss"],"names":["sessionId","filename","file","message_1","UploadFileMessage","type","actionTypes_1","FILE_FROM_GUEST","text","message","TextMessage","MESSAGE_FROM_GUEST","MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST","event","title","this","module","exports","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","ConnectionStateEnum","UserType","notifyParentToChangePath","url","doConnect","userId","querystrings","QuickReplies","quickReplies","onQuickReplyClick","onShowMore","className","styles","reply","key","label","classNames","quickReply","globalStyles","button","onClick","more","AudioRecorder","props","audioInput","volume","leftchannel","recorder","recordingLength","sampleRate","mediaStream","state","recordingState","triggerAudioRecording","bind","triggerAudioRecordingSuccess","initRecording","processRecordingInput","handleClickSubmitAudio","handleClickStopAudio","setState","navigator","mediaDevices","getUserMedia","audio","video","then","stream","length","console","log","context","window","AudioContext","webkitAudioContext","createGain","createMediaStreamSource","connect","createScriptProcessor","onaudioprocess","destination","left","inputBuffer","getChannelData","push","Float32Array","leftBuffer","mergeBuffers","downsampledBuffer","downsampleBuffer","blob","createWav","onAudioRecorded","disconnect","getAudioTracks","forEach","track","stop","audioRecorder","recordButton","xmlns","width","height","viewBox","d","fill","spinning","cancelButton","recorderIcon","submitButton","React","Component","buffer","ArrayBuffer","view","DataView","writeUTFBytes","setUint32","setUint16","OUTPUT_SAMPLE_RATE","lng","index","i","setInt16","Blob","offset","val","setUint8","charCodeAt","channelBuffer","result","set","sampleRateRatio","newLength","Math","round","offsetResult","offsetBuffer","nextOffsetBuffer","accum","count","TextInput","speechSupport","translate","onTextInput","useState","hasText","setHasText","userTextInput","useRef","inputWrapper","onSubmit","preventDefault","currentUserInput","current","value","trim","focus","messageInputWrapper","messageInput","placeholder","ref","onChange","target","undefined","sendMessage","buttonStyle","upload__button","uploading","Upload","uploadRequest","uploadState","payload","onUploadFile","upload","UploadStateEnum","PENDING","files","item","reader","FileReader","onload","evt","name","readAsDataURL","UPLOADING","InputContainer","inputContainer","BotMessage","sender","children","messageBot","avatar","src","alt","BOT","textWrapper","leftTextWrapper","leftText","Buttons","buttons","onButtonClick","Image","imageUrl","itemUrl","image","includes","video_container","frameBorder","allowFullScreen","href","rel","Text","onLinkClick","componentDecorator","decoratedHref","decoratedText","split","Emoji","emojify","Subtitle","subtitle","Title","DetailMessage","query","clamp","MarkdownMessage","markdown","excerpt","handleOnLinkClick","markdownMessage","options","overrides","a","UserMessage","messageUser","rightTextWrapper","rightText","getMessageCmp","MessageTypeEnum","TEXT","textMessage","DETAIL","detailMessage","MARKDOWN","Message","msgCmp","GUEST","TypingIndicator","isTyping","typingIndicator","Element","Scroll","MessageContainer","duration","delay","scroller","scrollTo","smooth","containerId","scrollToBottom","prevProps","messages","isBotTyping","hasNewMessages","setTimeout","messageContainer","msg","INCOMMING_EVENTS","wrappedComponent","reduxConnect","chat","getTranslate","locale","dispatch","onConnect","getState","parsedQuerystrings","queryString","parse","connectionState","connection","uuid","userIdCookie","Cookies","get","stringify","onMessageFromUser","coreReceiveTextMessageFromGuest","sendMessageFromUser","sendAudioMessageFromUser","onActionFromUser","action","ActionTypes","receiveTextMessageWithoutAnalysisFromGuest","handleQuickReplyClick","onNluEvent","coreRequestNLUEvent","requestNLUEvent","ButtonTypeEnum","WEB_URL","POSTBACK","handleButtonClick","handleLinkClick","receiveFileFromGuest","sendUploadFileFromUser","useEffect","handleOnMessageFromOutside","data","story","location","search","addEventListener","removeEventListener","chatwindow","initialState","DISCONNECTED","backendConnectionReducer","assign","CONNECTING","CONNECTED","RECONNECTED","appendMessageFromGuestToState","concat","sendToParentPage","isIframe","top","postMessage","open","self","chatReducer","TYPING_ON","TYPING_OFF","MESSAGE_TO_GUEST","_id","meta","actionId","alreadyAdded","filter","m","lastMessage","EVENT_TO_GUEST","transcription","GuestUser","rootReducer","combineReducers","localizeReducer","isExpired","lastSavedAt","expiresAt","Date","setHours","getHours","blacklist","socketMiddleware","next","socket","io","on","language","setActiveLanguage","ChatActions","uri","replace","emit","JSON","indexOf","store","persistedState","localStorage","getItem","serializedState","err","error","loadState","compose","applyMiddleware","thunk","createStore","reducer","subscribe","throttle","setItem","now","toISOString","saveState","configureStore","languages","initialize","defaultLanguage","renderToStaticMarkup","json","require","addTranslationForLanguage","initTranslations","ReactDOM","render","chatPage","document","getElementById"],"mappings":"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","file":"static/js/main.1f8d6c7f.chunk.js","sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./actions\"), exports);\n__exportStar(require(\"./model\"), exports);\n__exportStar(require(\"./core\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.feedbackFromGuestResponse = exports.receiveFileFromGuest = exports.requestNLUEvent = exports.receiveTextMessageWithoutAnalysisFromGuest = exports.receiveTextMessageFromGuest = exports.sendMessageToGuest = exports.guestDisconnected = exports.guestConnected = void 0;\nexports.ActionTypes = require(\"./actionTypes\");\nconst feedbackFromGuestResponse_1 = require(\"./feedbackFromGuestResponse\");\nexports.feedbackFromGuestResponse = feedbackFromGuestResponse_1.default;\nconst guestConnected_1 = require(\"./guestConnected\");\nexports.guestConnected = guestConnected_1.default;\nconst guestDisconnected_1 = require(\"./guestDisconnected\");\nexports.guestDisconnected = guestDisconnected_1.default;\nconst receiveFileFromGuest_1 = require(\"./receiveFileFromGuest\");\nexports.receiveFileFromGuest = receiveFileFromGuest_1.default;\nconst receiveTextMessageFromGuest_1 = require(\"./receiveTextMessageFromGuest\");\nexports.receiveTextMessageFromGuest = receiveTextMessageFromGuest_1.default;\nconst receiveTextMessageWithoutAnalysisFromGuest_1 = require(\"./receiveTextMessageWithoutAnalysisFromGuest\");\nexports.receiveTextMessageWithoutAnalysisFromGuest = receiveTextMessageWithoutAnalysisFromGuest_1.default;\nconst requestNLUEvent_1 = require(\"./requestNLUEvent\");\nexports.requestNLUEvent = requestNLUEvent_1.default;\nconst sendMessageToGuest_1 = require(\"./sendMessageToGuest\");\nexports.sendMessageToGuest = sendMessageToGuest_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst actionTypes_1 = require(\"./actionTypes\");\nconst feedbackFromGuestResponse = (satisfaction, intent) => ({\n type: actionTypes_1.GUEST_FEEDBACK_RESPONSE,\n payload: { satisfaction, intent },\n});\nexports.default = feedbackFromGuestResponse;\n//# sourceMappingURL=feedbackFromGuestResponse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst actionTypes_1 = require(\"./actionTypes\");\n/**\n * Informiert die Middlewares, dass sich ein Gast mit dem Bot verbunden hat. Dies kann z.B. sein, wenn er den Webclient öffnet.\n * @param sessionId Die aktuelle Session-Id des Gasts.\n */\nconst guestConnected = (sessionId) => ({ type: actionTypes_1.GUEST_CONNECTED, payload: { sessionId } });\nexports.default = guestConnected;\n//# sourceMappingURL=guestConnected.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst actionTypes_1 = require(\"./actionTypes\");\n/**\n * Informiert die Middlewares, dass die Verbindung mit dem Gast unterbrochen wurde. Dies kann z.B. sein, wenn er den Webclient schliesst oder keine Internetverbindung mehr hat.\n * @param sessionId Die aktuelle Session-Id des Gasts.\n */\nconst guestDisconnected = (sessionId) => ({ type: actionTypes_1.GUEST_DISCONNECTED, payload: { sessionId } });\nexports.default = guestDisconnected;\n//# sourceMappingURL=guestDisconnected.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_1 = require(\"../model/message\");\nconst user_1 = require(\"../model/user\");\nconst actionTypes_1 = require(\"./actionTypes\");\nconst receiveFileFromGuest = (filename, blob, payload) => {\n const file = new message_1.UploadFileMessage(filename, blob, payload, new user_1.GuestUser());\n return { type: actionTypes_1.FILE_FROM_GUEST, file };\n};\nexports.default = receiveFileFromGuest;\n//# sourceMappingURL=receiveFileFromGuest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_1 = require(\"../model/message\");\nconst user_1 = require(\"../model/user\");\nconst actionTypes_1 = require(\"./actionTypes\");\nconst receiveTextMessageFromGuest = (text) => {\n const message = new message_1.TextMessage(text, new user_1.GuestUser());\n return { type: actionTypes_1.MESSAGE_FROM_GUEST, message };\n};\nexports.default = receiveTextMessageFromGuest;\n//# sourceMappingURL=receiveTextMessageFromGuest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_1 = require(\"../model/message\");\nconst user_1 = require(\"../model/user\");\nconst actionTypes_1 = require(\"./actionTypes\");\nconst receiveTextMessageWithoutAnalysisFromGuest = (text) => {\n const message = new message_1.TextMessage(text, new user_1.GuestUser());\n return { type: actionTypes_1.MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST, message };\n};\nexports.default = receiveTextMessageWithoutAnalysisFromGuest;\n//# sourceMappingURL=receiveTextMessageWithoutAnalysisFromGuest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst actionTypes_1 = require(\"./actionTypes\");\nconst requestNLUEvent = (event) => ({ type: actionTypes_1.NLU_REQUEST_EVENT, event });\nexports.default = requestNLUEvent;\n//# sourceMappingURL=requestNLUEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst actionTypes_1 = require(\"./actionTypes\");\nconst sendMessageToGuest = (message) => ({\n type: actionTypes_1.MESSAGE_TO_GUEST,\n message,\n});\nexports.default = sendMessageToGuest;\n//# sourceMappingURL=sendMessageToGuest.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./actionLog\"), exports);\n__exportStar(require(\"./button\"), exports);\n__exportStar(require(\"./feedback\"), exports);\n__exportStar(require(\"./message\"), exports);\n__exportStar(require(\"./user\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ButtonTypeEnum = exports.PostbackButton = exports.UrlButton = exports.Button = void 0;\nclass Button {\n constructor(title, type) {\n this.title = title;\n this.type = type;\n }\n}\nexports.Button = Button;\nclass UrlButton extends Button {\n constructor(title, url) {\n super(title, ButtonTypeEnum.WEB_URL);\n this.url = url;\n }\n}\nexports.UrlButton = UrlButton;\nclass PostbackButton extends Button {\n constructor(title, payload) {\n super(title, ButtonTypeEnum.POSTBACK);\n this.payload = payload;\n }\n}\nexports.PostbackButton = PostbackButton;\nvar ButtonTypeEnum;\n(function (ButtonTypeEnum) {\n ButtonTypeEnum[\"WEB_URL\"] = \"web_url\";\n ButtonTypeEnum[\"POSTBACK\"] = \"postback\";\n})(ButtonTypeEnum = exports.ButtonTypeEnum || (exports.ButtonTypeEnum = {}));\n//# sourceMappingURL=button.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SatisfactionEnum = void 0;\nvar SatisfactionEnum;\n(function (SatisfactionEnum) {\n SatisfactionEnum[\"GOOD\"] = \"GOOD\";\n SatisfactionEnum[\"BAD\"] = \"BAD\";\n})(SatisfactionEnum = exports.SatisfactionEnum || (exports.SatisfactionEnum = {}));\n//# sourceMappingURL=feedback.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"audioRecorder\":\"AudioRecorder_audioRecorder__9e24N\",\"recordButton\":\"AudioRecorder_recordButton__104a6\",\"submitButton\":\"AudioRecorder_submitButton__kX6gE\",\"cancelButton\":\"AudioRecorder_cancelButton__379d9\",\"recorderIcon\":\"AudioRecorder_recorderIcon__2e6S0\",\"pulse\":\"AudioRecorder_pulse__2JaAb\",\"spinning\":\"AudioRecorder_spinning__26mEm\",\"spin\":\"AudioRecorder_spin__3IqEo\"};","var map = {\n\t\"./de.json\": 168,\n\t\"./en.json\": 169,\n\t\"./fr.json\": 170,\n\t\"./it.json\": 171\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 167;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"quickReplies\":\"QuickReplies_quickReplies__3s_Fe\",\"quickReply\":\"QuickReplies_quickReply__1ALDF\",\"more\":\"QuickReplies_more__1NmDD\"};","import { Message, QuickReply, UploadRequest } from '@botfabrik/engine-domain';\nimport { LocalizeState } from 'react-localize-redux';\n\nexport interface RootState {\n chat: ChatState;\n connection: ConnectionState;\n locale: LocalizeState;\n}\n\nexport interface ChatState {\n isBotTyping: boolean;\n messages: Message[];\n quickReplies: QuickReply[];\n uploadRequest?: UploadRequest;\n speechSupport: boolean;\n}\n\nexport enum ConnectionStateEnum {\n CONNECTING,\n CONNECTED,\n RECONNECTED,\n DISCONNECTED,\n}\n\nexport interface ConnectionState {\n connectionState: ConnectionStateEnum;\n sessionId: string | undefined;\n userId: string | undefined;\n}\n\nexport interface Sender {\n avatar: string;\n type: UserType;\n}\n\nexport enum UserType {\n GUEST = 'GUEST',\n BOT = 'BOT',\n PERSON = 'PERSON',\n}\n","import {\n ActionTypes,\n Button,\n ButtonTypeEnum,\n Message,\n PostbackButton,\n QuickReply,\n receiveFileFromGuest,\n receiveTextMessageFromGuest as coreReceiveTextMessageFromGuest,\n receiveTextMessageWithoutAnalysisFromGuest,\n requestNLUEvent as coreRequestNLUEvent,\n UrlButton,\n} from '@botfabrik/engine-domain';\nimport { AnyAction, Dispatch } from 'redux';\n\nexport const MESSAGE_TO_PARENT_PAGE = 'MESSAGE_TO_PARENT_PAGE';\nexport const RESTORE_PREVIOUS_CHAT_MESSAGES = 'RESTORE_PREVIOUS_CHAT_MESSAGES';\nexport const AUDIO_MESSAGE_FROM_USER = 'AUDIO_MESSAGE_FROM_USER';\nexport const ENABLE_SPEECH_SUPPORT = 'ENABLE_SPEECH_SUPPORT';\nexport const RECEIVE_SPEECH_TRANSCRIPTION = 'RECEIVE_SPEECH_TRANSCRIPTION';\n\nexport const GET_STARTED = 'webclient.get.started';\nexport const EXPAND_WINDOW = 'webclient.expand.window';\n\n/**\n * Informiere den Store, dass der Benutzer eine neue Nachricht gesendet hat.\n */\nexport const sendMessageFromUser = (text: string) => coreReceiveTextMessageFromGuest(text);\n\nexport const sendAudioMessageFromUser = (blob: Blob) => ({\n type: AUDIO_MESSAGE_FROM_USER,\n buffer: blob,\n});\n\nexport const enableSpeechSupport = () => ({\n type: ENABLE_SPEECH_SUPPORT,\n});\n\nexport const receiveSpeechTranscription = (transcription: string) => ({\n type: RECEIVE_SPEECH_TRANSCRIPTION,\n transcription,\n});\n\n/**\n * Führt einen NLU Event aus.\n */\nexport const requestNLUEvent = (event: string) => coreRequestNLUEvent(event);\n\nexport const restorePreviousChatMessages = (messages: Message[]) => ({\n type: RESTORE_PREVIOUS_CHAT_MESSAGES,\n messages,\n});\n\nexport const handleQuickReplyClick = (reply: QuickReply) => {\n return (dispatch: Dispatch<AnyAction>) => {\n if ((reply.payload as any).type !== ActionTypes.MESSAGE_FROM_GUEST) {\n dispatch(receiveTextMessageWithoutAnalysisFromGuest(reply.label));\n }\n return dispatch(reply.payload as AnyAction);\n };\n};\n\nexport const handleButtonClick = (button: Button) => {\n switch (button.type) {\n case ButtonTypeEnum.WEB_URL:\n const urlButton = button as UrlButton;\n return notifyParentToChangePath(urlButton.url);\n case ButtonTypeEnum.POSTBACK:\n const postbackButton = button as PostbackButton;\n return postbackButton.payload;\n default:\n throw new Error(`unknown button type ${button.type}`);\n }\n};\n\nexport const handleLinkClick = (url: string) => notifyParentToChangePath(url);\n\nexport const getStarted = () => ({\n type: GET_STARTED,\n});\n\nexport const notifyParentToChangePath = (url: string) => ({\n type: MESSAGE_TO_PARENT_PAGE,\n message: {\n type: 'webclient.change.url',\n url,\n },\n});\n\nexport const showMore = () => ({\n type: MESSAGE_TO_PARENT_PAGE,\n message: {\n type: 'webclient.show.more',\n },\n});\n\nexport const sendUploadFileFromUser = (filename: string, blob: Blob, payload: object) =>\n receiveFileFromGuest(filename, blob, payload);\n","import Cookies from 'js-cookie';\nimport queryString from 'query-string';\nimport { AnyAction, Dispatch } from 'redux';\nimport { v4 as uuid } from 'uuid';\nimport { RootState } from '../types';\n\nexport const CONNECT = 'CONNECT';\nexport const CONNECTING = 'CONNECTING';\nexport const CONNECTED = 'CONNECTED';\nexport const DISCONNECTED = 'DISCONNECTED';\nexport const RECONNECTED = 'RECONNECTED';\nexport const RESTORE_SESSION_ID = 'RESTORE_SESSION_ID';\n\n/**\n * Erstelle eine Verbindung mit dem Backend Server\n */\nexport const connect = (querystrings: string) => {\n return (dispatch: Dispatch<AnyAction>, getState: () => RootState) => {\n const parsedQuerystrings = queryString.parse(querystrings);\n const connectionState = getState().connection;\n\n // get session id\n let sessionId = connectionState.sessionId;\n if (sessionId === undefined) {\n sessionId = uuid();\n }\n\n // get user id\n let userId = connectionState.userId;\n if (userId === undefined) {\n const userIdCookie = Cookies.get('bf-webclient-userId');\n userId = userIdCookie ? userIdCookie : uuid();\n Cookies.set('bf-webclient-userId', userId!);\n }\n\n parsedQuerystrings.sessionId = sessionId;\n parsedQuerystrings.userId = userId;\n\n return dispatch(doConnect(sessionId!, userId!, queryString.stringify(parsedQuerystrings)));\n };\n};\n\nconst doConnect = (sessionId: string, userId: string, querystrings: string) => ({\n type: CONNECT,\n sessionId,\n userId,\n querystrings,\n});\n\nexport const restoreSessionId = (sessionId: string) => ({\n type: RESTORE_SESSION_ID,\n sessionId,\n});\n\n/**\n * Informiere den Store, dass wir eine Verbindung mit dem Server aufbauen.\n */\nexport const connecting = () => ({\n type: CONNECTING,\n});\n\n/**\n * Informiere den Store, dass wir mit dem Server verbunden sind.\n */\nexport const connected = () => ({\n type: CONNECTED,\n});\n\n/**\n * Informiere den Store, dass die Verbindung mit dem Server getrennt wurde.\n */\nexport const disconnected = () => ({\n type: DISCONNECTED,\n});\n\n/**\n * Informiere den Store, dass die Verbindung mit dem Server wiederhergestellt wurde.\n */\nexport const reconnected = () => ({\n type: RECONNECTED,\n});\n","import { QuickReply } from '@botfabrik/engine-domain';\nimport classNames from 'classnames';\nimport React from 'react';\nimport globalStyles from '../Global.module.scss';\nimport styles from './QuickReplies.module.scss';\n\ninterface Props {\n quickReplies: QuickReply[];\n onQuickReplyClick: (reply: QuickReply) => void;\n onShowMore: () => void;\n}\n\nconst QuickReplies: React.FC<Props> = ({ quickReplies, onQuickReplyClick, onShowMore }) => (\n <div className={styles.quickReplies}>\n {quickReplies.map((reply) => (\n <span\n key={reply.label}\n className={classNames(styles.quickReply, globalStyles.button)}\n onClick={() => onQuickReplyClick(reply)}\n >\n {reply.label}\n </span>\n ))}\n <span key=\"more\" className={classNames(styles.quickReply, styles.more)} onClick={() => onShowMore()}>\n ...\n </span>\n </div>\n);\n\nexport default QuickReplies;\n","import classNames from 'classnames';\nimport React from 'react';\nimport globalStyles from '../Global.module.scss';\nimport styles from './AudioRecorder.module.scss';\n\nconst BUFFER_SIZE = 2048;\nconst OUTPUT_SAMPLE_RATE = 16000;\n\n/**\n * The implementation of the AudioRecorder was inspired by the following blogpost:\n * https://typedarray.org/from-microphone-to-wav-with-getusermedia-and-web-audio/\n */\n\ninterface Props {\n onAudioRecorded: (blob: Blob) => void;\n}\n\ninterface State {\n recordingState: string;\n}\n\nexport default class AudioRecorder extends React.Component<Props, State> {\n private audioInput: MediaStreamAudioSourceNode | null = null;\n private volume: GainNode | null = null;\n private leftchannel: Float32Array[] = [];\n private recorder: ScriptProcessorNode | null = null;\n private recordingLength: number = 0;\n private sampleRate: number | null = null;\n private mediaStream: MediaStream | null = null;\n\n constructor(props: Props) {\n super(props);\n this.state = { recordingState: 'none' };\n\n this.triggerAudioRecording = this.triggerAudioRecording.bind(this);\n this.triggerAudioRecordingSuccess = this.triggerAudioRecordingSuccess.bind(this);\n this.initRecording = this.initRecording.bind(this);\n this.processRecordingInput = this.processRecordingInput.bind(this);\n this.handleClickSubmitAudio = this.handleClickSubmitAudio.bind(this);\n this.handleClickStopAudio = this.handleClickStopAudio.bind(this);\n }\n\n triggerAudioRecording() {\n this.setState({ recordingState: 'connecting' });\n navigator.mediaDevices.getUserMedia({ audio: true, video: false }).then(this.triggerAudioRecordingSuccess);\n }\n\n triggerAudioRecordingSuccess(stream: MediaStream) {\n this.mediaStream = stream;\n this.leftchannel.length = 0;\n this.recordingLength = 0;\n\n this.initRecording(stream);\n\n console.log('Recording now...');\n }\n\n initRecording(stream: MediaStream) {\n var AudioContext = window.AudioContext || (window as any).webkitAudioContext;\n var context = new AudioContext();\n // we query the context sample rate (varies depending on platforms)\n this.sampleRate = context.sampleRate;\n // creates a gain node which adjusts the volume on audio streams\n this.volume = context.createGain();\n // creates an audio node from the microphone incoming stream\n this.audioInput = context.createMediaStreamSource(stream);\n // connect the stream to the gain node\n this.audioInput.connect(this.volume);\n this.recorder = context.createScriptProcessor(BUFFER_SIZE, 1, 1);\n this.recorder.onaudioprocess = this.processRecordingInput;\n // we connect the recorder\n this.volume.connect(this.recorder);\n this.recorder.connect(context.destination);\n }\n\n processRecordingInput(e: AudioProcessingEvent) {\n if (this.state.recordingState === 'connecting') {\n this.setState({ recordingState: 'recording' });\n }\n if (this.state.recordingState !== 'none') {\n const left = e.inputBuffer.getChannelData(0);\n // we clone the samples\n this.leftchannel.push(new Float32Array(left));\n this.recordingLength += BUFFER_SIZE;\n console.log('recording');\n }\n }\n\n handleClickSubmitAudio() {\n // we flat the left channel down\n const leftBuffer = mergeBuffers(this.leftchannel, this.recordingLength);\n const downsampledBuffer = downsampleBuffer(leftBuffer, this.sampleRate || 0);\n\n // we create our wav file\n const blob = createWav(downsampledBuffer);\n this.props.onAudioRecorded(blob);\n\n // For debugging purpose: Set link to state so you can display a button on the UI to download the audio file:\n // var url = (window.URL || window.webkitURL).createObjectURL(blob);\n // this.setState({url});\n\n this.handleClickStopAudio();\n }\n\n handleClickStopAudio() {\n this.setState({ recordingState: 'none' });\n this.audioInput?.disconnect();\n this.volume?.disconnect();\n this.recorder?.disconnect();\n if (this.mediaStream) {\n this.mediaStream?.getAudioTracks().forEach((track: MediaStreamTrack) => {\n track.stop();\n });\n }\n }\n\n render() {\n console.log('state:', this.state.recordingState);\n return (\n <div className={styles.audioRecorder}>\n {this.state.recordingState === 'none' && (\n <button\n className={classNames(globalStyles.button, styles.recordButton)}\n type=\"submit\"\n onClick={this.triggerAudioRecording}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </button>\n )}\n\n {this.state.recordingState === 'connecting' && (\n <svg\n className={styles.spinning}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n )}\n\n {this.state.recordingState === 'recording' && (\n <div className={styles.audioRecorder}>\n <button\n className={classNames(globalStyles.button, styles.cancelButton)}\n onClick={this.handleClickStopAudio}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </button>\n <div className={styles.recorderIcon} />\n <button\n className={classNames(globalStyles.button, styles.submitButton)}\n type=\"submit\"\n onClick={this.handleClickSubmitAudio}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nconst createWav = (downsampledBuffer: Float32Array) => {\n const buffer = new ArrayBuffer(44 + downsampledBuffer.length * 2);\n const view = new DataView(buffer);\n\n // RIFF chunk descriptor\n writeUTFBytes(view, 0, 'RIFF');\n view.setUint32(4, 44 + downsampledBuffer.length * 2, true);\n writeUTFBytes(view, 8, 'WAVE');\n\n // FMT sub-chunk\n writeUTFBytes(view, 12, 'fmt ');\n view.setUint32(16, 16, true);\n view.setUint16(20, 1, true);\n\n // mono - 1 channel\n view.setUint16(22, 1, true);\n view.setUint32(24, OUTPUT_SAMPLE_RATE, true);\n view.setUint32(28, OUTPUT_SAMPLE_RATE * 4, true);\n view.setUint16(32, 4, true);\n view.setUint16(34, 16, true);\n\n // data sub-chunk\n writeUTFBytes(view, 36, 'data');\n view.setUint32(40, downsampledBuffer.length * 2, true);\n\n // write the PCM samples\n const lng = downsampledBuffer.length;\n let index = 44;\n const volume = 1;\n for (var i = 0; i < lng; i++) {\n view.setInt16(index, downsampledBuffer[i] * (0x7fff * volume), true);\n index += 2;\n }\n\n // our final binary blob\n return new Blob([view], { type: 'audio/wav' });\n};\n\nconst writeUTFBytes = (view: DataView, offset: number, val: string) => {\n for (var i = 0; i < val.length; i++) {\n view.setUint8(offset + i, val.charCodeAt(i));\n }\n};\n\nconst mergeBuffers = (channelBuffer: Float32Array[], recordingLength: number) => {\n const result = new Float32Array(recordingLength);\n let offset = 0;\n const lng = channelBuffer.length;\n for (var i = 0; i < lng; i++) {\n const buffer = channelBuffer[i];\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n};\n\nconst downsampleBuffer = (buffer: Float32Array, sampleRate: number) => {\n if (OUTPUT_SAMPLE_RATE === sampleRate) {\n return buffer;\n }\n const sampleRateRatio = sampleRate / OUTPUT_SAMPLE_RATE;\n const newLength = Math.round(buffer.length / sampleRateRatio);\n const result = new Float32Array(newLength);\n let offsetResult = 0;\n let offsetBuffer = 0;\n while (offsetResult < result.length) {\n let nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);\n let accum = 0,\n count = 0;\n for (var i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) {\n accum += buffer[i];\n count++;\n }\n result[offsetResult] = accum / count;\n offsetResult++;\n offsetBuffer = nextOffsetBuffer;\n }\n return result;\n};\n","import classNames from 'classnames';\nimport React, { useRef, useState } from 'react';\nimport { TranslateFunction } from 'react-localize-redux';\nimport globalStyles from '../Global.module.scss';\nimport AudioRecorder from './AudioRecorder';\nimport styles from './TextInput.module.scss';\n\ninterface Props {\n speechSupport: boolean;\n translate: TranslateFunction;\n onTextInput: (input: string) => void;\n onAudioRecorded: (blob: Blob) => void;\n}\n\nconst TextInput: React.FC<Props> = ({ speechSupport, translate, onTextInput, onAudioRecorded }) => {\n const [hasText, setHasText] = useState(false);\n const userTextInput = useRef<HTMLInputElement>(null);\n\n const handleClickSubmitButton = (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const currentUserInput = userTextInput.current;\n if (currentUserInput && currentUserInput.value.trim().length >= 1) {\n onTextInput(currentUserInput.value.trim());\n currentUserInput.value = '';\n setHasText(false);\n currentUserInput.focus();\n }\n };\n\n const handleOnInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.target.value.trim();\n setHasText(value.length > 0);\n };\n\n return (\n <form className={styles.inputWrapper} onSubmit={handleClickSubmitButton}>\n <div className={styles.messageInputWrapper}>\n <input\n className={styles.messageInput}\n placeholder={translate('Enter chat message') as string}\n ref={userTextInput}\n onChange={handleOnInputChange}\n />\n </div>\n {hasText || !speechSupport || navigator.mediaDevices === undefined ? (\n <button className={classNames(styles.sendMessage, globalStyles.button)} type=\"submit\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 232 168\">\n <path d=\"M227.514,84.044l-224,-80l48,80l-48,80l224,-80Z\" />\n </svg>\n </button>\n ) : (\n speechSupport &&\n navigator.mediaDevices !== undefined && <AudioRecorder onAudioRecorded={onAudioRecorded} />\n )}\n </form>\n );\n};\n\nexport default TextInput;\n","import { UploadRequest, UploadStateEnum } from '@botfabrik/engine-domain';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { FaPaperclip, FaUpload } from 'react-icons/fa';\nimport styles from './Upload.module.scss';\n\ninterface Props {\n uploadRequest?: UploadRequest;\n onUploadFile: (filename: string, result: any, payload: object) => void;\n}\n\nconst Upload: React.FC<Props> = ({ uploadRequest: { uploadState, label = '', payload = {} } = {}, onUploadFile }) => {\n const handleUploadFile = (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target?.files?.item(0);\n if (file) {\n const reader = new FileReader();\n reader.onload = (evt: any) => {\n onUploadFile(file.name, evt.target.result, payload);\n };\n reader.readAsDataURL(file);\n }\n };\n\n return (\n <div className={styles.upload}>\n {label && (\n <label className={buttonStyle(uploadState)}>\n {uploadState === UploadStateEnum.PENDING && (\n <div>\n <input type=\"file\" onChange={handleUploadFile} />\n <FaPaperclip />\n <span>{label}</span>\n </div>\n )}\n {uploadState === UploadStateEnum.UPLOADING && (\n <div>\n <FaUpload />\n <span>{`${label} wird hochgeladen`}</span>\n </div>\n )}\n </label>\n )}\n </div>\n );\n};\n\nconst buttonStyle = (state: UploadStateEnum | undefined) =>\n state === 'pending'\n ? styles.upload__button\n : state === 'uploading'\n ? classNames(styles.upload__button, styles.uploading)\n : '';\n\nexport default Upload;\n","import { QuickReply, UploadRequest } from '@botfabrik/engine-domain';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { TranslateFunction } from 'react-localize-redux';\nimport styles from './InputContainer.module.scss';\nimport QuickReplies from './QuickReplies';\nimport TextInput from './TextInput';\nimport Upload from './Upload';\n\ninterface Props {\n quickReplies: QuickReply[];\n speechSupport: boolean;\n uploadRequest?: UploadRequest;\n translate: TranslateFunction;\n onTextInput: (text: string) => void;\n onQuickReplyClick: (reply: QuickReply) => void;\n onShowMore: () => void;\n onUploadFile: (filename: string, blob: Blob, payload: any) => void;\n onAudioRecorded: (blob: Blob) => void;\n}\n\nconst InputContainer: React.FC<Props> = ({\n quickReplies,\n uploadRequest,\n speechSupport,\n translate,\n onTextInput,\n onQuickReplyClick,\n onShowMore,\n onUploadFile,\n onAudioRecorded,\n}) => (\n <div className={classNames(styles.inputContainer)}>\n <Upload uploadRequest={uploadRequest} onUploadFile={onUploadFile} />\n <QuickReplies quickReplies={quickReplies} onQuickReplyClick={onQuickReplyClick} onShowMore={onShowMore} />\n <TextInput\n translate={translate}\n onTextInput={onTextInput}\n onAudioRecorded={onAudioRecorded}\n speechSupport={speechSupport}\n />\n </div>\n);\n\nexport default InputContainer;\n","import { UserType } from '@botfabrik/engine-domain';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { Sender } from '../types';\nimport styles from './Message.module.scss';\n\ninterface Props {\n sender: Sender;\n}\n\nconst BotMessage: React.FC<Props> = ({ sender, children }) => (\n <li className={styles.messageBot}>\n <img className={styles.avatar} src={`${sender.avatar}`} alt={sender.type === UserType.BOT ? 'Bot' : 'Agent'} />\n <div className={classNames(styles.textWrapper, styles.leftTextWrapper)}>\n <div className={classNames(styles.text, styles.leftText)}>{children}</div>\n </div>\n </li>\n);\n\nexport default BotMessage;\n","import { Button } from '@botfabrik/engine-domain';\nimport classNames from 'classnames';\nimport React from 'react';\nimport globalStyles from '../../Global.module.scss';\nimport styles from './DetailMessage.module.scss';\n\ninterface Props {\n buttons: Button[];\n onButtonClick: (button: Button) => void;\n}\n\nconst Buttons: React.FC<Props> = ({ buttons, onButtonClick }) => (\n <div>\n {buttons.map((button, index) => (\n <button\n key={index}\n className={classNames(styles.button, globalStyles.button)}\n onClick={() => onButtonClick(button)}\n >\n {button.title}\n </button>\n ))}\n </div>\n);\n\nexport default Buttons;\n","import React from 'react';\nimport styles from './DetailMessage.module.scss';\n\ninterface Props {\n alt: string;\n imageUrl?: string;\n itemUrl?: string;\n}\n\nconst Image: React.FC<Props> = ({ alt, imageUrl, itemUrl }) =>\n imageUrl ? (\n <div className={styles.image}>\n {itemUrl ? (\n itemUrl.includes('youtube.com') ? (\n <div className={styles.video_container}>\n <iframe\n className={styles.video}\n title=\"Youtube\"\n width=\"100%\"\n src={itemUrl + '?rel=0'}\n frameBorder=\"0\"\n allowFullScreen\n />\n </div>\n ) : (\n <a href={itemUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n <img src={imageUrl} alt={alt} />\n </a>\n )\n ) : (\n <img src={imageUrl} alt={alt} />\n )}\n </div>\n ) : null;\n\nexport default Image;\n","import Emoji from 'node-emoji';\nimport React from 'react';\nimport Linkify from 'react-linkify';\nimport styles from './Text.module.scss';\n\ninterface Props {\n text: string;\n onLinkClick: (href: string) => void;\n}\n\nconst Text: React.FC<Props> = ({ text, onLinkClick }) => {\n const handleOnLinkClick = (href: string) => (event: any) => {\n event.preventDefault();\n if (href) {\n onLinkClick(href);\n }\n return false;\n };\n\n // TODO: Linus\n // - Button anstelle von a verwenden\n const componentDecorator = (decoratedHref: string, decoratedText: string, key: number) => (\n <a key={key} onClick={handleOnLinkClick(decoratedHref)}>\n {decoratedText}\n </a>\n );\n\n return (\n <div>\n {text.split('\\n').map((item, key) => (\n <span key={key} className={styles.text}>\n <Linkify componentDecorator={componentDecorator}>{Emoji.emojify(item)}</Linkify>\n <br />\n </span>\n ))}\n </div>\n );\n};\n\nexport default Text;\n","import React from 'react';\nimport Text from '../Text';\nimport styles from './DetailMessage.module.scss';\n\ninterface Props {\n subtitle: string | undefined;\n onLinkClick: (href: string) => void;\n}\n\nconst Subtitle: React.FC<Props> = ({ subtitle, onLinkClick }) =>\n subtitle ? (\n <div className={styles.subtitle}>\n <Text text={subtitle} onLinkClick={onLinkClick} />\n </div>\n ) : null;\n\nexport default Subtitle;\n","import React from 'react';\nimport styles from './DetailMessage.module.scss';\n\ninterface Props {\n title: string | undefined;\n}\n\nconst Title: React.FC<Props> = ({ title }) => (title ? <h2 className={styles.title}>{title}</h2> : null);\n\nexport default Title;\n","import { Button } from '@botfabrik/engine-domain';\nimport React from 'react';\nimport Dotdotdot from 'react-dotdotdot';\nimport MediaQuery from 'react-responsive';\nimport Buttons from './Buttons';\nimport Image from './Image';\nimport Subtitle from './Subtitle';\nimport Title from './Title';\n\ninterface Props {\n title?: string;\n subtitle: string;\n imageUrl?: string;\n itemUrl?: string;\n buttons: Button[];\n onButtonClick: (button: Button) => void;\n onLinkClick: (href: string) => void;\n}\n\nconst DetailMessage: React.FC<Props> = ({\n title,\n subtitle,\n imageUrl,\n itemUrl,\n buttons,\n onButtonClick,\n onLinkClick,\n}) => (\n <div>\n <MediaQuery query=\"(max-height: 150px)\">\n <Dotdotdot clamp={2}>\n <Subtitle subtitle={subtitle} onLinkClick={onLinkClick} />\n </Dotdotdot>\n </MediaQuery>\n <MediaQuery query=\"(min-height: 151px)\">\n <Title title={title} />\n <Image imageUrl={imageUrl} itemUrl={itemUrl} alt={title || subtitle} />\n <Subtitle subtitle={subtitle} onLinkClick={onLinkClick} />\n <Buttons buttons={buttons} onButtonClick={onButtonClick} />\n </MediaQuery>\n </div>\n);\n\nexport default DetailMessage;\n","import classNames from 'classnames';\nimport Markdown from 'markdown-to-jsx';\nimport React from 'react';\nimport Dotdotdot from 'react-dotdotdot';\nimport MediaQuery from 'react-responsive';\nimport styles from './MarkdownMessage.module.scss';\nimport Text from './Text';\n\ninterface Props {\n markdown: string;\n excerpt: string;\n className: string;\n onLinkClick: (href: string) => void;\n}\n\nconst MarkdownMessage: React.FC<Props> = ({ markdown, excerpt, className, onLinkClick }) => {\n const handleOnLinkClick = (href: string) => (event: any) => {\n event.preventDefault();\n if (href) {\n onLinkClick(href);\n }\n return false;\n };\n\n // TODO: Linus\n // - Button anstelle von a verwenden\n const Link: React.FC<{ title: string; href: string }> = ({ title, href }) => (\n <a onClick={handleOnLinkClick(href)}>{title}</a>\n );\n\n return (\n <div className={classNames(styles.markdownMessage, className)}>\n <MediaQuery query=\"(max-height: 150px)\">\n <Dotdotdot clamp={2}>\n <Text text={excerpt} onLinkClick={onLinkClick} />\n </Dotdotdot>\n </MediaQuery>\n <MediaQuery query=\"(min-height: 151px)\">\n <Markdown\n options={{\n overrides: {\n a: Link,\n },\n }}\n >\n {markdown}\n </Markdown>\n </MediaQuery>\n </div>\n );\n};\n\nexport default MarkdownMessage;\n","import React from 'react';\nimport Dotdotdot from 'react-dotdotdot';\nimport MediaQuery from 'react-responsive';\nimport Text from './Text';\nimport styles from './TextMessage.module.scss';\n\ninterface Props {\n text: string;\n onLinkClick: (href: string) => void;\n}\nconst TextMessage: React.FC<Props> = ({ text, onLinkClick }) => (\n <div className={styles.text}>\n <MediaQuery query=\"(max-height: 150px)\">\n <Dotdotdot clamp={2}>\n <Text text={text} onLinkClick={onLinkClick} />\n </Dotdotdot>\n </MediaQuery>\n <MediaQuery query=\"(min-height: 151px)\">\n <Text text={text} onLinkClick={onLinkClick} />\n </MediaQuery>\n </div>\n);\n\nexport default TextMessage;\n","import classNames from 'classnames';\nimport React from 'react';\nimport styles from './Message.module.scss';\n\nconst UserMessage: React.FC = ({ children }) => (\n <li className={styles.messageUser}>\n <div className={classNames(styles.textWrapper, styles.rightTextWrapper)}>\n <div className={classNames(styles.text, styles.rightText)}>{children}</div>\n </div>\n <img className={styles.avatar} alt=\"Guest\" src=\"visitor.svg\" />\n </li>\n);\n\nexport default UserMessage;\n","import {\n Button,\n DetailMessage as DetailMessageType,\n MarkdownMessage as MarkdownMessageType,\n Message as MessageType,\n MessageTypeEnum,\n TextMessage as TextMessageType,\n UserType,\n} from '@botfabrik/engine-domain';\nimport React from 'react';\nimport BotMessage from './BotMessage';\nimport DetailMessage from './detail-message';\nimport MarkdownMessage from './MarkdownMessage';\nimport TextMessage from './TextMessage';\nimport UserMessage from './UserMessage';\n\ninterface Props {\n message: MessageType;\n onButtonClick: (button: Button) => void;\n onLinkClick: (href: string) => void;\n}\n\nconst Message: React.FC<Props> = ({ message, onButtonClick, onLinkClick }) => {\n const msgCmp = getMessageCmp(message, onButtonClick, onLinkClick);\n switch (message.sender.type) {\n case UserType.GUEST:\n return <UserMessage>{msgCmp}</UserMessage>;\n default:\n return <BotMessage sender={message.sender}>{msgCmp}</BotMessage>;\n }\n};\n\nconst getMessageCmp = (\n message: MessageType,\n onButtonClick: (button: Button) => void,\n onLinkClick: (href: string) => void\n) => {\n switch (message.type) {\n case MessageTypeEnum.TEXT:\n const textMessage = message as TextMessageType;\n return <TextMessage text={textMessage.text} onLinkClick={onLinkClick} />;\n case MessageTypeEnum.DETAIL:\n const detailMessage = message as DetailMessageType;\n return (\n <DetailMessage\n title={detailMessage.title}\n subtitle={detailMessage.subtitle}\n imageUrl={detailMessage.imageUrl}\n itemUrl={detailMessage.itemUrl}\n buttons={detailMessage.buttons}\n onButtonClick={onButtonClick}\n onLinkClick={onLinkClick}\n />\n );\n case MessageTypeEnum.MARKDOWN:\n const markdownMessage = message as MarkdownMessageType;\n return (\n <MarkdownMessage\n markdown={markdownMessage.markdown}\n excerpt={markdownMessage.excerpt}\n className={markdownMessage.className}\n onLinkClick={onLinkClick}\n />\n );\n }\n};\n\nexport default Message;\n","import React from 'react';\nimport styles from './TypingIndicator.module.scss';\n\ninterface Props {\n isTyping?: boolean;\n}\n\nconst TypingIndicator: React.FC<Props> = ({ isTyping = false }) =>\n isTyping ? (\n <div className={styles.typingIndicator}>\n <span />\n <span />\n <span />\n </div>\n ) : null;\n\nexport default TypingIndicator;\n","import { Button, Message as MessageType } from '@botfabrik/engine-domain';\nimport React from 'react';\nimport Scroll from 'react-scroll';\nimport Message from './Message';\nimport styles from './MessageContainer.module.scss';\nimport TypingIndicator from './TypingIndicator';\n\nconst Element = Scroll.Element;\n\ninterface Props {\n messages: MessageType[];\n isBotTyping: boolean;\n onButtonClick: (button: Button) => void;\n onLinkClick: (href: string) => void;\n}\n\nclass MessageContainer extends React.Component<Props> {\n scrollToBottom(duration: number, delay: number) {\n const scroller = Scroll.scroller;\n scroller.scrollTo('ScrollToElement', {\n duration: duration,\n delay: delay,\n smooth: true,\n containerId: 'MessageContainer',\n });\n }\n\n componentDidMount() {\n this.scrollToBottom(0, 0);\n }\n\n componentDidUpdate(prevProps: Props) {\n const isRestored = prevProps.messages.length === 0;\n if (isRestored && this.props.messages.length > 0) {\n this.scrollToBottom(0, 0);\n } else {\n const isBotTyping = this.props.isBotTyping;\n const hasNewMessages =\n prevProps.messages.length !== this.props.messages.length && prevProps.messages.length > 1;\n if (isBotTyping || hasNewMessages) {\n // call scrollToBottom asynchronously to prevent flickering\n setTimeout(() => this.scrollToBottom(700, 20), 10);\n }\n }\n }\n\n render() {\n const { messages, isBotTyping, onButtonClick, onLinkClick } = this.props;\n return (\n <div className={styles.messageContainer} id=\"MessageContainer\">\n <ul className={styles.messages}>\n {messages.map((msg, index) => (\n <Message key={index} message={msg} onButtonClick={onButtonClick} onLinkClick={onLinkClick} />\n ))}\n </ul>\n <TypingIndicator isTyping={isBotTyping} />\n <Element name=\"ScrollToElement\" />\n </div>\n );\n }\n}\n\nexport default MessageContainer;\n","import { Button, Message, QuickReply, UploadRequest } from '@botfabrik/engine-domain';\nimport React, { useEffect } from 'react';\nimport { getTranslate, TranslateFunction } from 'react-localize-redux';\nimport { connect as reduxConnect } from 'react-redux';\nimport { AnyAction } from 'redux';\nimport {\n handleButtonClick,\n handleLinkClick,\n handleQuickReplyClick,\n requestNLUEvent,\n sendAudioMessageFromUser,\n sendMessageFromUser,\n sendUploadFileFromUser,\n showMore,\n} from '../actions';\nimport { connect } from '../actions/connectionActions';\nimport { RootState } from '../types';\nimport styles from './Chat.module.scss';\nimport InputContainer from './InputContainer';\nimport MessageContainer from './MessageContainer';\n\n/**\n * Events von der Wordpress Seite\n */\nconst INCOMMING_EVENTS = {\n TRIGGER_ACTION: 'TRIGGER_ACTION',\n TRIGGER_STORY: 'TRIGGER_STORY',\n CHAT_MESSAGE_FROM_GUEST: 'CHAT_MESSAGE_FROM_GUEST',\n ON_CHAT_WINDOW_OPEN: 'ON_CHAT_WINDOW_OPEN',\n ON_CHAT_WINDOW_CLOSE: 'ON_CHAT_WINDOW_CLOSE',\n};\n\ninterface Props {\n messages: Message[];\n quickReplies: QuickReply[];\n isBotTyping: boolean;\n speechSupport: boolean;\n uploadRequest?: UploadRequest;\n translate: TranslateFunction;\n onConnect: (querystrings: string) => void;\n onMessageFromUser: (text: string) => void;\n onActionFromUser: (action: AnyAction) => void;\n onQuickReplyClick: (reply: QuickReply) => void;\n onNluEvent: (event: string) => void;\n onButtonClick: (button: Button) => void;\n onLinkClick: (url: string) => void;\n onShowMore: () => void;\n onUploadFile: (filename: string, blob: Blob, payload: any) => void;\n onAudioRecorded: (blob: Blob) => void;\n}\n\nconst Chat: React.FC<Props> = ({\n messages,\n quickReplies,\n uploadRequest,\n isBotTyping,\n speechSupport,\n translate,\n onConnect,\n onNluEvent,\n onMessageFromUser,\n onQuickReplyClick,\n onButtonClick,\n onLinkClick,\n onUploadFile,\n onShowMore,\n onAudioRecorded,\n onActionFromUser,\n}) => {\n useEffect(() => {\n /**\n * Meldung von ausserhalb (z.B. vom Wordpress Content-Bereich)\n */\n const handleOnMessageFromOutside = (event: any) => {\n switch (event.data.type) {\n case INCOMMING_EVENTS.TRIGGER_ACTION:\n onActionFromUser(event.data.action);\n break;\n case INCOMMING_EVENTS.TRIGGER_STORY:\n onNluEvent(event.data.story);\n break;\n case INCOMMING_EVENTS.ON_CHAT_WINDOW_OPEN:\n onActionFromUser({ type: 'webclient.chatwindow.opened' });\n break;\n case INCOMMING_EVENTS.ON_CHAT_WINDOW_CLOSE:\n onActionFromUser({ type: 'webclient.chatwindow.closed' });\n break;\n case INCOMMING_EVENTS.CHAT_MESSAGE_FROM_GUEST:\n onMessageFromUser(event.data.text);\n break;\n }\n };\n\n onConnect(window.location.search);\n window.addEventListener('message', (event) => handleOnMessageFromOutside(event), false);\n return () => window.removeEventListener('message', handleOnMessageFromOutside);\n }, [onConnect, onActionFromUser, onMessageFromUser, onNluEvent]);\n\n return (\n <div className={styles.chatwindow}>\n <MessageContainer\n messages={messages}\n isBotTyping={isBotTyping}\n onButtonClick={onButtonClick}\n onLinkClick={onLinkClick}\n />\n <InputContainer\n quickReplies={quickReplies}\n uploadRequest={uploadRequest}\n speechSupport={speechSupport}\n translate={translate}\n onQuickReplyClick={onQuickReplyClick}\n onTextInput={onMessageFromUser}\n onShowMore={onShowMore}\n onUploadFile={onUploadFile}\n onAudioRecorded={onAudioRecorded}\n />\n </div>\n );\n};\n\nconst mapStateToProps = (state: RootState) => {\n const { messages, quickReplies, uploadRequest, isBotTyping, speechSupport } = state.chat;\n return {\n messages,\n quickReplies,\n uploadRequest,\n isBotTyping,\n speechSupport,\n translate: getTranslate(state.locale),\n };\n};\n\nconst bindAction = (dispatch: any) => {\n return {\n onConnect: (querystrings: string) => dispatch(connect(querystrings)),\n onMessageFromUser: (text: string) => dispatch(sendMessageFromUser(text)),\n onAudioRecorded: (blob: Blob) => dispatch(sendAudioMessageFromUser(blob)),\n onActionFromUser: (action: AnyAction) => dispatch(action),\n onQuickReplyClick: (reply: any) => dispatch(handleQuickReplyClick(reply)),\n onNluEvent: (event: string) => dispatch(requestNLUEvent(event)),\n onButtonClick: (button: any) => dispatch(handleButtonClick(button)),\n onLinkClick: (url: any) => dispatch(handleLinkClick(url)),\n onShowMore: () => dispatch(showMore()),\n onUploadFile: (filename: string, blob: Blob, payload: any) =>\n dispatch(sendUploadFileFromUser(filename, blob, payload)),\n };\n};\n\nconst wrappedComponent = reduxConnect(mapStateToProps, bindAction)(Chat);\nexport default wrappedComponent;\n","import { AnyAction } from 'redux';\nimport * as ConnectionActions from '../actions/connectionActions';\nimport { ConnectionState, ConnectionStateEnum } from '../types';\n\nconst backendConnectionReducer = (state = initialState, action: AnyAction): ConnectionState => {\n switch (action.type) {\n case ConnectionActions.CONNECT:\n return Object.assign({}, state, {\n sessionId: action.sessionId,\n userId: action.userId,\n });\n\n case ConnectionActions.CONNECTING:\n console.log('BackendConnectionReducer: connecting ...');\n return Object.assign({}, state, {\n connectionState: ConnectionStateEnum.CONNECTING,\n });\n\n case ConnectionActions.CONNECTED:\n console.log('BackendConnectionReducer: connected');\n return Object.assign({}, state, {\n connectionState: ConnectionStateEnum.CONNECTED,\n });\n\n case ConnectionActions.DISCONNECTED:\n console.log('BackendConnectionReducer: disconnected');\n return Object.assign({}, state, {\n connectionState: ConnectionStateEnum.DISCONNECTED,\n });\n\n case ConnectionActions.RECONNECTED:\n console.log('BackendConnectionReducer: reconnected');\n return Object.assign({}, state, {\n connectionState: ConnectionStateEnum.RECONNECTED,\n });\n\n case ConnectionActions.RESTORE_SESSION_ID:\n return Object.assign({}, state, {\n sessionId: action.sessionId,\n });\n\n default:\n return state;\n }\n};\n\nconst initialState: ConnectionState = {\n connectionState: ConnectionStateEnum.DISCONNECTED,\n sessionId: undefined,\n userId: undefined,\n};\n\nexport default backendConnectionReducer;\n","import { ActionTypes, GuestUser, Message, TextMessage } from '@botfabrik/engine-domain';\nimport { AnyAction } from 'redux';\nimport * as ClientActions from '../actions';\nimport { ChatState } from '../types';\n\ninterface MessageWithId extends Message {\n _id: string;\n}\n\nconst chatReducer = (state = initialState, action: AnyAction) => {\n switch (action.type) {\n case ActionTypes.TYPING_ON:\n return Object.assign({}, state, {\n isBotTyping: true,\n });\n\n case ActionTypes.TYPING_OFF:\n return Object.assign({}, state, {\n isBotTyping: false,\n });\n\n case ActionTypes.MESSAGE_FROM_GUEST:\n case ActionTypes.MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST:\n return appendMessageFromGuestToState(state, action.message);\n\n case ActionTypes.MESSAGE_TO_GUEST:\n console.log('nessage to guest');\n console.log(action);\n // Informiere das Top Window (z.B. unser Wordpress-Blog) über das eintreffen einer neuen Nachricht\n sendToParentPage(action);\n\n // id hinzufügen, damit wir nicht zweimal die selbe meldung im state haben\n const message: MessageWithId = Object.assign({}, action.message, { _id: action.meta.actionId });\n const alreadyAdded = state.messages.filter((m: any) => m._id === action.meta.actionId).length > 0;\n\n return Object.assign({}, state, {\n messages: alreadyAdded ? state.messages : state.messages.concat([message]),\n quickReplies: message.quickReplies ? message.quickReplies : [],\n uploadRequest: message.uploadRequest ? message.uploadRequest : {},\n });\n\n case ClientActions.RESTORE_PREVIOUS_CHAT_MESSAGES:\n const messages = action.messages;\n if (messages.length > 0) {\n const lastMessage = messages[messages.length - 1];\n return Object.assign({}, initialState, {\n messages,\n quickReplies: lastMessage.quickReplies ? lastMessage.quickReplies : [],\n uploadRequest: lastMessage.uploadRequest ? lastMessage.uploadRequest : {},\n });\n } else {\n return initialState;\n }\n\n case ActionTypes.FILE_FROM_GUEST:\n const uploadRequest = Object.assign({}, state.uploadRequest, { uploadState: 'uploading' });\n return Object.assign({}, state, { uploadRequest });\n\n case ClientActions.MESSAGE_TO_PARENT_PAGE:\n sendToParentPage(action.message);\n return state;\n\n case ActionTypes.EVENT_TO_GUEST:\n sendToParentPage(action.event);\n return state;\n\n case ClientActions.EXPAND_WINDOW:\n sendToParentPage(action);\n return state;\n\n case ClientActions.ENABLE_SPEECH_SUPPORT:\n return Object.assign({}, state, { speechSupport: true });\n\n case ClientActions.RECEIVE_SPEECH_TRANSCRIPTION:\n const msg = new TextMessage(action.transcription, new GuestUser());\n return appendMessageFromGuestToState(state, msg);\n\n default:\n return state;\n }\n};\n\nconst appendMessageFromGuestToState = (state: ChatState, message: Message) => {\n return Object.assign({}, state, {\n messages: state.messages.concat([message]),\n quickReplies: [],\n });\n};\n\nconst sendToParentPage = (action: any) => {\n if (isIframe()) {\n window.top.postMessage(action, '*');\n } else if (action.type === 'webclient.change.url') {\n window.open(action.url);\n }\n};\n\nconst isIframe = () => typeof window !== 'undefined' && window.self !== window.top;\n\nconst initialState: ChatState = {\n messages: [],\n quickReplies: [],\n isBotTyping: false,\n speechSupport: false,\n};\n\nexport default chatReducer;\n","import { localizeReducer } from 'react-localize-redux';\nimport { combineReducers } from 'redux';\nimport backendConnectionReducer from './backendConnectionReducer';\nimport chatReducer from './chatReducer';\n\nconst rootReducer = combineReducers({\n chat: chatReducer,\n connection: backendConnectionReducer,\n locale: localizeReducer,\n});\n\nexport default rootReducer;\n","import { RootState } from '../types';\n\nconst LOCAL_STORAGE_LAST_SAVED_ITEM_NAME = 'bf-webclient-state-last-saved-at';\nconst LOCAL_STORAGE_STATE_ITEM_NAME = 'bf-webclient-state';\n\nexport const loadState = () => {\n try {\n if (typeof localStorage === 'undefined') {\n return undefined;\n }\n\n // get last save time\n const lastSavedAt = localStorage.getItem(LOCAL_STORAGE_LAST_SAVED_ITEM_NAME);\n if (isExpired(lastSavedAt)) {\n return undefined;\n } else {\n // load persisted state\n const serializedState = localStorage.getItem(LOCAL_STORAGE_STATE_ITEM_NAME);\n if (serializedState === null) {\n return undefined;\n }\n return JSON.parse(serializedState);\n }\n } catch (err) {\n console.error(err);\n return undefined;\n }\n};\n\nexport const saveState = (state: Partial<RootState>) => {\n try {\n // save state\n const serializedState = JSON.stringify(state);\n localStorage.setItem(LOCAL_STORAGE_STATE_ITEM_NAME, serializedState);\n\n // save current date\n let now = new Date().toISOString();\n localStorage.setItem(LOCAL_STORAGE_LAST_SAVED_ITEM_NAME, now);\n } catch (err) {\n // ignorieren\n console.error(err);\n }\n};\n\nconst isExpired = (lastSavedAt: string | null): boolean => {\n if (lastSavedAt === null) {\n return false;\n }\n let expiresAt = new Date(lastSavedAt);\n expiresAt.setHours(expiresAt.getHours() + 12);\n\n let now = new Date();\n\n return now > expiresAt;\n};\n","import { ActionTypes } from '@botfabrik/engine-domain';\nimport { setActiveLanguage } from 'react-localize-redux';\nimport { AnyAction, Dispatch, Middleware, MiddlewareAPI } from 'redux';\nimport io from 'socket.io-client';\nimport * as ChatActions from '../actions';\nimport * as ClientActions from '../actions';\nimport * as ConnectionActions from '../actions/connectionActions';\n\n// Blacklisted actions are not forwarded to the server\nconst blacklist = [\n ConnectionActions.CONNECT,\n ConnectionActions.CONNECTING,\n ConnectionActions.CONNECTED,\n ConnectionActions.DISCONNECTED,\n ConnectionActions.RECONNECTED,\n ConnectionActions.RESTORE_SESSION_ID,\n ActionTypes.MESSAGE_TO_GUEST,\n ActionTypes.EVENT_TO_GUEST,\n ActionTypes.TYPING_ON,\n ActionTypes.TYPING_OFF,\n ChatActions.RESTORE_PREVIOUS_CHAT_MESSAGES,\n '@@localize/SET_ACTIVE_LANGUAGE',\n];\n\nconst socketMiddleware: Middleware = ({ dispatch }: MiddlewareAPI) => (next: Dispatch<AnyAction>) => {\n let socket: SocketIOClient.Socket | null = null;\n\n return (action: AnyAction) => {\n let result = next(action);\n\n if (action.type === ConnectionActions.CONNECT) {\n if (socket != null) {\n socket.disconnect();\n }\n dispatch(ConnectionActions.connecting());\n\n socket = io('/bf-webclient?' + action.querystrings);\n\n socket.on('action', dispatch);\n socket.on('connect', () => dispatch(ConnectionActions.connected()));\n socket.on('disconnect', () => dispatch(ConnectionActions.disconnected()));\n socket.on('reconnect', () => dispatch(ConnectionActions.reconnected()));\n socket.on('set-active-language', (language: string) => dispatch(setActiveLanguage(language)));\n socket.on('enable-speech-support', () => dispatch(ChatActions.enableSpeechSupport()));\n socket.on('speech-transcription', (transcription: string) =>\n dispatch(ChatActions.receiveSpeechTranscription(transcription))\n );\n socket.on('restore-client-state', (state: any) => {\n socket!.io.uri = socket!.io.uri.replace(action.sessionId, state.sessionId);\n dispatch(ConnectionActions.restoreSessionId(state.sessionId));\n dispatch(ChatActions.restorePreviousChatMessages(state.messages));\n });\n socket.on('file-uploaded', () => console.log('webclient socket middle ware: file-uploaded'));\n socket.on('expand-window', () => dispatch({ type: ClientActions.EXPAND_WINDOW }));\n } else if (action.type === ChatActions.GET_STARTED) {\n socket?.emit('get-started', JSON.stringify(action));\n } else if (action.type === ActionTypes.FILE_FROM_GUEST) {\n socket?.emit('file-from-guest', JSON.stringify(action));\n } else if (action.type === ChatActions.AUDIO_MESSAGE_FROM_USER) {\n socket?.emit('audio-message', action.buffer);\n } else if (blacklist.indexOf(action.type) === -1) {\n // Foreward all other actions to the server\n if (socket) {\n socket.emit('action', JSON.stringify(action));\n } else {\n // TODO: wenn socket undefined ist, diese sammeln und später abarbeiten\n }\n }\n\n return result;\n };\n};\n\nexport default socketMiddleware;\n","import configureStore from './configureStore';\n\nconst store = configureStore();\n\nexport default store;\n","import throttle from 'lodash/throttle';\nimport { applyMiddleware, compose, createStore } from 'redux';\nimport thunk from 'redux-thunk';\nimport reducer from '../reducers';\nimport { loadState, saveState } from './localStorage';\nimport socketMiddleware from './socketMiddleware';\n\nconst configureStore = () => {\n const persistedState = loadState();\n const store = compose(applyMiddleware(thunk, socketMiddleware))(createStore)(reducer, persistedState);\n\n store.subscribe(\n throttle(() => {\n let state = store.getState();\n saveState({\n connection: state.connection,\n });\n }, 1000)\n );\n\n return store;\n};\n\nexport default configureStore;\n","import { addTranslationForLanguage, initialize } from 'react-localize-redux';\nimport { Dispatch, AnyAction } from 'redux';\n\nexport default (dispatch: Dispatch<AnyAction>) => {\n const languages = ['de', 'en', 'fr', 'it'];\n dispatch(initialize({ languages, options: { defaultLanguage: 'de', renderToStaticMarkup: false } }));\n\n languages.forEach((language) => {\n const json = require(`./${language}.json`);\n dispatch(addTranslationForLanguage(json, language));\n });\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport styles from './Client.module.scss';\nimport Chat from './components/Chat';\nimport initTranslations from './locales/initialize';\nimport store from './store';\n\ninitTranslations(store.dispatch);\n\nReactDOM.render(\n <Provider store={store}>\n <div className={styles.chatPage}>\n <Chat />\n </div>\n </Provider>,\n document.getElementById('root')\n);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputWrapper\":\"TextInput_inputWrapper__3g5RY\",\"messageInputWrapper\":\"TextInput_messageInputWrapper__3kX2Z\",\"messageInput\":\"TextInput_messageInput__1wtyj\",\"sendMessage\":\"TextInput_sendMessage__1PytH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"upload\":\"Upload_upload__115Jj\",\"upload__button\":\"Upload_upload__button__38-Um\",\"uploading\":\"Upload_uploading__3ox9F\",\"MoveUpDown\":\"Upload_MoveUpDown__127MH\"};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringRepresentationFromMessage = exports.MessageTypeEnum = exports.AudioMessage = exports.UploadFileMessage = exports.FileMessage = exports.ImageMessage = exports.VideoMessage = exports.MarkdownMessage = exports.DetailMessage = exports.TextMessage = exports.UploadStateEnum = exports.Message = void 0;\nclass Message {\n constructor(type, sender) {\n this.type = type;\n this.sender = sender;\n this.quickReplies = [];\n }\n addQuickReply(label, payload) {\n this.quickReplies.push({ label, payload });\n }\n requestUpload(label, payload) {\n this.uploadRequest = { label, payload, uploadState: UploadStateEnum.PENDING };\n }\n}\nexports.Message = Message;\nvar UploadStateEnum;\n(function (UploadStateEnum) {\n UploadStateEnum[\"PENDING\"] = \"pending\";\n UploadStateEnum[\"UPLOADING\"] = \"uploading\";\n UploadStateEnum[\"FAILED\"] = \"failed\";\n UploadStateEnum[\"FULFILLED\"] = \"fulfilled\";\n})(UploadStateEnum = exports.UploadStateEnum || (exports.UploadStateEnum = {}));\nclass TextMessage extends Message {\n constructor(text, sender) {\n super(MessageTypeEnum.TEXT, sender);\n this.text = text;\n }\n}\nexports.TextMessage = TextMessage;\nclass DetailMessage extends Message {\n constructor(title, sender) {\n super(MessageTypeEnum.DETAIL, sender);\n this.title = title;\n this.subtitle = '';\n this.imageUrl = '';\n this.itemUrl = '';\n this.buttons = [];\n }\n setImageUrl(imageUrl) {\n this.imageUrl = imageUrl;\n }\n setItemUrl(itemUrl) {\n this.itemUrl = itemUrl;\n }\n setSubtitle(subtitle) {\n this.subtitle = subtitle;\n }\n addButton(button) {\n this.buttons.push(button);\n }\n}\nexports.DetailMessage = DetailMessage;\nclass MarkdownMessage extends Message {\n constructor(markdown, excerpt, sender) {\n super(MessageTypeEnum.MARKDOWN, sender);\n this.markdown = markdown;\n this.excerpt = excerpt;\n this.className = '';\n }\n setClassName(name) {\n this.className = name;\n }\n}\nexports.MarkdownMessage = MarkdownMessage;\nclass VideoMessage extends Message {\n constructor(url, sender) {\n super(MessageTypeEnum.VIDEO, sender);\n this.url = url;\n }\n}\nexports.VideoMessage = VideoMessage;\nclass ImageMessage extends Message {\n constructor(url, sender) {\n super(MessageTypeEnum.IMAGE, sender);\n this.url = url;\n }\n}\nexports.ImageMessage = ImageMessage;\nclass FileMessage extends Message {\n constructor(url, sender) {\n super(MessageTypeEnum.FILE, sender);\n this.url = url;\n }\n}\nexports.FileMessage = FileMessage;\nclass UploadFileMessage extends Message {\n constructor(filename, blob, payload, sender) {\n super(MessageTypeEnum.FILE, sender);\n this.filename = filename;\n this.blob = blob;\n this.payload = payload;\n }\n}\nexports.UploadFileMessage = UploadFileMessage;\nclass AudioMessage extends Message {\n constructor(url, sender) {\n super(MessageTypeEnum.AUDIO, sender);\n this.url = url;\n }\n}\nexports.AudioMessage = AudioMessage;\nvar MessageTypeEnum;\n(function (MessageTypeEnum) {\n MessageTypeEnum[\"TEXT\"] = \"TEXT\";\n MessageTypeEnum[\"DETAIL\"] = \"DETAIL\";\n MessageTypeEnum[\"MARKDOWN\"] = \"MARKDOWN\";\n MessageTypeEnum[\"VIDEO\"] = \"VIDEO\";\n MessageTypeEnum[\"IMAGE\"] = \"IMAGE\";\n MessageTypeEnum[\"FILE\"] = \"FILE\";\n MessageTypeEnum[\"AUDIO\"] = \"AUDIO\";\n})(MessageTypeEnum = exports.MessageTypeEnum || (exports.MessageTypeEnum = {}));\nexports.getStringRepresentationFromMessage = (message) => {\n switch (message.type) {\n case MessageTypeEnum.TEXT:\n const textMessage = message;\n return textMessage.text;\n case MessageTypeEnum.DETAIL:\n const detailMessage = message;\n return `${detailMessage.title} // ${detailMessage.subtitle}`;\n case MessageTypeEnum.MARKDOWN:\n const markdownMessage = message;\n return markdownMessage.excerpt;\n case MessageTypeEnum.VIDEO:\n const videoMessage = message;\n return `Video Url: ${videoMessage.url}`;\n case MessageTypeEnum.IMAGE:\n const imageMessage = message;\n return `Image Url: ${imageMessage.url}`;\n case MessageTypeEnum.FILE:\n const fileMessage = message;\n return `File Url: ${fileMessage.url}`;\n case MessageTypeEnum.AUDIO:\n const audioMessage = message;\n return `Audio Url: ${audioMessage.url}`;\n default:\n throw new Error('Unknown message type ' + message.type);\n }\n};\n//# sourceMappingURL=message.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserType = exports.PersonUser = exports.GuestUser = exports.BotUser = exports.User = void 0;\nclass User {\n constructor(type, name, avatar) {\n this.type = type;\n this.name = name;\n this.avatar = avatar;\n }\n}\nexports.User = User;\nclass BotUser extends User {\n constructor() {\n super(UserType.BOT, 'Chatbot', 'bot.svg');\n }\n}\nexports.BotUser = BotUser;\nclass GuestUser extends User {\n constructor() {\n super(UserType.GUEST, 'Guest', 'visitor.svg');\n }\n}\nexports.GuestUser = GuestUser;\nclass PersonUser extends User {\n constructor(name, avatar) {\n super(UserType.PERSON, name, avatar);\n }\n}\nexports.PersonUser = PersonUser;\nvar UserType;\n(function (UserType) {\n UserType[\"GUEST\"] = \"GUEST\";\n UserType[\"BOT\"] = \"BOT\";\n UserType[\"PERSON\"] = \"PERSON\";\n})(UserType = exports.UserType || (exports.UserType = {}));\n//# sourceMappingURL=user.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"messageBot\":\"Message_messageBot__1UGxS\",\"messageUser\":\"Message_messageUser__3kL5s\",\"avatar\":\"Message_avatar__3lDSz\",\"textWrapper\":\"Message_textWrapper__2QTuM\",\"text\":\"Message_text__3bVsr\",\"leftTextWrapper\":\"Message_leftTextWrapper__T6JdA\",\"leftText\":\"Message_leftText__3KRO6\",\"rightTextWrapper\":\"Message_rightTextWrapper__3N8Sq\",\"rightText\":\"Message_rightText__1PbWT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"Global_button__33oEy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"DetailMessage_image__1zbE4\",\"image_container\":\"DetailMessage_image_container__30r15\",\"play_button\":\"DetailMessage_play_button__2Hboo\",\"title\":\"DetailMessage_title__A_inP\",\"subtitle\":\"DetailMessage_subtitle__1ND_J\",\"button\":\"DetailMessage_button__3wrCB\",\"video_container\":\"DetailMessage_video_container__29xT4\",\"video\":\"DetailMessage_video__2ChW3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"messageContainer\":\"MessageContainer_messageContainer__1JbXm\",\"messages\":\"MessageContainer_messages__1EfQ1\"};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INBOX_CONNECT_REQUEST = exports.EVENT_TO_GUEST = exports.FILE_FROM_GUEST = exports.NLU_REQUEST_EVENT = exports.EXPERTS_DISCONNECTED = exports.EXPERTS_DISCONNECT_REQUEST = exports.EXPERTS_CONNECTED = exports.EXPERTS_CONNECT_REQUEST = exports.MESSAGE_TO_GUEST = exports.MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST = exports.MESSAGE_FROM_GUEST = exports.GUEST_FEEDBACK_RESPONSE = exports.GUEST_DISCONNECTED = exports.GUEST_CONNECTED = exports.TYPING_OFF = exports.TYPING_ON = void 0;\nexports.TYPING_ON = 'core.typing.on';\nexports.TYPING_OFF = 'core.typing.off';\nexports.GUEST_CONNECTED = 'core.guest.connected';\nexports.GUEST_DISCONNECTED = 'core.guest.disconnected';\nexports.GUEST_FEEDBACK_RESPONSE = 'core.guest.feedback.response';\nexports.MESSAGE_FROM_GUEST = 'core.message.from.guest';\nexports.MESSAGE_WITHOUT_ANALYSIS_FROM_GUEST = 'core.message.without.analysis.from.guest';\nexports.MESSAGE_TO_GUEST = 'core.message.to.guest';\nexports.EXPERTS_CONNECT_REQUEST = 'core.experts.connect.request';\nexports.EXPERTS_CONNECTED = 'core.experts.connected';\nexports.EXPERTS_DISCONNECT_REQUEST = 'core.experts.disconnect.request';\nexports.EXPERTS_DISCONNECTED = 'core.experts.disconnected';\nexports.NLU_REQUEST_EVENT = 'core.nlu.request.event';\nexports.FILE_FROM_GUEST = 'core.file.from.guest';\nexports.EVENT_TO_GUEST = 'core.event.to.guest';\nexports.INBOX_CONNECT_REQUEST = 'core.inbox.connect.request';\n//# sourceMappingURL=actionTypes.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"chatPage\":\"Client_chatPage__126Ne\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"chatwindow\":\"Chat_chatwindow__2gTsn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputContainer\":\"InputContainer_inputContainer__2LEmG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"text\":\"Text_text__2JaXU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"markdownMessage\":\"MarkdownMessage_markdownMessage__hSbUt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"typingIndicator\":\"TypingIndicator_typingIndicator__2vRCR\",\"blink\":\"TypingIndicator_blink__3wJ7S\"};"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ !function(e){function t(t){for(var n,l,i=t[0],f=t[1],a=t[2],p=0,s=[];p<i.length;p++)l=i[p],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(c&&c(t);s.length;)s.shift()();return u.push.apply(u,a||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,i=1;i<r.length;i++){var f=r[i];0!==o[f]&&(n=!1)}n&&(u.splice(t--,1),e=l(l.s=r[0]))}return e}var n={},o={1:0},u=[];function l(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=n,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)l.d(r,n,function(t){return e[t]}.bind(null,n));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="./";var i=this.webpackJsonpclient=this.webpackJsonpclient||[],f=i.push.bind(i);i.push=t,i=i.slice();for(var a=0;a<i.length;a++)t(i[a]);var c=f;r()}([]);
2
+ //# sourceMappingURL=runtime-main.f63e6028.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","this","oldJsonpFunction","slice"],"mappings":"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","file":"static/js/runtime-main.f63e6028.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \tvar jsonpArray = this[\"webpackJsonpclient\"] = this[\"webpackJsonpclient\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
Binary file
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 201 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g id="Visitor"><path d="M98.49,0.982c55.283,0 101.115,44.433 102.284,99.162c1.17,54.73 -42.764,99.163 -98.047,99.163c-55.283,0 -101.115,-44.433 -102.284,-99.163c-1.17,-54.729 42.764,-99.162 98.047,-99.162Z" style="fill:#dbdbdb;"/><clipPath id="_clip1"><path d="M98.49,0.982c55.283,0 101.115,44.433 102.284,99.162c1.17,54.73 -42.764,99.163 -98.047,99.163c-55.283,0 -101.115,-44.433 -102.284,-99.163c-1.17,-54.729 42.764,-99.162 98.047,-99.162Z"/></clipPath><g clip-path="url(#_clip1)"><path d="M146.494,295.505c16.762,-22.68 28.719,-52.539 33.692,-84.138c4.704,-29.893 2.87,-59.516 -5.202,-84.008l-139.228,2.897c-10.516,19.397 -17.982,41.858 -21.641,65.106c-6.036,38.353 -1.253,75.819 13.103,102.625l119.276,-2.482Z" style="fill:#b8b8b8;"/><path d="M147.529,296.921l-0.227,0.141l-0.246,0.104l-0.259,0.067l-0.267,0.025l-2.477,0.063l-63.789,1.592l-53,1.313l-0.351,-0.02l-0.345,-0.074l-0.329,-0.127l-0.305,-0.177l-0.273,-0.223l-0.235,-0.263l-0.192,-0.297l0,0l-0.17,-0.318l-0.172,-0.322l-0.171,-0.322l-0.17,-0.324l-0.169,-0.325l-0.168,-0.325l-0.168,-0.327l-0.166,-0.327l-0.165,-0.329l-0.165,-0.329l-0.164,-0.331l-0.162,-0.331l-0.162,-0.332l-0.161,-0.333l-0.16,-0.334l-0.159,-0.335l-0.158,-0.336l-0.158,-0.337l-0.156,-0.337l-0.155,-0.339l-0.155,-0.34l-0.153,-0.34l-0.153,-0.341l-0.152,-0.342l-0.151,-0.343l-0.15,-0.344l-0.149,-0.345l-0.148,-0.346l-0.147,-0.346l-0.147,-0.348l-0.145,-0.348l-0.144,-0.349l-0.144,-0.35l-0.143,-0.351l-0.141,-0.352l-0.141,-0.353l-0.14,-0.353l-0.139,-0.354l-0.138,-0.355l-0.137,-0.356l-0.137,-0.357l-0.135,-0.358l-0.134,-0.358l-0.134,-0.359l-0.132,-0.361l-0.132,-0.36l-0.131,-0.362l-0.13,-0.363l-0.128,-0.363l-0.128,-0.364l-0.127,-0.365l-0.127,-0.366l-0.125,-0.366l-0.124,-0.367l-0.123,-0.368l-0.123,-0.369l-0.121,-0.37l-0.121,-0.37l-0.12,-0.371l-0.118,-0.372l-0.118,-0.373l-0.117,-0.373l-0.116,-0.374l-0.115,-0.375l-0.114,-0.376l-0.114,-0.376l-0.112,-0.377l-0.111,-0.378l-0.111,-0.379l-0.109,-0.379l-0.109,-0.38l-0.108,-0.381l-0.106,-0.382l-0.106,-0.382l-0.105,-0.383l-0.104,-0.383l-0.103,-0.385l-0.102,-0.385l-0.101,-0.386l-0.101,-0.386l-0.099,-0.387l-0.098,-0.388l-0.098,-0.389l-0.096,-0.389l-0.096,-0.39l-0.095,-0.39l-0.093,-0.391l-0.093,-0.392l-0.092,-0.393l-0.091,-0.393l-0.09,-0.394l-0.089,-0.395l-0.088,-0.395l-0.088,-0.395l-0.086,-0.397l-0.085,-0.397l-0.085,-0.398l-0.083,-0.398l-0.083,-0.399l-0.081,-0.4l-0.081,-0.4l-0.08,-0.401l-0.078,-0.401l-0.078,-0.403l-0.077,-0.402l-0.076,-0.404l-0.075,-0.403l-0.074,-0.405l-0.074,-0.405l-0.072,-0.406l-0.071,-0.406l-0.07,-0.407l-0.07,-0.407l-0.068,-0.408l-0.068,-0.409l-0.066,-0.409l-0.066,-0.41l-0.065,-0.41l-0.064,-0.411l-0.062,-0.412l-0.062,-0.412l-0.061,-0.412l-0.06,-0.413l-0.059,-0.414l-0.058,-0.414l-0.058,-0.415l-0.056,-0.415l-0.055,-0.416l-0.054,-0.416l-0.054,-0.417l-0.052,-0.417l-0.052,-0.418l-0.05,-0.418l-0.05,-0.419l-0.048,-0.42l-0.048,-0.42l-0.047,-0.42l-0.046,-0.421l-0.044,-0.421l-0.044,-0.422l-0.043,-0.422l-0.042,-0.423l-0.041,-0.424l-0.04,-0.423l-0.04,-0.425l-0.038,-0.424l-0.037,-0.426l-0.036,-0.425l-0.035,-0.426l-0.035,-0.427l-0.033,-0.427l-0.033,-0.427l-0.031,-0.428l-0.031,-0.429l-0.029,-0.428l-0.029,-0.43l-0.028,-0.429l-0.026,-0.43l-0.026,-0.431l-0.025,-0.431l-0.024,-0.431l-0.023,-0.432l-0.021,-0.432l-0.021,-0.433l-0.02,-0.433l-0.019,-0.433l-0.019,-0.434l-0.017,-0.434l-0.016,-0.434l-0.015,-0.435l-0.014,-0.436l-0.013,-0.435l-0.013,-0.436l-0.011,-0.437l-0.01,-0.437l-0.01,-0.437l-0.008,-0.437l-0.008,-0.438l-0.006,-0.439l-0.006,-0.438l-0.004,-0.439l-0.004,-0.439l-0.002,-0.44l-0.002,-0.44l-0.001,-0.44l0,-0.441l0.002,-0.441l0.002,-0.441l0.003,-0.442l0.004,-0.442l0.005,-0.442l0.007,-0.443l0.007,-0.443l0.008,-0.443l0.009,-0.443l0.01,-0.444l0.011,-0.444l0.012,-0.444l0.013,-0.445l0.014,-0.445l0.014,-0.445l0.016,-0.446l0.017,-0.445l0.018,-0.446l0.019,-0.447l0.02,-0.446l0.02,-0.447l0.022,-0.447l0.023,-0.447l0.023,-0.448l0.025,-0.448l0.026,-0.448l0.026,-0.448l0.028,-0.449l0.029,-0.448l0.029,-0.449l0.031,-0.45l0.031,-0.449l0.033,-0.45l0.033,-0.45l0.035,-0.45l0.035,-0.45l0.037,-0.45l0.037,-0.451l0.039,-0.451l0.039,-0.451l0.041,-0.451l0.041,-0.452l0.043,-0.451l0.043,-0.452l0.044,-0.452l0.046,-0.452l0.046,-0.453l0.047,-0.452l0.049,-0.453l0.049,-0.453l0.051,-0.453l0.007,-0.067l0.044,-0.386l0.052,-0.453l0.054,-0.454l0.054,-0.453l0.056,-0.454l0.056,-0.454l0.058,-0.454l0.058,-0.454l0.06,-0.454l0.06,-0.454l0.061,-0.455l0.063,-0.454l0.063,-0.455l0.065,-0.455l0.065,-0.455l0.067,-0.455l0.067,-0.455l0.068,-0.455l0.07,-0.455l0.085,-0.552l0.087,-0.551l0.089,-0.552l0.089,-0.551l0.091,-0.55l0.093,-0.551l0.094,-0.55l0.095,-0.549l0.097,-0.55l0.098,-0.549l0.1,-0.548l0.1,-0.549l0.103,-0.548l0.103,-0.547l0.105,-0.547l0.107,-0.547l0.108,-0.547l0.109,-0.546l0.11,-0.545l0.112,-0.545l0.114,-0.545l0.114,-0.545l0.116,-0.544l0.118,-0.543l0.119,-0.543l0.12,-0.543l0.121,-0.542l0.123,-0.542l0.124,-0.541l0.126,-0.541l0.127,-0.54l0.128,-0.54l0.13,-0.54l0.13,-0.538l0.133,-0.539l0.133,-0.538l0.135,-0.537l0.137,-0.537l0.137,-0.536l0.139,-0.536l0.141,-0.535l0.141,-0.535l0.143,-0.534l0.144,-0.533l0.146,-0.533l0.147,-0.533l0.148,-0.532l0.15,-0.531l0.15,-0.531l0.153,-0.53l0.153,-0.529l0.155,-0.529l0.156,-0.528l0.157,-0.528l0.159,-0.527l0.16,-0.526l0.161,-0.526l0.163,-0.525l0.164,-0.524l0.165,-0.524l0.166,-0.523l0.168,-0.522l0.169,-0.522l0.17,-0.521l0.172,-0.521l0.173,-0.519l0.174,-0.519l0.175,-0.518l0.177,-0.518l0.178,-0.517l0.179,-0.516l0.181,-0.515l0.181,-0.514l0.183,-0.514l0.185,-0.513l0.185,-0.512l0.187,-0.512l0.188,-0.511l0.189,-0.51l0.191,-0.509l0.192,-0.508l0.193,-0.508l0.194,-0.506l0.195,-0.506l0.197,-0.505l0.198,-0.505l0.199,-0.503l0.201,-0.503l0.202,-0.501l0.203,-0.501l0.204,-0.5l0.205,-0.499l0.207,-0.499l0.208,-0.497l0.209,-0.497l0.21,-0.495l0.211,-0.495l0.213,-0.494l0.214,-0.493l0.215,-0.492l0.217,-0.491l0.217,-0.49l0.219,-0.489l0.22,-0.488l0.221,-0.487l0.222,-0.487l0.224,-0.485l0.225,-0.484l0.226,-0.484l0.227,-0.482l0.228,-0.482l0.23,-0.48l0.23,-0.48l0.232,-0.478l0.233,-0.478l0.235,-0.476l0.235,-0.475l0.237,-0.475l0.237,-0.473l0.239,-0.472l0.241,-0.471l0.241,-0.47l0.242,-0.47l0.244,-0.468l0.245,-0.466l0.246,-0.466l0.247,-0.465l0.246,-0.46l0.238,-0.37l-0.001,-0.001l0.291,-0.332l0.336,-0.284l0.376,-0.231l0.407,-0.172l0.427,-0.108l0.44,-0.044l7.522,-0.184l85.931,-2.07l45.766,-1.077l0.535,0.031l0.524,0.115l0.5,0.197l0.461,0.274l0.413,0.344l0.353,0.405l0.284,0.456l0.208,0.496l0,0l0.192,0.582l0.192,0.59l0.189,0.593l0.188,0.595l0.185,0.596l0.182,0.598l0.181,0.6l0.178,0.601l0.175,0.604l0.173,0.605l0.171,0.606l0.168,0.609l0.166,0.61l0.164,0.612l0.161,0.613l0.159,0.615l0.157,0.617l0.154,0.618l0.152,0.62l0.15,0.622l0.147,0.623l0.144,0.624l0.143,0.626l0.14,0.628l0.137,0.629l0.136,0.631l0.133,0.632l0.13,0.634l0.128,0.635l0.126,0.636l0.124,0.638l0.121,0.64l0.118,0.641l0.117,0.642l0.114,0.644l0.111,0.644l0.109,0.647l0.107,0.647l0.105,0.649l0.003,0.022l0.098,0.629l0.1,0.651l0.096,0.653l0.095,0.655l0.092,0.655l0.09,0.657l0.087,0.658l0.085,0.659l0.082,0.66l0.081,0.662l0.078,0.662l0.075,0.664l0.073,0.665l0.071,0.666l0.068,0.668l0.066,0.668l0.064,0.67l0.061,0.67l0.058,0.672l0.057,0.672l0.054,0.674l0.052,0.675l0.049,0.675l0.047,0.677l0.044,0.678l0.042,0.679l0.04,0.679l0.037,0.681l0.035,0.681l0.033,0.683l0.03,0.683l0.028,0.684l0.025,0.685l0.023,0.686l0.021,0.687l0.018,0.688l0.016,0.688l0.014,0.689l0.011,0.69l0.008,0.691l0.007,0.692l0.003,0.692l0.002,0.693l0,0.024l-0.002,0.67l-0.004,0.694l-0.006,0.696l-0.009,0.696l-0.011,0.696l-0.014,0.697l-0.016,0.698l-0.018,0.699l-0.021,0.699l-0.023,0.699l-0.026,0.701l-0.028,0.7l-0.03,0.702l-0.033,0.702l-0.036,0.702l-0.037,0.703l-0.04,0.704l-0.043,0.704l-0.045,0.704l-0.047,0.705l-0.05,0.706l-0.052,0.705l-0.054,0.707l-0.057,0.706l-0.06,0.707l-0.061,0.708l-0.065,0.708l-0.066,0.708l-0.069,0.708l-0.072,0.709l-0.074,0.709l-0.076,0.71l-0.034,0.31l-0.046,0.399l-0.083,0.71l-0.085,0.71l-0.088,0.71l-0.09,0.711l-0.093,0.71l-0.095,0.711l-0.098,0.711l-0.1,0.711l-0.103,0.712l-0.105,0.711l-0.107,0.712l-0.11,0.712l-0.087,0.553l-0.026,0.159l-0.123,0.751l-0.127,0.751l-0.129,0.75l-0.132,0.75l-0.134,0.749l-0.136,0.748l-0.14,0.747l-0.142,0.747l-0.144,0.745l-0.147,0.745l-0.149,0.744l-0.152,0.744l-0.026,0.125l-0.132,0.616l-0.16,0.741l-0.163,0.74l-0.166,0.739l-0.168,0.738l-0.17,0.737l-0.173,0.736l-0.176,0.735l-0.177,0.734l-0.181,0.732l-0.183,0.732l-0.185,0.731l-0.187,0.73l-0.19,0.729l-0.193,0.727l-0.195,0.727l-0.197,0.725l-0.2,0.724l-0.202,0.723l-0.204,0.722l-0.207,0.721l-0.209,0.72l-0.212,0.718l-0.214,0.717l-0.047,0.156l-0.173,0.558l-0.225,0.713l-0.226,0.712l-0.229,0.71l-0.231,0.709l-0.233,0.707l-0.236,0.706l-0.238,0.705l-0.24,0.703l-0.243,0.702l-0.245,0.701l-0.247,0.699l-0.249,0.697l-0.252,0.696l-0.254,0.695l-0.256,0.693l-0.258,0.691l-0.261,0.69l-0.263,0.689l-0.265,0.687l-0.267,0.685l-0.269,0.683l-0.272,0.682l-0.274,0.681l-0.276,0.679l-0.278,0.677l-0.28,0.675l-0.283,0.674l-0.284,0.672l-0.287,0.67l-0.289,0.668l-0.291,0.667l-0.293,0.665l-0.296,0.663l-0.297,0.662l-0.3,0.659l-0.301,0.658l-0.304,0.656l-0.306,0.654l-0.308,0.652l-0.31,0.65l-0.312,0.649l-0.314,0.646l-0.196,0.401l-0.122,0.242l-0.323,0.64l-0.326,0.638l-0.327,0.636l-0.33,0.634l-0.331,0.632l-0.334,0.63l-0.335,0.628l-0.338,0.626l-0.339,0.623l-0.342,0.621l-0.343,0.62l-0.345,0.617l-0.347,0.615l-0.349,0.613l-0.352,0.61l-0.353,0.608l-0.355,0.606l-0.356,0.604l-0.359,0.602l-0.361,0.599l-0.362,0.597l-0.365,0.595l-0.366,0.592l-0.368,0.59l-0.37,0.588l-0.372,0.585l-0.374,0.583l-0.375,0.58l-0.378,0.578l-0.379,0.576l-0.381,0.573l-0.383,0.571l-0.146,0.216l-0.24,0.351l-0.39,0.563l-0.392,0.561l-0.393,0.559l-0.395,0.556l-0.397,0.553l-0.398,0.551l-0.4,0.548l-0.402,0.546l-0.404,0.542l-0.405,0.541l-0.407,0.537l-0.409,0.535l-0.411,0.532l-0.412,0.53l-0.102,0.13l-0.31,0.392l-0.175,0.203l-0.203,0.174Zm-19.313,-165.345l-83.139,1.447l-0.001,-0.033l-7.557,0.156l-0.159,0.298l-0.239,0.451l-0.238,0.453l-0.237,0.453l-0.236,0.455l-0.235,0.455l-0.234,0.457l-0.232,0.458l-0.232,0.458l-0.23,0.46l-0.229,0.461l-0.229,0.462l-0.227,0.463l-0.226,0.464l-0.224,0.465l-0.224,0.466l-0.223,0.467l-0.221,0.469l-0.221,0.469l-0.219,0.47l-0.218,0.471l-0.217,0.472l-0.216,0.473l-0.214,0.474l-0.214,0.475l-0.212,0.476l-0.211,0.477l-0.21,0.478l-0.209,0.478l-0.208,0.48l-0.207,0.481l-0.205,0.481l-0.204,0.482l-0.204,0.484l-0.202,0.484l-0.2,0.485l-0.2,0.486l-0.198,0.487l-0.198,0.488l-0.196,0.488l-0.195,0.49l-0.193,0.49l-0.193,0.491l-0.191,0.492l-0.19,0.493l-0.189,0.493l-0.188,0.495l-0.187,0.495l-0.185,0.496l-0.184,0.497l-0.183,0.498l-0.182,0.498l-0.18,0.499l-0.18,0.5l-0.178,0.501l-0.177,0.501l-0.175,0.503l-0.175,0.503l-0.173,0.503l-0.172,0.505l-0.171,0.505l-0.169,0.506l-0.169,0.506l-0.167,0.507l-0.165,0.508l-0.165,0.509l-0.163,0.509l-0.163,0.51l-0.16,0.511l-0.16,0.511l-0.158,0.512l-0.157,0.513l-0.156,0.513l-0.155,0.514l-0.153,0.515l-0.152,0.515l-0.151,0.516l-0.15,0.516l-0.148,0.517l-0.147,0.518l-0.146,0.518l-0.144,0.519l-0.143,0.519l-0.142,0.52l-0.141,0.521l-0.139,0.521l-0.138,0.521l-0.137,0.523l-0.135,0.522l-0.134,0.523l-0.133,0.524l-0.132,0.524l-0.13,0.525l-0.129,0.525l-0.128,0.526l-0.126,0.526l-0.125,0.527l-0.124,0.527l-0.122,0.528l-0.121,0.528l-0.12,0.529l-0.118,0.529l-0.117,0.529l-0.116,0.53l-0.115,0.531l-0.113,0.531l-0.111,0.531l-0.111,0.531l-0.109,0.532l-0.108,0.533l-0.106,0.533l-0.105,0.533l-0.104,0.534l-0.102,0.533l-0.101,0.535l-0.1,0.534l-0.098,0.536l-0.097,0.535l-0.096,0.536l-0.094,0.536l-0.093,0.536l-0.092,0.537l-0.09,0.537l-0.089,0.537l-0.087,0.538l-0.071,0.443l-0.07,0.444l-0.069,0.443l-0.068,0.443l-0.067,0.444l-0.067,0.443l-0.065,0.443l-0.064,0.443l-0.063,0.442l-0.063,0.443l-0.061,0.443l-0.06,0.442l-0.059,0.443l-0.059,0.442l-0.057,0.442l-0.057,0.442l-0.055,0.442l-0.055,0.442l-0.045,0.376l-0.008,0.065l-0.053,0.442l-0.051,0.441l-0.051,0.441l-0.05,0.441l-0.049,0.441l-0.048,0.44l-0.046,0.441l-0.046,0.44l-0.045,0.44l-0.044,0.44l-0.043,0.44l-0.042,0.44l-0.041,0.439l-0.04,0.439l-0.039,0.439l-0.038,0.439l-0.038,0.439l-0.036,0.438l-0.035,0.439l-0.034,0.438l-0.034,0.437l-0.032,0.438l-0.032,0.437l-0.03,0.438l-0.03,0.437l-0.028,0.436l-0.028,0.437l-0.026,0.436l-0.026,0.436l-0.025,0.436l-0.023,0.435l-0.023,0.435l-0.022,0.435l-0.021,0.435l-0.02,0.435l-0.019,0.434l-0.018,0.434l-0.017,0.433l-0.016,0.434l-0.015,0.433l-0.014,0.433l-0.013,0.432l-0.013,0.432l-0.011,0.432l-0.01,0.432l-0.01,0.431l-0.008,0.431l-0.008,0.431l-0.006,0.43l-0.006,0.43l-0.005,0.43l-0.004,0.429l-0.002,0.43l-0.002,0.428l-0.001,0.429l0,0.428l0.001,0.428l0.002,0.427l0.003,0.427l0.004,0.427l0.004,0.426l0.006,0.426l0.007,0.426l0.007,0.425l0.009,0.425l0.01,0.424l0.01,0.425l0.011,0.423l0.013,0.424l0.013,0.423l0.014,0.422l0.015,0.423l0.016,0.421l0.017,0.422l0.018,0.421l0.019,0.42l0.02,0.42l0.021,0.42l0.021,0.42l0.023,0.418l0.024,0.419l0.024,0.418l0.026,0.418l0.026,0.417l0.027,0.417l0.028,0.416l0.03,0.416l0.03,0.415l0.031,0.415l0.032,0.415l0.033,0.414l0.033,0.413l0.035,0.413l0.036,0.413l0.036,0.412l0.038,0.412l0.038,0.411l0.04,0.41l0.04,0.411l0.041,0.409l0.043,0.409l0.043,0.409l0.044,0.408l0.045,0.408l0.045,0.407l0.047,0.407l0.048,0.406l0.049,0.406l0.049,0.405l0.051,0.404l0.051,0.404l0.052,0.404l0.053,0.403l0.055,0.402l0.055,0.402l0.056,0.401l0.057,0.401l0.057,0.4l0.059,0.4l0.06,0.399l0.06,0.398l0.062,0.398l0.062,0.397l0.063,0.397l0.065,0.396l0.065,0.396l0.066,0.395l0.067,0.394l0.068,0.394l0.068,0.393l0.07,0.393l0.071,0.392l0.071,0.391l0.073,0.391l0.073,0.39l0.074,0.389l0.075,0.389l0.076,0.389l0.077,0.387l0.078,0.387l0.079,0.386l0.08,0.386l0.08,0.385l0.082,0.385l0.082,0.383l0.083,0.383l0.084,0.383l0.085,0.382l0.086,0.381l0.087,0.38l0.088,0.38l0.089,0.379l0.089,0.378l0.091,0.378l0.091,0.377l0.092,0.376l0.093,0.376l0.095,0.375l0.094,0.374l0.096,0.373l0.097,0.373l0.098,0.372l0.098,0.372l0.1,0.37l0.1,0.37l0.101,0.369l0.102,0.369l0.103,0.367l0.104,0.367l0.105,0.367l0.105,0.365l0.107,0.365l0.107,0.364l0.108,0.363l0.11,0.362l0.11,0.362l0.111,0.361l0.111,0.36l0.113,0.359l0.114,0.359l0.114,0.358l0.116,0.357l0.116,0.356l0.117,0.355l0.118,0.355l0.119,0.354l0.12,0.353l0.12,0.352l0.122,0.352l0.122,0.35l0.123,0.35l0.124,0.349l0.126,0.348l0.125,0.347l0.127,0.347l0.128,0.346l0.128,0.344l0.13,0.344l0.13,0.344l0.131,0.342l0.132,0.341l0.133,0.341l0.134,0.339l0.134,0.339l0.136,0.338l0.136,0.337l0.137,0.337l0.138,0.335l0.139,0.335l0.14,0.333l0.141,0.333l0.141,0.332l0.142,0.331l0.144,0.33l0.144,0.329l0.145,0.328l0.145,0.327l0.147,0.327l0.148,0.325l0.148,0.325l0.149,0.323l0.15,0.323l0.151,0.322l0.152,0.321l0.153,0.32l0.153,0.319l0.155,0.318l0.155,0.317l0.156,0.316l0.157,0.315l0.158,0.315l0.158,0.313l0.16,0.312l0.02,0.038l52.786,-0.894l62.664,-1.038l1.536,-0.026l0.262,-0.385l0.366,-0.544l0.365,-0.546l0.362,-0.549l0.361,-0.552l0.359,-0.554l0.357,-0.556l0.355,-0.558l0.354,-0.561l0.351,-0.564l0.349,-0.565l0.348,-0.568l0.346,-0.57l0.343,-0.573l0.212,-0.356l0.131,-0.218l0.343,-0.575l0.341,-0.577l0.34,-0.579l0.337,-0.582l0.335,-0.584l0.334,-0.586l0.331,-0.588l0.33,-0.591l0.328,-0.593l0.325,-0.594l0.324,-0.597l0.322,-0.599l0.319,-0.601l0.318,-0.603l0.316,-0.606l0.314,-0.607l0.311,-0.609l0.31,-0.611l0.308,-0.614l0.306,-0.615l0.303,-0.617l0.302,-0.619l0.299,-0.621l0.298,-0.623l0.296,-0.625l0.293,-0.627l0.291,-0.629l0.29,-0.63l0.287,-0.632l0.285,-0.635l0.283,-0.636l0.281,-0.637l0.106,-0.242l0.177,-0.396l0.282,-0.639l0.28,-0.641l0.278,-0.642l0.276,-0.644l0.273,-0.646l0.272,-0.648l0.27,-0.649l0.267,-0.651l0.265,-0.653l0.264,-0.654l0.261,-0.656l0.259,-0.657l0.256,-0.66l0.255,-0.66l0.252,-0.663l0.251,-0.663l0.248,-0.666l0.246,-0.667l0.244,-0.668l0.241,-0.67l0.24,-0.671l0.237,-0.673l0.235,-0.675l0.233,-0.675l0.23,-0.677l0.228,-0.679l0.227,-0.68l0.223,-0.681l0.222,-0.683l0.219,-0.684l0.218,-0.685l0.214,-0.686l0.213,-0.688l0.21,-0.689l0.209,-0.691l0.205,-0.691l0.204,-0.693l0.201,-0.694l0.199,-0.695l0.197,-0.697l0.194,-0.697l0.192,-0.699l0.148,-0.547l0.043,-0.152l0.193,-0.7l0.19,-0.7l0.189,-0.702l0.185,-0.702l0.184,-0.704l0.181,-0.705l0.179,-0.706l0.177,-0.706l0.174,-0.708l0.172,-0.709l0.169,-0.71l0.167,-0.711l0.165,-0.712l0.162,-0.712l0.16,-0.714l0.158,-0.715l0.155,-0.715l0.152,-0.716l0.151,-0.718l0.147,-0.718l0.146,-0.718l0.143,-0.72l0.14,-0.72l0.115,-0.6l0.024,-0.122l0.139,-0.721l0.137,-0.722l0.134,-0.723l0.132,-0.723l0.129,-0.724l0.127,-0.725l0.124,-0.726l0.122,-0.726l0.119,-0.727l0.117,-0.728l0.114,-0.728l0.112,-0.729l0.023,-0.154l0.082,-0.535l0.104,-0.69l0.101,-0.689l0.099,-0.689l0.097,-0.688l0.094,-0.689l0.092,-0.688l0.089,-0.688l0.087,-0.688l0.085,-0.688l0.082,-0.687l0.08,-0.687l0.078,-0.687l0.042,-0.386l0.034,-0.301l0.075,-0.686l0.073,-0.685l0.07,-0.686l0.068,-0.685l0.066,-0.684l0.063,-0.685l0.061,-0.684l0.059,-0.683l0.056,-0.683l0.054,-0.683l0.051,-0.682l0.05,-0.682l0.047,-0.681l0.044,-0.681l0.042,-0.68l0.04,-0.68l0.038,-0.679l0.035,-0.679l0.033,-0.678l0.031,-0.678l0.028,-0.677l0.026,-0.676l0.024,-0.676l0.021,-0.675l0.019,-0.675l0.017,-0.674l0.014,-0.673l0.012,-0.672l0.01,-0.672l0.007,-0.671l0.005,-0.671l0.003,-0.646l0,-0.023l0.001,-0.669l-0.001,-0.668l-0.003,-0.668l-0.006,-0.666l-0.008,-0.666l-0.011,-0.665l-0.012,-0.664l-0.015,-0.663l-0.018,-0.663l-0.019,-0.661l-0.022,-0.661l-0.024,-0.659l-0.027,-0.659l-0.029,-0.658l-0.031,-0.657l-0.033,-0.656l-0.036,-0.655l-0.038,-0.654l-0.04,-0.652l-0.043,-0.652l-0.045,-0.651l-0.047,-0.65l-0.049,-0.649l-0.052,-0.647l-0.054,-0.647l-0.056,-0.645l-0.059,-0.645l-0.061,-0.643l-0.063,-0.642l-0.066,-0.641l-0.067,-0.64l-0.07,-0.638l-0.073,-0.637l-0.074,-0.637l-0.077,-0.634l-0.079,-0.634l-0.082,-0.632l-0.083,-0.631l-0.086,-0.63l-0.088,-0.628l-0.091,-0.628l-0.093,-0.625l-0.091,-0.604l-0.004,-0.021l-0.096,-0.623l-0.099,-0.622l-0.102,-0.62l-0.103,-0.619l-0.106,-0.618l-0.108,-0.616l-0.11,-0.615l-0.113,-0.613l-0.115,-0.611l-0.117,-0.611l-0.119,-0.609l-0.121,-0.607l-0.124,-0.605l-0.126,-0.605l-0.129,-0.602l-0.13,-0.601l-0.133,-0.6l-0.135,-0.597l-0.137,-0.597l-0.14,-0.594l-0.141,-0.593l-0.144,-0.592l-0.146,-0.589l-0.149,-0.588l-0.151,-0.586l-0.152,-0.585l-0.155,-0.582l-0.158,-0.582l-0.159,-0.579l-0.162,-0.577l-0.164,-0.576l-0.166,-0.574l-0.169,-0.572l-0.17,-0.57l-0.142,-0.467l-44.307,0.804Z"/><ellipse cx="98.826" cy="65.51" rx="39.057" ry="50.519" style="fill:#b8b8b8;"/><path d="M98.588,16.738l-0.238,0.005l-0.237,0.008l-0.237,0.009l-0.115,0.005l-0.121,0.006l-0.236,0.013l-0.236,0.014l-0.235,0.017l-0.235,0.019l-0.234,0.02l-0.234,0.023l-0.233,0.024l-0.233,0.026l-0.233,0.028l-0.232,0.03l-0.232,0.032l-0.231,0.034l-0.231,0.035l-0.23,0.038l-0.23,0.039l-0.229,0.041l-0.229,0.043l-0.229,0.044l-0.228,0.047l-0.227,0.048l-0.227,0.05l-0.227,0.052l-0.226,0.053l-0.225,0.056l-0.225,0.057l-0.225,0.059l-0.224,0.061l-0.223,0.062l-0.224,0.064l-0.222,0.066l-0.222,0.068l-0.222,0.07l-0.221,0.071l-0.22,0.073l-0.22,0.075l-0.22,0.076l-0.219,0.078l-0.218,0.08l-0.218,0.082l-0.217,0.083l-0.217,0.085l-0.216,0.086l-0.216,0.089l-0.215,0.09l-0.215,0.091l-0.214,0.094l-0.213,0.095l-0.213,0.096l-0.212,0.099l-0.212,0.1l-0.211,0.101l-0.211,0.104l-0.21,0.104l-0.209,0.107l-0.209,0.108l-0.208,0.11l-0.207,0.111l-0.207,0.113l-0.207,0.115l-0.205,0.116l-0.205,0.118l-0.205,0.119l-0.204,0.121l-0.203,0.122l-0.202,0.124l-0.202,0.126l-0.201,0.127l-0.201,0.129l-0.2,0.13l-0.199,0.132l-0.199,0.134l-0.198,0.135l-0.197,0.136l-0.196,0.138l-0.196,0.139l-0.195,0.141l-0.195,0.143l-0.194,0.144l-0.193,0.146l-0.192,0.147l-0.192,0.148l-0.19,0.15l-0.191,0.152l-0.189,0.152l-0.189,0.155l-0.188,0.156l-0.187,0.157l-0.186,0.159l-0.186,0.16l-0.185,0.162l-0.184,0.163l-0.184,0.164l-0.182,0.166l-0.182,0.167l-0.181,0.169l-0.18,0.17l-0.18,0.172l-0.179,0.173l-0.177,0.174l-0.178,0.176l-0.176,0.177l-0.175,0.178l-0.175,0.18l-0.174,0.181l-0.172,0.183l-0.173,0.184l-0.171,0.185l-0.17,0.187l-0.17,0.187l-0.168,0.19l-0.168,0.19l-0.167,0.192l-0.166,0.193l-0.165,0.195l-0.098,0.116l-0.067,0.079l-0.163,0.197l-0.163,0.199l-0.162,0.199l-0.16,0.201l-0.16,0.202l-0.159,0.203l-0.158,0.205l-0.157,0.206l-0.157,0.207l-0.155,0.208l-0.154,0.21l-0.154,0.211l-0.152,0.212l-0.151,0.213l-0.151,0.214l-0.15,0.216l-0.148,0.217l-0.148,0.218l-0.146,0.219l-0.146,0.22l-0.145,0.222l-0.143,0.222l-0.143,0.224l-0.141,0.225l-0.141,0.226l-0.14,0.228l-0.138,0.228l-0.138,0.23l-0.136,0.23l-0.136,0.232l-0.134,0.233l-0.134,0.234l-0.132,0.235l-0.131,0.237l-0.13,0.237l-0.13,0.238l-0.128,0.24l-0.127,0.24l-0.126,0.242l-0.124,0.242l-0.124,0.244l-0.123,0.245l-0.121,0.246l-0.121,0.246l-0.119,0.248l-0.118,0.249l-0.117,0.25l-0.116,0.251l-0.115,0.252l-0.114,0.252l-0.112,0.254l-0.112,0.255l-0.11,0.256l-0.109,0.257l-0.108,0.257l-0.107,0.259l-0.105,0.26l-0.105,0.26l-0.103,0.262l-0.102,0.262l-0.101,0.264l-0.099,0.264l-0.099,0.265l-0.097,0.266l-0.096,0.267l-0.095,0.268l-0.094,0.269l-0.092,0.27l-0.091,0.27l-0.09,0.271l-0.089,0.273l-0.087,0.273l-0.086,0.274l-0.085,0.275l-0.084,0.275l-0.082,0.277l-0.082,0.277l-0.079,0.278l-0.079,0.279l-0.077,0.28l-0.076,0.28l-0.075,0.282l-0.073,0.282l-0.073,0.283l-0.07,0.283l-0.07,0.285l-0.068,0.285l-0.067,0.286l-0.066,0.287l-0.064,0.287l-0.063,0.288l-0.061,0.289l-0.06,0.29l-0.059,0.29l-0.058,0.291l-0.056,0.292l-0.055,0.293l-0.053,0.293l-0.052,0.294l-0.051,0.294l-0.049,0.296l-0.048,0.295l-0.046,0.297l-0.045,0.297l-0.044,0.298l-0.042,0.299l-0.041,0.299l-0.04,0.299l-0.038,0.301l-0.036,0.301l-0.036,0.301l-0.033,0.303l-0.033,0.302l-0.031,0.304l-0.029,0.304l-0.028,0.304l-0.026,0.306l-0.026,0.305l-0.023,0.307l-0.022,0.306l-0.021,0.308l-0.019,0.308l-0.018,0.308l-0.016,0.309l-0.015,0.31l-0.013,0.31l-0.011,0.31l-0.011,0.312l-0.008,0.311l-0.008,0.312l-0.005,0.313l-0.004,0.313l-0.003,0.313l-0.001,0.314l0.001,0.315l0.002,0.315l0.003,0.315l0.005,0.314l0.007,0.314l0.008,0.313l0.01,0.313l0.011,0.312l0.013,0.312l0.014,0.311l0.016,0.311l0.017,0.31l0.019,0.309l0.02,0.309l0.022,0.308l0.023,0.308l0.025,0.307l0.026,0.307l0.027,0.306l0.029,0.305l0.031,0.305l0.032,0.304l0.033,0.303l0.035,0.303l0.036,0.302l0.038,0.302l0.039,0.301l0.04,0.3l0.042,0.3l0.043,0.299l0.045,0.298l0.046,0.298l0.048,0.296l0.049,0.297l0.05,0.295l0.052,0.295l0.053,0.294l0.054,0.293l0.056,0.293l0.057,0.292l0.058,0.291l0.06,0.29l0.061,0.29l0.063,0.289l0.063,0.288l0.066,0.287l0.066,0.287l0.068,0.286l0.069,0.285l0.07,0.284l0.072,0.283l0.073,0.283l0.074,0.282l0.076,0.281l0.076,0.28l0.079,0.28l0.079,0.278l0.08,0.278l0.082,0.277l0.083,0.276l0.085,0.275l0.086,0.274l0.086,0.273l0.088,0.273l0.09,0.272l0.09,0.27l0.092,0.27l0.093,0.269l0.094,0.268l0.096,0.267l0.096,0.266l0.098,0.266l0.099,0.264l0.1,0.263l0.101,0.263l0.103,0.261l0.103,0.261l0.105,0.26l0.106,0.258l0.107,0.258l0.109,0.257l0.109,0.255l0.111,0.255l0.111,0.254l0.113,0.252l0.114,0.252l0.115,0.251l0.116,0.249l0.117,0.249l0.118,0.247l0.12,0.247l0.12,0.245l0.122,0.245l0.122,0.243l0.124,0.242l0.125,0.242l0.126,0.24l0.127,0.239l0.111,0.207l0.016,0.031l0.129,0.237l0.13,0.236l0.131,0.234l0.132,0.234l0.133,0.233l0.134,0.231l0.135,0.23l0.136,0.229l0.136,0.228l0.138,0.227l0.139,0.226l0.14,0.224l0.141,0.224l0.142,0.222l0.143,0.221l0.143,0.22l0.145,0.218l0.146,0.218l0.147,0.216l0.147,0.215l0.149,0.214l0.149,0.212l0.15,0.212l0.152,0.21l0.152,0.209l0.153,0.208l0.154,0.206l0.155,0.205l0.155,0.204l0.157,0.203l0.157,0.201l0.159,0.2l0.159,0.199l0.16,0.197l0.161,0.197l0.162,0.195l0.162,0.193l0.164,0.192l0.164,0.191l0.165,0.19l0.166,0.188l0.167,0.188l0.167,0.185l0.169,0.185l0.169,0.183l0.17,0.181l0.171,0.18l0.171,0.179l0.172,0.178l0.173,0.176l0.174,0.175l0.175,0.173l0.175,0.172l0.176,0.171l0.177,0.169l0.178,0.168l0.178,0.166l0.179,0.165l0.179,0.164l0.181,0.162l0.181,0.161l0.182,0.159l0.182,0.158l0.184,0.156l0.183,0.155l0.185,0.153l0.185,0.152l0.186,0.151l0.187,0.149l0.187,0.148l0.188,0.146l0.188,0.144l0.189,0.143l0.19,0.142l0.191,0.14l0.191,0.139l0.191,0.137l0.193,0.136l0.192,0.134l0.194,0.132l0.194,0.131l0.195,0.13l0.195,0.128l0.196,0.126l0.196,0.125l0.197,0.123l0.198,0.122l0.198,0.12l0.198,0.119l0.2,0.117l0.199,0.116l0.201,0.114l0.2,0.112l0.202,0.111l0.202,0.109l0.202,0.107l0.203,0.106l0.203,0.105l0.204,0.103l0.205,0.101l0.205,0.099l0.205,0.098l0.206,0.097l0.207,0.094l0.207,0.094l0.207,0.091l0.208,0.09l0.208,0.088l0.209,0.087l0.209,0.084l0.21,0.084l0.21,0.081l0.211,0.08l0.211,0.078l0.211,0.077l0.212,0.075l0.213,0.073l0.212,0.072l0.214,0.069l0.213,0.069l0.214,0.066l0.215,0.065l0.215,0.063l0.215,0.061l0.216,0.06l0.216,0.058l0.216,0.056l0.217,0.055l0.218,0.053l0.217,0.051l0.219,0.049l0.218,0.048l0.219,0.046l0.219,0.044l0.22,0.042l0.22,0.041l0.22,0.038l0.221,0.038l0.221,0.035l0.222,0.033l0.222,0.032l0.222,0.03l0.223,0.028l0.223,0.027l0.223,0.024l0.224,0.023l0.224,0.021l0.224,0.019l0.225,0.018l0.225,0.015l0.226,0.014l0.225,0.012l0.227,0.01l0.226,0.008l0.227,0.007l0.129,0.002l0.098,0.002l0.228,0.003l0.228,0.001l0.228,-0.001l0.228,-0.003l0.228,-0.004l0.227,-0.007l0.227,-0.008l0.227,-0.01l0.226,-0.013l0.226,-0.013l0.225,-0.016l0.225,-0.018l0.225,-0.019l0.224,-0.021l0.224,-0.023l0.223,-0.025l0.223,-0.026l0.222,-0.029l0.222,-0.03l0.222,-0.032l0.221,-0.033l0.221,-0.036l0.22,-0.037l0.22,-0.039l0.22,-0.041l0.219,-0.042l0.218,-0.044l0.218,-0.046l0.218,-0.048l0.218,-0.049l0.216,-0.051l0.217,-0.053l0.216,-0.055l0.215,-0.056l0.215,-0.058l0.215,-0.059l0.214,-0.062l0.214,-0.063l0.213,-0.064l0.213,-0.067l0.212,-0.068l0.212,-0.07l0.211,-0.071l0.211,-0.073l0.211,-0.075l0.21,-0.076l0.209,-0.078l0.209,-0.08l0.209,-0.081l0.208,-0.083l0.207,-0.085l0.207,-0.086l0.207,-0.088l0.206,-0.089l0.205,-0.091l0.205,-0.093l0.205,-0.094l0.203,-0.096l0.204,-0.098l0.203,-0.099l0.202,-0.1l0.202,-0.103l0.201,-0.104l0.201,-0.105l0.2,-0.107l0.2,-0.109l0.199,-0.11l0.198,-0.111l0.198,-0.114l0.198,-0.114l0.196,-0.117l0.197,-0.118l0.195,-0.119l0.195,-0.121l0.195,-0.123l0.194,-0.124l0.193,-0.125l0.193,-0.127l0.192,-0.129l0.191,-0.13l0.191,-0.131l0.19,-0.133l0.19,-0.135l0.189,-0.136l0.188,-0.138l0.188,-0.139l0.187,-0.14l0.186,-0.142l0.186,-0.143l0.185,-0.145l0.184,-0.147l0.184,-0.148l0.183,-0.149l0.182,-0.15l0.182,-0.153l0.181,-0.153l0.18,-0.155l0.179,-0.157l0.179,-0.157l0.178,-0.16l0.178,-0.16l0.176,-0.162l0.176,-0.164l0.176,-0.165l0.174,-0.166l0.174,-0.167l0.173,-0.169l0.172,-0.171l0.171,-0.171l0.171,-0.173l0.17,-0.175l0.169,-0.176l0.169,-0.177l0.167,-0.178l0.167,-0.18l0.166,-0.181l0.165,-0.183l0.164,-0.183l0.164,-0.185l0.163,-0.187l0.162,-0.187l0.161,-0.189l0.16,-0.191l0.159,-0.191l0.159,-0.193l0.158,-0.194l0.156,-0.195l0.156,-0.197l0.155,-0.198l0.155,-0.199l0.153,-0.2l0.152,-0.202l0.152,-0.203l0.151,-0.204l0.149,-0.205l0.149,-0.207l0.148,-0.208l0.147,-0.209l0.146,-0.21l0.145,-0.211l0.145,-0.212l0.143,-0.214l0.142,-0.215l0.142,-0.216l0.14,-0.217l0.14,-0.219l0.138,-0.219l0.138,-0.221l0.136,-0.222l0.136,-0.222l0.011,-0.018l0.124,-0.206l0.134,-0.225l0.133,-0.226l0.132,-0.228l0.131,-0.228l0.129,-0.229l0.129,-0.231l0.128,-0.232l0.127,-0.232l0.126,-0.234l0.125,-0.235l0.123,-0.236l0.123,-0.237l0.122,-0.238l0.12,-0.239l0.12,-0.24l0.118,-0.241l0.118,-0.242l0.116,-0.243l0.115,-0.245l0.114,-0.245l0.113,-0.246l0.112,-0.247l0.111,-0.248l0.11,-0.25l0.108,-0.25l0.108,-0.251l0.106,-0.252l0.105,-0.253l0.104,-0.254l0.103,-0.255l0.102,-0.256l0.101,-0.257l0.099,-0.257l0.098,-0.259l0.097,-0.26l0.096,-0.26l0.095,-0.262l0.094,-0.262l0.092,-0.263l0.091,-0.264l0.09,-0.265l0.089,-0.266l0.088,-0.267l0.086,-0.267l0.086,-0.269l0.084,-0.269l0.082,-0.27l0.082,-0.271l0.08,-0.272l0.079,-0.272l0.078,-0.274l0.076,-0.274l0.076,-0.275l0.074,-0.276l0.073,-0.277l0.071,-0.277l0.07,-0.278l0.069,-0.279l0.068,-0.28l0.066,-0.28l0.065,-0.282l0.064,-0.281l0.062,-0.283l0.062,-0.284l0.059,-0.284l0.059,-0.285l0.057,-0.285l0.056,-0.287l0.054,-0.287l0.054,-0.288l0.052,-0.288l0.05,-0.289l0.049,-0.29l0.048,-0.29l0.046,-0.291l0.045,-0.292l0.044,-0.293l0.042,-0.293l0.041,-0.294l0.04,-0.294l0.038,-0.295l0.037,-0.296l0.035,-0.296l0.034,-0.297l0.033,-0.297l0.031,-0.298l0.029,-0.299l0.029,-0.299l0.026,-0.3l0.026,-0.301l0.024,-0.3l0.022,-0.302l0.021,-0.302l0.02,-0.303l0.018,-0.303l0.017,-0.304l0.015,-0.304l0.014,-0.305l0.012,-0.305l0.011,-0.306l0.009,-0.306l0.008,-0.307l0.006,-0.307l0.005,-0.308l0.004,-0.309l0.001,-0.308l0.001,-0.31l-0.001,-0.309l-0.001,-0.108l-0.002,-0.202l-0.003,-0.309l-0.006,-0.309l-0.006,-0.308l-0.008,-0.308l-0.01,-0.307l-0.011,-0.307l-0.013,-0.306l-0.014,-0.305l-0.015,-0.305l-0.018,-0.305l-0.018,-0.304l-0.02,-0.303l-0.021,-0.303l-0.023,-0.302l-0.025,-0.301l-0.025,-0.302l-0.028,-0.3l-0.028,-0.3l-0.03,-0.299l-0.032,-0.299l-0.033,-0.298l-0.034,-0.297l-0.036,-0.297l-0.037,-0.296l-0.038,-0.295l-0.04,-0.295l-0.041,-0.294l-0.043,-0.294l-0.044,-0.292l-0.045,-0.293l-0.047,-0.291l-0.048,-0.291l-0.05,-0.29l-0.05,-0.289l-0.053,-0.289l-0.053,-0.288l-0.055,-0.287l-0.056,-0.287l-0.058,-0.286l-0.058,-0.285l-0.061,-0.284l-0.007,-0.036l-0.053,-0.248l-0.062,-0.283l-0.064,-0.282l-0.064,-0.281l-0.066,-0.281l-0.068,-0.28l-0.068,-0.279l-0.07,-0.279l-0.071,-0.277l-0.072,-0.277l-0.074,-0.276l-0.075,-0.275l-0.076,-0.275l-0.077,-0.273l-0.079,-0.273l-0.08,-0.272l-0.081,-0.271l-0.082,-0.27l-0.084,-0.27l-0.084,-0.268l-0.086,-0.268l-0.087,-0.267l-0.089,-0.265l-0.089,-0.265l-0.091,-0.265l-0.092,-0.263l-0.093,-0.262l-0.094,-0.262l-0.096,-0.26l-0.096,-0.26l-0.098,-0.258l-0.099,-0.258l-0.1,-0.257l-0.101,-0.256l-0.084,-0.208l-0.019,-0.047l-0.101,-0.255l-0.103,-0.253l-0.105,-0.253l-0.105,-0.252l-0.106,-0.251l-0.108,-0.25l-0.108,-0.248l-0.11,-0.248l-0.111,-0.247l-0.112,-0.246l-0.113,-0.245l-0.114,-0.244l-0.115,-0.243l-0.116,-0.242l-0.108,-0.221l-0.009,-0.02l-0.117,-0.241l-0.117,-0.239l-0.119,-0.239l-0.119,-0.238l-0.121,-0.237l-0.122,-0.235l-0.122,-0.235l-0.124,-0.233l-0.125,-0.233l-0.126,-0.231l-0.127,-0.231l-0.128,-0.229l-0.129,-0.228l-0.129,-0.227l-0.131,-0.226l-0.015,-0.025l-0.115,-0.202l-0.131,-0.225l-0.131,-0.224l-0.133,-0.223l-0.133,-0.222l-0.135,-0.221l-0.135,-0.22l-0.137,-0.219l-0.137,-0.217l-0.138,-0.217l-0.14,-0.215l-0.14,-0.214l-0.142,-0.213l-0.142,-0.212l-0.143,-0.211l-0.144,-0.209l-0.145,-0.208l-0.146,-0.208l-0.147,-0.206l-0.148,-0.204l-0.149,-0.204l-0.15,-0.202l-0.15,-0.201l-0.152,-0.2l-0.152,-0.199l-0.154,-0.197l-0.154,-0.197l-0.155,-0.195l-0.156,-0.193l-0.157,-0.193l-0.062,-0.075l-0.094,-0.118l-0.155,-0.193l-0.156,-0.192l-0.157,-0.19l-0.158,-0.189l-0.159,-0.188l-0.16,-0.187l-0.16,-0.186l-0.162,-0.184l-0.162,-0.183l-0.163,-0.182l-0.164,-0.18l-0.165,-0.179l-0.166,-0.178l-0.166,-0.176l-0.168,-0.175l-0.168,-0.174l-0.169,-0.173l-0.17,-0.171l-0.171,-0.17l-0.171,-0.169l-0.173,-0.167l-0.173,-0.166l-0.174,-0.164l-0.175,-0.163l-0.175,-0.162l-0.177,-0.161l-0.177,-0.159l-0.178,-0.157l-0.179,-0.157l-0.179,-0.154l-0.181,-0.154l-0.181,-0.152l-0.181,-0.151l-0.183,-0.149l-0.183,-0.148l-0.184,-0.146l-0.185,-0.145l-0.186,-0.144l-0.186,-0.142l-0.187,-0.141l-0.188,-0.139l-0.189,-0.138l-0.189,-0.136l-0.19,-0.135l-0.191,-0.133l-0.191,-0.132l-0.192,-0.131l-0.193,-0.129l-0.193,-0.127l-0.195,-0.126l-0.194,-0.125l-0.196,-0.123l-0.196,-0.121l-0.197,-0.12l-0.198,-0.118l-0.195,-0.115l-0.003,-0.002l-0.197,-0.119l-0.198,-0.118l-0.198,-0.116l-0.2,-0.115l-0.199,-0.113l-0.201,-0.112l-0.201,-0.11l-0.202,-0.108l-0.203,-0.107l-0.204,-0.106l-0.204,-0.103l-0.205,-0.103l-0.205,-0.1l-0.206,-0.099l-0.207,-0.098l-0.208,-0.096l-0.208,-0.094l-0.209,-0.093l-0.21,-0.091l-0.211,-0.089l-0.211,-0.088l-0.211,-0.086l-0.213,-0.085l-0.213,-0.083l-0.214,-0.081l-0.214,-0.08l-0.215,-0.078l-0.216,-0.076l-0.217,-0.075l-0.217,-0.073l-0.218,-0.071l-0.218,-0.069l-0.219,-0.068l-0.22,-0.066l-0.22,-0.065l-0.222,-0.062l-0.221,-0.061l-0.223,-0.059l-0.223,-0.058l-0.223,-0.056l-0.225,-0.054l-0.225,-0.052l-0.131,-0.029l-0.094,-0.023l-0.226,-0.051l-0.227,-0.05l-0.227,-0.048l-0.228,-0.046l-0.228,-0.045l-0.229,-0.043l-0.23,-0.04l-0.231,-0.039l-0.231,-0.038l-0.232,-0.035l-0.233,-0.034l-0.233,-0.031l-0.234,-0.03l-0.235,-0.028l-0.235,-0.026l-0.236,-0.024l-0.237,-0.022l-0.237,-0.021l-0.021,-0.001l-0.222,-0.018l-0.233,0.003Zm0.505,-3.509l0.267,-0.014l0.266,-0.012l0.267,-0.01l0.266,-0.007l0.267,-0.006l0.266,-0.003l0.266,-0.001l0.266,0.001l0.266,0.004l0.265,0.006l0.266,0.007l0.265,0.01l0.265,0.013l0.265,0.014l0.264,0.016l0.265,0.019l0.264,0.021l0.264,0.023l0.11,0.01l0.154,0.016l0.263,0.03l0.262,0.033l0.263,0.034l0.262,0.037l0.261,0.038l0.262,0.041l0.261,0.043l0.261,0.045l0.26,0.047l0.26,0.049l0.26,0.051l0.259,0.053l0.259,0.055l0.258,0.057l0.258,0.06l0.258,0.061l0.257,0.063l0.257,0.066l0.256,0.067l0.256,0.07l0.256,0.071l0.255,0.074l0.254,0.075l0.254,0.078l0.254,0.079l0.253,0.081l0.253,0.084l0.252,0.085l0.252,0.088l0.251,0.089l0.25,0.091l0.25,0.093l0.25,0.095l0.249,0.097l0.248,0.099l0.248,0.101l0.248,0.103l0.246,0.104l0.246,0.107l0.246,0.108l0.245,0.111l0.244,0.112l0.004,0.002l0.238,0.116l0.241,0.119l0.24,0.122l0.24,0.123l0.239,0.125l0.238,0.127l0.238,0.129l0.237,0.131l0.236,0.132l0.235,0.134l0.235,0.136l0.234,0.138l0.233,0.139l0.233,0.141l0.232,0.143l0.231,0.145l0.23,0.146l0.229,0.148l0.229,0.15l0.228,0.152l0.227,0.153l0.226,0.155l0.226,0.156l0.225,0.158l0.224,0.16l0.223,0.162l0.222,0.163l0.222,0.165l0.22,0.166l0.22,0.169l0.219,0.169l0.218,0.172l0.218,0.173l0.216,0.174l0.216,0.177l0.214,0.177l0.214,0.18l0.213,0.181l0.212,0.182l0.211,0.184l0.211,0.186l0.209,0.187l0.209,0.189l0.207,0.19l0.207,0.192l0.206,0.193l0.205,0.195l0.204,0.196l0.203,0.198l0.202,0.2l0.201,0.2l0.2,0.203l0.199,0.204l0.198,0.205l0.198,0.207l0.196,0.208l0.119,0.127l0.075,0.084l0.191,0.214l0.19,0.215l0.189,0.217l0.188,0.218l0.186,0.219l0.186,0.221l0.185,0.223l0.184,0.223l0.182,0.225l0.182,0.227l0.18,0.227l0.18,0.229l0.178,0.231l0.178,0.232l0.176,0.233l0.175,0.234l0.174,0.235l0.173,0.237l0.172,0.239l0.171,0.239l0.169,0.241l0.169,0.242l0.167,0.243l0.166,0.245l0.165,0.245l0.165,0.248l0.162,0.248l0.162,0.249l0.161,0.251l0.142,0.224l0.017,0.028l0.156,0.255l0.154,0.256l0.154,0.257l0.152,0.258l0.151,0.259l0.15,0.261l0.149,0.261l0.147,0.263l0.146,0.264l0.145,0.265l0.144,0.266l0.143,0.267l0.141,0.269l0.14,0.269l0.139,0.271l0.011,0.022l0.125,0.251l0.134,0.273l0.133,0.275l0.132,0.276l0.131,0.277l0.129,0.278l0.128,0.279l0.127,0.28l0.125,0.281l0.124,0.282l0.123,0.283l0.122,0.284l0.12,0.285l0.119,0.286l0.118,0.287l0.021,0.053l0.094,0.236l0.113,0.29l0.112,0.29l0.11,0.292l0.11,0.292l0.108,0.294l0.106,0.294l0.105,0.295l0.104,0.296l0.103,0.297l0.101,0.298l0.099,0.299l0.099,0.3l0.097,0.301l0.095,0.301l0.094,0.302l0.093,0.304l0.092,0.304l0.089,0.305l0.089,0.306l0.087,0.306l0.086,0.308l0.084,0.308l0.083,0.309l0.081,0.31l0.08,0.311l0.079,0.311l0.077,0.312l0.075,0.314l0.074,0.313l0.073,0.315l0.071,0.316l0.07,0.316l0.068,0.317l0.059,0.277l0.008,0.04l0.064,0.319l0.064,0.319l0.061,0.32l0.06,0.321l0.059,0.322l0.057,0.322l0.055,0.323l0.054,0.323l0.053,0.324l0.051,0.325l0.049,0.326l0.048,0.326l0.046,0.327l0.045,0.328l0.043,0.328l0.042,0.329l0.04,0.329l0.039,0.33l0.037,0.331l0.035,0.332l0.034,0.332l0.032,0.332l0.031,0.333l0.029,0.334l0.027,0.334l0.026,0.335l0.024,0.336l0.023,0.336l0.021,0.337l0.019,0.337l0.018,0.338l0.016,0.338l0.014,0.339l0.013,0.339l0.011,0.34l0.01,0.34l0.007,0.341l0.007,0.341l0.004,0.342l0.003,0.343l0.001,0.342l0,0.224l-0.001,0.12l-0.002,0.343l-0.005,0.343l-0.006,0.342l-0.008,0.342l-0.009,0.341l-0.012,0.341l-0.012,0.34l-0.015,0.339l-0.016,0.339l-0.018,0.339l-0.019,0.338l-0.021,0.337l-0.023,0.337l-0.024,0.336l-0.026,0.336l-0.027,0.335l-0.029,0.334l-0.031,0.334l-0.032,0.333l-0.034,0.333l-0.035,0.332l-0.037,0.331l-0.039,0.331l-0.04,0.33l-0.041,0.329l-0.044,0.329l-0.045,0.328l-0.046,0.327l-0.048,0.327l-0.049,0.326l-0.051,0.325l-0.053,0.325l-0.054,0.324l-0.055,0.323l-0.057,0.322l-0.059,0.322l-0.06,0.321l-0.061,0.32l-0.063,0.32l-0.065,0.319l-0.066,0.318l-0.068,0.317l-0.069,0.316l-0.07,0.316l-0.072,0.315l-0.073,0.314l-0.075,0.314l-0.077,0.312l-0.077,0.312l-0.079,0.311l-0.081,0.31l-0.082,0.31l-0.084,0.308l-0.085,0.308l-0.086,0.307l-0.088,0.306l-0.089,0.305l-0.09,0.304l-0.092,0.304l-0.094,0.302l-0.094,0.302l-0.097,0.301l-0.097,0.3l-0.099,0.299l-0.1,0.298l-0.102,0.297l-0.103,0.296l-0.104,0.295l-0.106,0.295l-0.107,0.293l-0.108,0.293l-0.11,0.292l-0.111,0.29l-0.113,0.29l-0.113,0.289l-0.115,0.287l-0.117,0.287l-0.118,0.286l-0.119,0.285l-0.12,0.284l-0.121,0.282l-0.123,0.282l-0.125,0.281l-0.125,0.28l-0.127,0.279l-0.128,0.277l-0.129,0.277l-0.131,0.276l-0.131,0.274l-0.134,0.274l-0.134,0.272l-0.135,0.271l-0.137,0.271l-0.138,0.269l-0.14,0.268l-0.14,0.267l-0.142,0.266l-0.143,0.265l-0.144,0.263l-0.146,0.263l-0.146,0.262l-0.148,0.26l-0.149,0.259l-0.15,0.258l-0.152,0.257l-0.153,0.256l-0.153,0.254l-0.155,0.254l-0.144,0.232l-0.012,0.02l-0.158,0.251l-0.159,0.249l-0.16,0.249l-0.161,0.247l-0.162,0.246l-0.164,0.245l-0.164,0.243l-0.166,0.242l-0.167,0.242l-0.168,0.239l-0.169,0.239l-0.17,0.237l-0.171,0.236l-0.173,0.235l-0.173,0.234l-0.175,0.232l-0.176,0.231l-0.177,0.229l-0.178,0.229l-0.179,0.227l-0.18,0.225l-0.181,0.225l-0.182,0.223l-0.184,0.221l-0.184,0.221l-0.186,0.219l-0.186,0.217l-0.188,0.216l-0.188,0.215l-0.19,0.214l-0.191,0.212l-0.191,0.211l-0.193,0.209l-0.194,0.208l-0.195,0.206l-0.196,0.205l-0.197,0.204l-0.198,0.202l-0.198,0.201l-0.2,0.199l-0.201,0.198l-0.202,0.196l-0.203,0.195l-0.204,0.194l-0.205,0.191l-0.206,0.191l-0.206,0.189l-0.208,0.187l-0.209,0.186l-0.21,0.184l-0.21,0.183l-0.212,0.182l-0.213,0.179l-0.213,0.179l-0.214,0.176l-0.216,0.175l-0.216,0.174l-0.217,0.172l-0.219,0.17l-0.219,0.169l-0.22,0.167l-0.22,0.165l-0.222,0.164l-0.223,0.162l-0.224,0.161l-0.224,0.159l-0.225,0.157l-0.227,0.156l-0.227,0.154l-0.228,0.152l-0.228,0.151l-0.23,0.149l-0.231,0.147l-0.231,0.145l-0.232,0.144l-0.233,0.142l-0.234,0.141l-0.235,0.138l-0.236,0.137l-0.236,0.135l-0.237,0.134l-0.238,0.131l-0.239,0.13l-0.24,0.128l-0.24,0.126l-0.241,0.124l-0.242,0.123l-0.243,0.121l-0.243,0.119l-0.245,0.117l-0.245,0.115l-0.246,0.113l-0.246,0.112l-0.247,0.11l-0.248,0.107l-0.249,0.106l-0.25,0.104l-0.25,0.102l-0.251,0.101l-0.251,0.098l-0.253,0.096l-0.252,0.095l-0.254,0.092l-0.255,0.091l-0.255,0.088l-0.255,0.087l-0.257,0.084l-0.257,0.083l-0.257,0.081l-0.259,0.078l-0.258,0.077l-0.26,0.074l-0.26,0.073l-0.261,0.071l-0.261,0.068l-0.262,0.066l-0.263,0.065l-0.263,0.062l-0.264,0.06l-0.264,0.059l-0.265,0.056l-0.265,0.054l-0.266,0.052l-0.267,0.049l-0.267,0.048l-0.267,0.046l-0.268,0.043l-0.269,0.041l-0.269,0.039l-0.27,0.037l-0.27,0.035l-0.27,0.033l-0.271,0.03l-0.271,0.029l-0.272,0.026l-0.273,0.024l-0.272,0.021l-0.274,0.02l-0.273,0.017l-0.274,0.015l-0.275,0.013l-0.274,0.01l-0.276,0.009l-0.275,0.006l-0.276,0.004l-0.276,0.001l-0.277,0l-0.277,-0.003l-0.276,-0.006l-0.276,-0.007l-0.119,-0.004l-0.156,-0.006l-0.275,-0.012l-0.274,-0.015l-0.274,-0.016l-0.274,-0.019l-0.273,-0.021l-0.273,-0.023l-0.272,-0.026l-0.271,-0.027l-0.271,-0.03l-0.271,-0.032l-0.27,-0.035l-0.27,-0.036l-0.269,-0.038l-0.268,-0.041l-0.268,-0.043l-0.267,-0.045l-0.267,-0.047l-0.267,-0.049l-0.265,-0.051l-0.265,-0.054l-0.265,-0.055l-0.264,-0.058l-0.263,-0.059l-0.263,-0.062l-0.262,-0.064l-0.261,-0.065l-0.261,-0.068l-0.26,-0.07l-0.259,-0.072l-0.259,-0.074l-0.258,-0.076l-0.258,-0.078l-0.256,-0.08l-0.257,-0.081l-0.255,-0.084l-0.255,-0.086l-0.254,-0.088l-0.253,-0.09l-0.253,-0.091l-0.252,-0.094l-0.251,-0.096l-0.25,-0.097l-0.25,-0.099l-0.249,-0.102l-0.248,-0.103l-0.247,-0.105l-0.247,-0.107l-0.246,-0.109l-0.245,-0.11l-0.244,-0.113l-0.244,-0.114l-0.243,-0.116l-0.242,-0.118l-0.241,-0.12l-0.24,-0.122l-0.24,-0.123l-0.239,-0.125l-0.237,-0.127l-0.238,-0.129l-0.236,-0.131l-0.235,-0.132l-0.235,-0.134l-0.234,-0.136l-0.232,-0.137l-0.232,-0.139l-0.232,-0.141l-0.23,-0.143l-0.229,-0.144l-0.229,-0.146l-0.228,-0.148l-0.226,-0.15l-0.226,-0.151l-0.225,-0.152l-0.225,-0.155l-0.223,-0.156l-0.222,-0.157l-0.221,-0.16l-0.221,-0.161l-0.22,-0.162l-0.218,-0.164l-0.218,-0.166l-0.217,-0.167l-0.216,-0.169l-0.215,-0.17l-0.213,-0.172l-0.214,-0.174l-0.212,-0.175l-0.211,-0.177l-0.21,-0.178l-0.209,-0.18l-0.208,-0.181l-0.208,-0.183l-0.206,-0.184l-0.205,-0.186l-0.204,-0.187l-0.204,-0.189l-0.202,-0.19l-0.201,-0.192l-0.201,-0.193l-0.199,-0.194l-0.198,-0.196l-0.198,-0.198l-0.196,-0.199l-0.195,-0.2l-0.194,-0.202l-0.194,-0.203l-0.192,-0.204l-0.191,-0.206l-0.19,-0.207l-0.189,-0.209l-0.188,-0.21l-0.187,-0.212l-0.186,-0.212l-0.185,-0.215l-0.184,-0.215l-0.182,-0.217l-0.182,-0.218l-0.18,-0.22l-0.18,-0.22l-0.178,-0.222l-0.178,-0.224l-0.176,-0.225l-0.175,-0.226l-0.174,-0.227l-0.173,-0.228l-0.172,-0.23l-0.17,-0.231l-0.17,-0.233l-0.168,-0.233l-0.168,-0.235l-0.166,-0.236l-0.165,-0.238l-0.164,-0.238l-0.163,-0.24l-0.161,-0.241l-0.161,-0.242l-0.159,-0.243l-0.158,-0.245l-0.158,-0.246l-0.155,-0.246l-0.155,-0.248l-0.154,-0.25l-0.152,-0.25l-0.151,-0.252l-0.15,-0.252l-0.149,-0.254l-0.148,-0.255l-0.146,-0.256l-0.145,-0.257l-0.144,-0.259l-0.143,-0.259l-0.142,-0.261l-0.14,-0.261l-0.139,-0.263l-0.138,-0.264l-0.018,-0.034l-0.119,-0.231l-0.135,-0.266l-0.134,-0.267l-0.133,-0.268l-0.131,-0.269l-0.131,-0.27l-0.129,-0.271l-0.128,-0.272l-0.126,-0.274l-0.125,-0.274l-0.124,-0.275l-0.123,-0.276l-0.122,-0.278l-0.12,-0.278l-0.119,-0.279l-0.117,-0.28l-0.117,-0.282l-0.115,-0.282l-0.113,-0.283l-0.113,-0.284l-0.111,-0.285l-0.109,-0.286l-0.109,-0.287l-0.107,-0.287l-0.106,-0.289l-0.104,-0.29l-0.103,-0.29l-0.102,-0.292l-0.1,-0.292l-0.099,-0.293l-0.098,-0.294l-0.096,-0.295l-0.095,-0.296l-0.094,-0.297l-0.092,-0.297l-0.09,-0.299l-0.09,-0.299l-0.088,-0.3l-0.087,-0.301l-0.085,-0.302l-0.084,-0.302l-0.082,-0.303l-0.081,-0.305l-0.08,-0.304l-0.078,-0.306l-0.076,-0.307l-0.076,-0.307l-0.074,-0.308l-0.072,-0.309l-0.071,-0.31l-0.07,-0.31l-0.068,-0.311l-0.066,-0.312l-0.066,-0.312l-0.063,-0.314l-0.062,-0.314l-0.061,-0.314l-0.06,-0.316l-0.057,-0.316l-0.057,-0.317l-0.054,-0.317l-0.054,-0.319l-0.052,-0.318l-0.05,-0.32l-0.049,-0.32l-0.047,-0.321l-0.046,-0.322l-0.044,-0.322l-0.043,-0.323l-0.041,-0.323l-0.04,-0.324l-0.038,-0.325l-0.036,-0.325l-0.035,-0.326l-0.034,-0.327l-0.031,-0.327l-0.031,-0.328l-0.029,-0.328l-0.027,-0.329l-0.025,-0.329l-0.024,-0.33l-0.023,-0.331l-0.02,-0.331l-0.02,-0.331l-0.017,-0.333l-0.016,-0.332l-0.015,-0.334l-0.012,-0.333l-0.012,-0.335l-0.009,-0.334l-0.008,-0.336l-0.006,-0.335l-0.005,-0.337l-0.003,-0.336l-0.001,-0.338l0,-0.337l0.002,-0.338l0.004,-0.338l0.005,-0.338l0.007,-0.337l0.009,-0.337l0.01,-0.336l0.012,-0.335l0.013,-0.335l0.015,-0.334l0.017,-0.334l0.018,-0.333l0.02,-0.333l0.022,-0.332l0.023,-0.332l0.024,-0.331l0.027,-0.33l0.028,-0.33l0.029,-0.329l0.031,-0.328l0.033,-0.328l0.034,-0.327l0.035,-0.327l0.038,-0.326l0.039,-0.325l0.04,-0.325l0.042,-0.324l0.043,-0.323l0.045,-0.323l0.046,-0.322l0.048,-0.321l0.05,-0.321l0.051,-0.32l0.052,-0.319l0.054,-0.318l0.056,-0.318l0.057,-0.317l0.058,-0.317l0.06,-0.315l0.061,-0.315l0.063,-0.314l0.065,-0.314l0.065,-0.312l0.068,-0.312l0.068,-0.311l0.07,-0.31l0.072,-0.31l0.073,-0.309l0.074,-0.307l0.076,-0.308l0.077,-0.306l0.079,-0.305l0.08,-0.305l0.081,-0.304l0.083,-0.303l0.085,-0.302l0.085,-0.301l0.087,-0.301l0.089,-0.3l0.089,-0.298l0.091,-0.298l0.093,-0.297l0.094,-0.296l0.095,-0.296l0.097,-0.294l0.098,-0.293l0.099,-0.293l0.1,-0.292l0.102,-0.29l0.104,-0.29l0.104,-0.289l0.106,-0.288l0.107,-0.287l0.109,-0.286l0.109,-0.285l0.112,-0.284l0.112,-0.283l0.114,-0.282l0.115,-0.281l0.116,-0.281l0.117,-0.279l0.119,-0.278l0.12,-0.277l0.121,-0.276l0.123,-0.276l0.124,-0.274l0.125,-0.273l0.126,-0.272l0.128,-0.271l0.128,-0.27l0.13,-0.269l0.132,-0.268l0.132,-0.266l0.134,-0.266l0.134,-0.265l0.137,-0.263l0.137,-0.263l0.138,-0.261l0.14,-0.26l0.141,-0.259l0.142,-0.259l0.143,-0.256l0.144,-0.256l0.146,-0.255l0.146,-0.253l0.148,-0.253l0.149,-0.251l0.15,-0.25l0.151,-0.249l0.153,-0.247l0.153,-0.247l0.155,-0.245l0.156,-0.244l0.157,-0.243l0.158,-0.242l0.159,-0.24l0.16,-0.24l0.161,-0.238l0.163,-0.236l0.163,-0.236l0.165,-0.234l0.166,-0.233l0.167,-0.232l0.167,-0.231l0.169,-0.229l0.17,-0.228l0.171,-0.227l0.172,-0.225l0.174,-0.224l0.174,-0.223l0.175,-0.222l0.176,-0.22l0.178,-0.219l0.178,-0.217l0.179,-0.217l0.181,-0.215l0.181,-0.213l0.183,-0.212l0.074,-0.086l0.109,-0.125l0.185,-0.209l0.185,-0.208l0.187,-0.207l0.187,-0.205l0.189,-0.204l0.189,-0.203l0.19,-0.201l0.192,-0.199l0.192,-0.198l0.194,-0.197l0.194,-0.196l0.195,-0.193l0.196,-0.193l0.197,-0.191l0.198,-0.189l0.199,-0.188l0.2,-0.187l0.201,-0.185l0.202,-0.184l0.203,-0.182l0.203,-0.18l0.205,-0.179l0.205,-0.178l0.206,-0.176l0.207,-0.175l0.208,-0.173l0.209,-0.171l0.21,-0.17l0.211,-0.168l0.211,-0.167l0.213,-0.165l0.213,-0.164l0.214,-0.162l0.215,-0.16l0.216,-0.159l0.217,-0.157l0.217,-0.156l0.218,-0.154l0.22,-0.152l0.219,-0.151l0.221,-0.149l0.222,-0.147l0.222,-0.146l0.223,-0.144l0.224,-0.143l0.225,-0.14l0.226,-0.139l0.226,-0.138l0.227,-0.135l0.228,-0.134l0.229,-0.133l0.229,-0.13l0.23,-0.129l0.231,-0.127l0.232,-0.125l0.232,-0.124l0.233,-0.122l0.234,-0.12l0.234,-0.118l0.236,-0.116l0.236,-0.115l0.236,-0.113l0.238,-0.111l0.238,-0.109l0.238,-0.108l0.24,-0.105l0.24,-0.104l0.241,-0.102l0.241,-0.1l0.242,-0.099l0.243,-0.096l0.244,-0.095l0.244,-0.092l0.244,-0.091l0.246,-0.089l0.246,-0.087l0.246,-0.085l0.247,-0.083l0.248,-0.081l0.248,-0.08l0.249,-0.077l0.25,-0.075l0.25,-0.074l0.251,-0.072l0.251,-0.069l0.252,-0.068l0.253,-0.065l0.252,-0.064l0.254,-0.062l0.254,-0.059l0.255,-0.058l0.255,-0.056l0.255,-0.053l0.257,-0.052l0.256,-0.049l0.257,-0.048l0.258,-0.045l0.258,-0.044l0.259,-0.041l0.259,-0.04l0.259,-0.037l0.26,-0.035l0.261,-0.033l0.261,-0.031l0.261,-0.029l0.262,-0.027l0.262,-0.024l0.263,-0.023l0.263,-0.02l0.263,-0.018l0.264,-0.017l0.264,-0.014l0.265,-0.011l0.265,-0.01l0.136,-0.004l0.129,-0.004l0.266,-0.005l0.266,-0.003l0.266,-0.001l0.273,0.001l0.238,-0.016l0.023,-0.001Z"/></g></g></svg>
@@ -0,0 +1,5 @@
1
+ import { SessionInfo } from '@botfabrik/engine-domain';
2
+ import { WebClientProps } from './index';
3
+ import { SessionInfoClientPayload, SessionInfoUserPayload } from './types';
4
+ declare const createSessionInfo: (socket: SocketIO.Socket, name: string, sessionInfo: SessionInfo<SessionInfoClientPayload, SessionInfoUserPayload>, props: WebClientProps) => () => Promise<SessionInfo<SessionInfoClientPayload, SessionInfoUserPayload>>;
5
+ export default createSessionInfo;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const extractIP_1 = require("./extractIP");
4
+ const extractLocale_1 = require("./extractLocale");
5
+ const index_1 = require("./index");
6
+ const createSessionInfo = (socket, name, sessionInfo, props) => async () => {
7
+ const request = socket.request;
8
+ const querystrings = socket.handshake.query;
9
+ const userId = querystrings.userId;
10
+ const ip = extractIP_1.default(request);
11
+ const client = {
12
+ ...sessionInfo.client,
13
+ name,
14
+ type: index_1.CLIENT_TYPE,
15
+ payload: {
16
+ headers: { ...request.headers, cookie: undefined },
17
+ querystrings: querystrings,
18
+ ip,
19
+ },
20
+ };
21
+ let user = {
22
+ ...sessionInfo.user,
23
+ id: userId,
24
+ displayName: 'Webseiten Besucher',
25
+ locale: extractLocale_1.default(querystrings, request.headers['accept-language']),
26
+ };
27
+ const contexts = sessionInfo.contexts;
28
+ // enhance user infos
29
+ if (props.requestUserInfos) {
30
+ const userInfos = await props.requestUserInfos(querystrings);
31
+ user = Object.assign({}, user, userInfos);
32
+ }
33
+ return { client, user, contexts };
34
+ };
35
+ exports.default = createSessionInfo;
36
+ //# sourceMappingURL=createSessionInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSessionInfo.js","sourceRoot":"","sources":["../src/createSessionInfo.ts"],"names":[],"mappings":";;AACA,2CAAoC;AACpC,mDAA4C;AAC5C,mCAAsD;AAGtD,MAAM,iBAAiB,GAAG,CACtB,MAAuB,EACvB,IAAY,EACZ,WAA0E,EAC1E,KAAqB,EACvB,EAAE,CAAC,KAAK,IAA4E,EAAE;IACpF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,GAAG,mBAAS,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAgD;QACxD,GAAG,WAAW,CAAC,MAAM;QACrB,IAAI;QACJ,IAAI,EAAE,mBAAW;QACjB,OAAO,EAAE;YACL,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;YAClD,YAAY,EAAE,YAAY;YAC1B,EAAE;SACL;KACJ,CAAC;IACF,IAAI,IAAI,GAA4C;QAChD,GAAG,WAAW,CAAC,IAAI;QACnB,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,oBAAoB;QACjC,MAAM,EAAE,uBAAa,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;KAC1E,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IAEtC,qBAAqB;IACrB,IAAI,KAAK,CAAC,gBAAgB,EAAE;QACxB,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC7D,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;KAC7C;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};