Prophet
a path out of the cloud
http://syncwith.us
jesse@bestpractical.com
You may know me from...
RT (Request Tracker)
Jifty
SVK
Hiveminder
Perl 6
T-shirts
I’ve been hacking on an
open source database
called “Prophet”
It has an API like
Amazon SimpleDB or
Google App Engine’s...
It’s designed for
“team-scale” apps
It’s built for P2P
replication and
disconnected use
But first, a brief
digression...
...about cloud
computing
☁
☔
Living in the cloud
=
sharecropping(佃农)
(That’s bad)
☹
The bad old days:
Pic of sharecroppers
You farmed land you
didn’t own...
...with tools you
couldn’t really afford
You paid for it with
part of your harvest...
It sounded like a
pretty sweet deal...
...until things got bad
(Things always got bad)
(Internet)
(Cloud)
(Internet)
In a bad year, you got
further in debt to
the land owner
So, what does this have
to do with software?
The (more recent)
bad old days:
pic of mainframes
You ran code you didn’t
own on hardware you
didn’t own
Things started to get
better in the 1980s
Pic of PCs
Users started to be
able to make choices
about computing...
They weren’t all rosy
Pic of BSOD
Sometimes new
versions of software
broke things...
...leaving you locked in
to old versions
pic of win 31?
Things got ‘better’
rms
che
Now, things are getting
worse again...
What happens when
your favorite service
goes down?
pic of twitter being
down
...or stops accepting
new signups?
...or starts making
arbitrary choices about
what’s ‘safe’ content?
...or breaks
You don’t own the
services you use
You probably don’t
even have a contract
When a service
provider cuts you off,
you lose
Not so secret shame:
I still need the cloud
My calendar lives at
google.com
I make a Web 2.0 todo
list service called
Hiveminder.com
pic of hiveminder
☣ Using hosted apps
is going to hurt you! ☣
What about Google
Gears,Adobe Air, etc?
Great. now you can use
your word processer
while you’re offline!
Pic of wordperfect
Real offline apps
should not need servers
Real offline apps
should sync like you do
Back to that
database thing...
JesseVincent
Chia-liang Kao
We work together
CL lives in Taipei
Jesse lives in Boston
Sometimes we need
to work face to face
TPE - BOS:
TPE - HNL:
BOS - HNL:
9410 mi
5,095 mi
5,069 mi
Step 1: Go to Hawaii for “work”
Step 2: ???
Step 3: Prophet!
Our Plan
The Plan Backfired
We were there for 8 days
We wrote 8000 lines of Perl
We figured out step 2
Step 2:
Build a Disconnected
Syncable Database
Fallacies of Distributed Computing
1.The network is reliable.
2. Latency is zero.
3. Bandwidth is infinite.
4.The network is secure.
5.Topology doesn't change.
6.There is one administrator.
7.Transport cost is zero.
8.The network is homogeneous.
A grounded, peer to peer
replicated, disconnected,
versioned, property
database with self-healing
conflict resolution
Prophet
What do all those
buzzwords mean?
grounded
Runs here
grounded
Not here
grounded
Runs at the edge
Doesn’t need to run in the cloud
Syncs with services you already use
(Adaptors talk to “Foreign Replicas”)
Update any replica
Pull from any replica
Push to any replica
Publish a replica
Changes will propagate
peer-to-peer replicated
Real-time replication is hard to scale
It only “works” with constant connectivity
I don’t have constant connectivity
Neither do you
Prophet sync can happen whenever
disconnected
Every update is recorded as a change set
Change sets don’t lose any data
(so you can use them to go backwards)
All history is introspectable
Replication just replays changesets
versioned
Atomic operations
CREATE, READ, UPDATE, DELETE, SEARCH
Record types can have optional validation
and canonicalization
Records of the same type do not need to
have the same properties
Add and remove properties at will
property database
Remembers all conflict resolutions
Syncs all resolutions with your peers
Detects identical conflicts
Uses your peers’ resolutions to “vote” for
the winner of a conflict
self-healing
conflict resolution
Working with Prophet
RESTy API
GET /records.json
GET /records/Cars.json
GET /records/Cars/716499-5F9-4AC4-827.json
GET /records/Cars/716499-5F9-4AC4-827/wheels.json
POST /records/Cars.json
POST /records/Cars/716499-5F9-4AC4-827.json
POST /records/Cars/716499-5F9-4AC4-827/wheels.json
RESTy API
Yes, we should be using PUT and DELETE
(or just provide an OpenRESTY adaptor)
Yes, you can have a commit bit and
help us fix it :)
Native API
(Yes, the core is Perl.)
my $cli = Prophet::CLI->new();
my $cxn = $cli->app_handle->handle;
my $record = Prophet::Record->new( handle => $cxn, type => 'Person' );
my $uuid = $record->create( props => { name => 'Jesse', age => 31 } );
$record->set_prop( name => 'age', value => 32 );
my $people = Prophet::Collection->new( handle => $cxn, type => 'Person' );
$people->matching( sub { shift->prop('species') ne 'cat' } );
What could you build
with Prophet?
A bug tracker: “simple defects”
•id. Status, Summary
•(Arbitrary other properties too)
•History
•Comments
•Attachments
sd
Initialize
./bin/sd init
./bin/sd ticket create --
summary="Can't sync sd with Google Code"
status=new
Created ticket 5 (93BF979E-08C1-11DD-94C3-D4B1FCEE7EC4)
Create
./bin/sd ticket search --regex publish
29 } new the online help doesn't describe publish
34 } new publish a static html view of records
35 } new publish should create a static rss file
List and Search
./bin/sd ticket update
--uuid 93BF979E-08C1-11DD-94C3-D4B1FCEE7EC4
-- status=resolved
Updates
Bugs on my laptop
aren’t interesting.
Jesse
sd publish --to fsck.com:public_html/sd/
CL
sd clone --from http://my.com/~jesse/sd
Sync!
Jesse
sd server
CL
sd pull --local
Hackathon mode!
My project has a bug tracker
Actually, mine use two:
• RT
• hiveminder.com
My project has a bug tracker
Foreign Replicas
Prophet makes Foreign Replicas easy
SD gets them "for free"
(Using only the public REST API)
It took an afternoon
Mirror an RT instance into SD
Share it with your peers using prophet
Sync changes back from your peers to RT
Supports Comments and Attachments
Wrote an RT Replica for SD

Prophet - Beijing Perl Workshop

",o=o.removeChild(o.firstChild);break;case"select":o="string"==typeof r.is?i.createElement("select",{is:r.is}):i.createElement("select"),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o="string"==typeof r.is?i.createElement(a,{is:r.is}):i.createElement(a)}}o[eL]=t,o[eD]=r;e:for(i=t.child;null!==i;){if(5===i.tag||6===i.tag)o.appendChild(i.stateNode);else if(4!==i.tag&&27!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}switch(t.stateNode=o,ud(o,a,r),a){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break;case"img":r=!0;break;default:r=!1}r&&iV(t)}}return iZ(t),iQ(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&iV(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(s(166));if(e=G.current,rO(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(a=rw))switch(a.tag){case 27:case 5:r=a.memoizedProps}e[eL]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||us(e.nodeValue,n)))||rP(t,!0)}else(e=uh(e).createTextNode(r))[eL]=t,t.stateNode=e}return iZ(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rO(t),null!==n){if(null===e){if(!r)throw Error(s(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(s(557));e[eL]=t}else rL(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;iZ(t),e=!1}else n=rD(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return aH(t),t;return aH(t),null}if(0!=(128&t.flags))throw Error(s(558))}return iZ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(a=rO(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(s(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(s(317));a[eL]=t}else rL(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;iZ(t),a=!1}else a=rD(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a){if(256&t.flags)return aH(t),t;return aH(t),null}}if(aH(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,a=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(a=r.alternate.memoizedState.cachePool.pool),o=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),iK(t,t.updateQueue),iZ(t),null;case 4:return Y(),null===e&&s9(t.stateNode.containerInfo),iZ(t),null;case 10:return rj(t.type),iZ(t),null;case 19:if(F(aG),null===(r=t.memoizedState))return iZ(t),null;if(a=0!=(128&t.flags),null===(o=r.rendering))if(a)iJ(r,!1);else{if(0!==lq||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(o=aq(e))){for(t.flags|=128,iJ(r,!1),t.updateQueue=e=o.updateQueue,iK(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rn(n,e),n=n.sibling;return j(aG,1&aG.current|2),rN&&rb(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&eo()>l2&&(t.flags|=128,a=!0,iJ(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=aq(o))){if(t.flags|=128,a=!0,t.updateQueue=e=e.updateQueue,iK(t,e),iJ(r,!0),null===r.tail&&"hidden"===r.tailMode&&!o.alternate&&!rN)return iZ(t),null}else 2*eo()-r.renderingStartTime>l2&&0x20000000!==n&&(t.flags|=128,a=!0,iJ(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(null!==(e=r.last)?e.sibling=o:t.child=o,r.last=o)}if(null!==r.tail)return e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=eo(),e.sibling=null,n=aG.current,j(aG,a?1&n|2:1&n),rN&&rb(t,r.treeForkCount),e;return iZ(t),null;case 22:case 23:return aH(t),aM(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(iZ(t),6&t.subtreeFlags&&(t.flags|=8192)):iZ(t),null!==(n=t.updateQueue)&&iK(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&F(r9),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rj(rZ),iZ(t),null;case 25:case 30:return null}throw Error(s(156,t.tag))}(t.alternate,t,lG);if(null!==n){lU=n;return}if(null!==(t=t.sibling)){lU=t;return}lU=t=e}while(null!==t)0===lq&&(lq=5)}function sT(e,t){do{var n=function(e,t){switch(rE(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rj(rZ),Y(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return Q(t),null;case 31:if(null!==t.memoizedState){if(aH(t),null===t.alternate)throw Error(s(340));rL()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(aH(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(s(340));rL()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return F(aG),null;case 4:return Y(),null;case 10:return rj(t.type),null;case 22:case 23:return aH(t),aM(),null!==e&&F(r9),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rj(rZ),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,lU=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){lU=e;return}lU=e=n}while(null!==e)lq=6,lU=null}function sw(e,t,n,r,a,o,i,l,u){e.cancelPendingCommit=null;do sC();while(0!==l8)if(0!=(6&lD))throw Error(s(327));if(null!==t){if(t===e.current)throw Error(s(177));if(!function(e,t,n,r,a,o){var i=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var l=e.entanglements,s=e.expirationTimes,u=e.hiddenUpdates;for(n=i&~n;0g&&(i=g,g=h,h=i);var y=nx(l,h),v=nx(l,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=d.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(d=[],p=l;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof l.focus&&l.focus(),l=0;ln?32:n,L.T=null,n=se,se=null;var o=l5,i=l9;if(l8=0,l6=l5=null,l9=0,0!=(6&lD))throw Error(s(331));var l=lD;if(lD|=4,lI(o.current),lw(o,o.current,i,n),lD=l,sq(0,!1),ep&&"function"==typeof ep.onPostCommitFiberRoot)try{ep.onPostCommitFiberRoot(ef,o)}catch(e){}return!0}finally{D.p=a,L.T=r,sR(e,t)}}function sI(e,t,n){t=ru(n,t),t=ig(e.stateNode,t,2),null!==(e=aw(e,t,2))&&(ek(e,2),sG(e))}function sA(e,t,n){if(3===e.tag)sI(e,e,n);else for(;null!==t;){if(3===t.tag){sI(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===l4||!l4.has(r))){e=ru(n,e),null!==(r=aw(t,n=iy(2),2))&&(iv(n,r,t,e),ek(r,2),sG(r));break}}t=t.return}}function sO(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new lL;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(lH=!0,a.add(n),e=sL.bind(null,e,t,n),t.then(e,e))}function sL(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,lM===e&&(lz&n)===n&&(4===lq||3===lq&&(0x3c00000&lz)===lz&&300>eo()-l0?0==(2&lD)&&sf(e,0):lV|=n,lX===lz&&(lX=0)),sG(e)}function sD(e,t){0===t&&(t=eT()),null!==(e=n4(e,t))&&(ek(e,t),sG(e))}function sM(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),sD(e,n)}function sU(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(s(314))}null!==r&&r.delete(t),sD(e,n)}var sz=null,sB=null,sF=!1,sj=!1,s$=!1,sH=0;function sG(e){e!==sB&&null===e.next&&(null===sB?sz=sB=e:sB=sB.next=e),sj=!0,sF||(sF=!0,uT(function(){0!=(6&lD)?et(el,sW):sY()}))}function sq(e,t){if(!s$&&sj){s$=!0;do for(var n=!1,r=sz;null!==r;){if(!t)if(0!==e){var a=r.pendingLanes;if(0===a)var o=0;else{var i=r.suspendedLanes,l=r.pingedLanes;o=0xc000095&(o=(1<<31-em(42|e)+1)-1&(a&~(i&~l)))?0xc000095&o|1:o?2|o:0}0!==o&&(n=!0,sX(r,o))}else o=lz,0==(3&(o=eS(r,r===lM?o:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||eE(r,o)||(n=!0,sX(r,o));r=r.next}while(n)s$=!1}}function sW(){sY()}function sY(){sj=sF=!1;var e,t=0;0===sH||((e=window.event)&&"popstate"===e.type?e===ub||(ub=e,0):(ub=null,1))||(t=sH);for(var n=eo(),r=null,a=sz;null!==a;){var o=a.next,i=sV(a,n);0===i?(a.next=null,null===r?sz=o:r.next=o,null===o&&(sB=r)):(r=a,(0!==t||0!=(3&i))&&(sj=!0)),a=o}0!==l8&&5!==l8||sq(t,!1),0!==sH&&(sH=0)}function sV(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=-0x3c00001&e.pendingLanes;0 title"):null)}function u3(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var u4=0;function u8(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages)){if(this.stylesheets)u6(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var u5=null;function u6(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,u5=new Map,t.forEach(u9,e),u5=null,u8.call(e))}function u9(e,t){if(!(4&t.state.loading)){var n=u5.get(e);if(n)var r=n.get(null);else{n=new Map,u5.set(e,n);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;otypeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cU=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cU.isDisabled&&cU.supportsFiber)try{ef=cU.inject({bundleType:0,version:"19.2.5",rendererPackageName:"react-dom",currentDispatcherRef:L,reconcilerVersion:"19.2.5"}),ep=cU}catch(e){}}n.createRoot=function(e,t){if(!u(e))throw Error(s(299));var n=!1,r="",a=ic,o=id,i=ip;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onUncaughtError&&(a=t.onUncaughtError),void 0!==t.onCaughtError&&(o=t.onCaughtError),void 0!==t.onRecoverableError&&(i=t.onRecoverableError)),t=ct(e,1,!1,null,null,n,r,null,a,o,i,cO),e[eM]=t.current,s9(e),new cL(t)},n.hydrateRoot=function(e,t,n){if(!u(e))throw Error(s(299));var r,a=!1,o="",i=ic,l=id,c=ip,d=null;return null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(o=n.identifierPrefix),void 0!==n.onUncaughtError&&(i=n.onUncaughtError),void 0!==n.onCaughtError&&(l=n.onCaughtError),void 0!==n.onRecoverableError&&(c=n.onRecoverableError),void 0!==n.formState&&(d=n.formState)),(t=ct(e,1,!0,t,null!=n?n:null,a,o,d,i,l,c,cO)).context=(r=null,n6),n=t.current,(o=aT(a=eC(a=sa()))).callback=null,aw(n,o,a),n=a,t.current.lanes=n,ek(t,n),sG(t),e[eM]=t.current,s9(e),new cD(t)},n.version="19.2.5"},3362,(e,t,n)=>{"use strict";!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),t.exports=e.r(855852)},645419,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"Portal",{enumerable:!0,get:function(){return o}});let r=e.r(687652),a=e.r(615882),o=({children:e,type:t})=>{let[n,o]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let e=document.createElement(t);return document.body.appendChild(e),o(e),()=>{document.body.removeChild(e)}},[t]),n?(0,a.createPortal)(e,n):null};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},782587,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={default:function(){return l},isEqualNode:function(){return i}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let o=e.r(310849);function i(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){let n=t.getAttribute("nonce");if(n&&!e.getAttribute("nonce")){let r=t.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=n,n===e.nonce&&e.isEqualNode(r)}}return e.isEqualNode(t)}function l(){return{mountedInstances:new Set,updateHead:e=>{let t={};e.forEach(e=>{if("link"===e.type&&e.props["data-optimized-fonts"])if(document.querySelector(`style[data-href="${e.props["data-href"]}"]`))return;else e.props.href=e.props["data-href"],e.props["data-href"]=void 0;let n=t[e.type]||[];n.push(e),t[e.type]=n});let n=t.title?t.title[0]:null,r="";if(n){let{children:e}=n.props;r="string"==typeof e?e:Array.isArray(e)?e.join(""):""}r!==document.title&&(document.title=r),["meta","base","link","style","script"].forEach(e=>{!function(e,t){let n=document.querySelector("head");if(!n)return;let r=new Set(n.querySelectorAll(`${e}[data-next-head]`));if("meta"===e){let e=n.querySelector("meta[charset]");null!==e&&r.add(e)}let a=[];for(let e=0;e{"use strict";t.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},683969,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return l},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return s},UNDERSCORE_NOT_FOUND_ROUTE:function(){return o},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return i}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let o="/_not-found",i=`${o}/page`,l="/_global-error",s=`${l}/page`},324080,(e,t,n)=>{"use strict";var r,a=e.i(710931);Object.defineProperty(n,"__esModule",{value:!0});var o={APP_CLIENT_INTERNALS:function(){return en},APP_PATHS_MANIFEST:function(){return _},APP_PATH_ROUTES_MANIFEST:function(){return S},AdapterOutputType:function(){return d},BARREL_OPTIMIZATION_PREFIX:function(){return Y},BLOCKED_PAGES:function(){return $},BUILD_ID_FILE:function(){return j},BUILD_MANIFEST:function(){return E},CLIENT_PUBLIC_FILES_PATH:function(){return H},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return G},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return ee},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return et},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return eo},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return ei},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return er},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ea},COMPILER_INDEXES:function(){return c},COMPILER_NAMES:function(){return u},CONFIG_FILES:function(){return F},DEFAULT_RUNTIME_WEBPACK:function(){return el},DEFAULT_SANS_SERIF_FONT:function(){return ef},DEFAULT_SERIF_FONT:function(){return ed},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return U},DEV_CLIENT_PAGES_MANIFEST:function(){return O},DYNAMIC_CSS_MANIFEST:function(){return Z},EDGE_RUNTIME_WEBPACK:function(){return es},EDGE_UNSUPPORTED_NODE_APIS:function(){return ey},EXPORT_DETAIL:function(){return x},EXPORT_MARKER:function(){return N},FUNCTIONS_CONFIG_MANIFEST:function(){return T},IMAGES_MANIFEST:function(){return I},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return J},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return L},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return K},MODERN_BROWSERSLIST_TARGET:function(){return l.default},NEXT_BUILTIN_DOCUMENT:function(){return W},NEXT_FONT_MANIFEST:function(){return k},PAGES_MANIFEST:function(){return b},PHASE_ANALYZE:function(){return p},PHASE_DEVELOPMENT_SERVER:function(){return g},PHASE_EXPORT:function(){return f},PHASE_INFO:function(){return v},PHASE_PRODUCTION_BUILD:function(){return m},PHASE_PRODUCTION_SERVER:function(){return h},PHASE_TEST:function(){return y},PREFETCH_HINTS:function(){return C},PRERENDER_MANIFEST:function(){return R},REACT_LOADABLE_MANIFEST:function(){return z},ROUTES_MANIFEST:function(){return P},RSC_MODULE_TYPES:function(){return eg},SERVER_DIRECTORY:function(){return B},SERVER_FILES_MANIFEST:function(){return A},SERVER_PROPS_ID:function(){return ec},SERVER_REFERENCE_MANIFEST:function(){return Q},STATIC_PROPS_ID:function(){return eu},STATIC_STATUS_PAGES:function(){return ep},STRING_LITERAL_DROP_BUNDLE:function(){return q},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return w},SYSTEM_ENTRYPOINTS:function(){return ev},TRACE_OUTPUT_VERSION:function(){return em},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return M},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return D},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return eh},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY}};for(var i in o)Object.defineProperty(n,i,{enumerable:!0,get:o[i]});let l=e.r(2879)._(e.r(425862)),s=e.r(683969),u={client:"client",server:"server",edgeServer:"edge-server"},c={[u.client]:0,[u.server]:1,[u.edgeServer]:2};var d=((r={}).PAGES="PAGES",r.PAGES_API="PAGES_API",r.APP_PAGE="APP_PAGE",r.APP_ROUTE="APP_ROUTE",r.PRERENDER="PRERENDER",r.STATIC_FILE="STATIC_FILE",r.MIDDLEWARE="MIDDLEWARE",r);let f="phase-export",p="phase-analyze",m="phase-production-build",h="phase-production-server",g="phase-development-server",y="phase-test",v="phase-info",b="pages-manifest.json",_="app-paths-manifest.json",S="app-path-routes-manifest.json",E="build-manifest.json",T="functions-config-manifest.json",w="subresource-integrity-manifest",k="next-font-manifest",N="export-marker.json",x="export-detail.json",R="prerender-manifest.json",C="prefetch-hints.json",P="routes-manifest.json",I="images-manifest.json",A="required-server-files",O="_devPagesManifest.json",L="middleware-manifest.json",D="_clientMiddlewareManifest.js",M="client-build-manifest.json",U="_devMiddlewareManifest.json",z="react-loadable-manifest.json",B="server",F=["next.config.js","next.config.mjs","next.config.ts",...a.default?.features?.typescript?["next.config.mts"]:[]],j="BUILD_ID",$=["/_document","/_app","/_error"],H="public",G="static",q="__NEXT_DROP_CLIENT_FILE__",W="__NEXT_BUILTIN_DOCUMENT__",Y="__barrel_optimize__",V="client-reference-manifest",Q="server-reference-manifest",X="middleware-build-manifest",K="middleware-react-loadable-manifest",J="interception-route-rewrite-manifest",Z="dynamic-css-manifest",ee="main",et=`${ee}-app`,en="app-pages-internals",er="react-refresh",ea="webpack",eo="polyfills",ei=Symbol(eo),el="webpack-runtime",es="edge-runtime-webpack",eu="__N_SSG",ec="__N_SSP",ed={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},ef={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},ep=["/500"],em=1,eh=6e3,eg={client:"client",server:"server"},ey=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ev=new Set([ee,er,et]);("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},212547,(e,t,n)=>{"use strict";var r=e.i(710931);Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return m}});let a=e.r(2879),o=e.r(417572),i=e.r(337991),l=a._(e.r(332806)),s=e.r(441526),u=e.r(321238),c=e.r(183530),d=e.r(320989),f=e.r(381361);e.r(324080);let p=e.r(330681);class m{constructor(e,t){this.routeLoader=(0,f.createRouteLoader)(t),this.buildId=e,this.assetPrefix=t,this.promisedSsgManifest=new Promise(e=>{window.__SSG_MANIFEST?e(window.__SSG_MANIFEST):window.__SSG_MANIFEST_CB=()=>{e(window.__SSG_MANIFEST)}})}getPageList(){return(0,f.getClientBuildManifest)().then(e=>e.sortedPages)}getMiddleware(){if(r.default.env.__NEXT_MIDDLEWARE_MATCHERS){let e=r.default.env.__NEXT_MIDDLEWARE_MATCHERS;return window.__MIDDLEWARE_MATCHERS=e||void 0,window.__MIDDLEWARE_MATCHERS}if(window.__MIDDLEWARE_MATCHERS)return window.__MIDDLEWARE_MATCHERS;{let e=new Promise(e=>{let t=self.__MIDDLEWARE_MATCHERS_CB;self.__MIDDLEWARE_MATCHERS_CB=()=>{e(self.__MIDDLEWARE_MATCHERS),t&&t()}});return(0,p.resolvePromiseWithTimeout)(e,(0,f.markAssetError)(Object.defineProperty(Error("Failed to load client middleware manifest"),"__NEXT_ERROR_CODE",{value:"E980",enumerable:!1,configurable:!0})),void 0)}}getDataHref(e){var t;let n,{asPath:r,href:a,locale:f}=e,{pathname:p,query:m,search:h}=(0,c.parseRelativeUrl)(a),{pathname:g}=(0,c.parseRelativeUrl)(r),y=(0,d.removeTrailingSlash)(p);if("/"!==y[0])throw Object.defineProperty(Error(`Route name should start with a "/", got "${y}"`),"__NEXT_ERROR_CODE",{value:"E303",enumerable:!1,configurable:!0});return t=e.skipInterpolation?g:(0,u.isDynamicRoute)(y)?(0,i.interpolateAs)(p,g,m).result:y,n=(0,l.default)((0,d.removeTrailingSlash)((0,s.addLocale)(t,f)),".json"),(0,o.addBasePath)(`/_next/data/${this.buildId}${n}${h}`,!0)}_isSsg(e){return this.promisedSsgManifest.then(t=>t.has(e))}loadPage(e){return this.routeLoader.loadRoute(e).then(e=>{if("component"in e)return{page:e.component,mod:e.exports,styleSheets:e.styles.map(e=>({href:e.href,text:e.content}))};throw e.error})}prefetch(e){return this.routeLoader.prefetch(e)}}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},402321,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={RouteAnnouncer:function(){return c},default:function(){return d}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let o=e.r(2879),i=e.r(318008),l=o._(e.r(687652)),s=e.r(812444),u={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",top:0,width:"1px",whiteSpace:"nowrap",wordWrap:"normal"},c=()=>{let{asPath:e}=(0,s.useRouter)(),[t,n]=l.default.useState(""),r=l.default.useRef(e);return l.default.useEffect(()=>{if(r.current!==e)if(r.current=e,document.title)n(document.title);else{let t=document.querySelector("h1");n((t?.innerText??t?.textContent)||e)}},[e]),(0,i.jsx)("p",{"aria-live":"assertive",id:"__next-route-announcer__",role:"alert",style:u,children:t})},d=c;("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},543127,(e,t,n)=>{"use strict";function r(e){return new URL(e,"http://n").searchParams}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"asPathToSearchParams",{enumerable:!0,get:function(){return r}})},609896,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={PathnameContextProviderAdapter:function(){return h},adaptForAppRouterInstance:function(){return f},adaptForPathParams:function(){return m},adaptForSearchParams:function(){return p}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let o=e.r(887602),i=e.r(318008),l=o._(e.r(687652)),s=e.r(153400),u=e.r(315500),c=e.r(543127),d=e.r(948805);function f(e){return{back(){e.back()},forward(){e.forward()},refresh(){e.reload()},hmrRefresh(){},push(t,{scroll:n}={}){e.push(t,void 0,{scroll:n})},replace(t,{scroll:n}={}){e.replace(t,void 0,{scroll:n})},prefetch(t){e.prefetch(t)}}}function p(e){return e.isReady&&e.query?(0,c.asPathToSearchParams)(e.asPath):new URLSearchParams}function m(e){if(!e.isReady||!e.query)return null;let t={};for(let n of Object.keys((0,d.getRouteRegex)(e.pathname).groups))t[n]=e.query[n];return t}function h({children:e,router:t,...n}){let r=(0,l.useRef)(n.isAutoExport),a=(0,l.useMemo)(()=>{let e,n=r.current;if(n&&(r.current=!1),(0,u.isDynamicRoute)(t.pathname)&&(t.isFallback||n&&!t.isReady))return null;try{e=new URL(t.asPath,"http://f")}catch(e){return"/"}return e.pathname},[t.asPath,t.isFallback,t.isReady,t.pathname]);return(0,i.jsx)(s.PathnameContext.Provider,{value:a,children:e})}},458627,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"reportGlobalError",{enumerable:!0,get:function(){return r}});let r="function"==typeof reportError?reportError:e=>{globalThis.console.error(e)};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},394173,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={isRecoverableError:function(){return c},onRecoverableError:function(){return d}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let o=e.r(2879),i=e.r(456737),l=o._(e.r(646286)),s=e.r(458627),u=new WeakSet;function c(e){return u.has(e)}let d=e=>{let t=(0,l.default)(e)&&"cause"in e?e.cause:e;(0,i.isBailoutToCSRError)(t)||(0,s.reportGlobalError)(t)};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},765161,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return o}});let r=e.r(2879)._(e.r(321774));class a{constructor(e,t,n){this.name=e,this.attributes=t.attributes??{},this.startTime=t.startTime??Date.now(),this.onSpanEnd=n,this.state={state:"inprogress"}}end(e){if("ended"===this.state.state)throw Object.defineProperty(Error("Span has already ended"),"__NEXT_ERROR_CODE",{value:"E17",enumerable:!1,configurable:!0});this.state={state:"ended",endTime:e??Date.now()},this.onSpanEnd(this)}}let o=new class{startSpan(e,t){return new a(e,t,this.handleSpanEnd)}onSpanEnd(e){return this._emitter.on("spanend",e),()=>{this._emitter.off("spanend",e)}}constructor(){this._emitter=(0,r.default)(),this.handleSpanEnd=e=>{this._emitter.emit("spanend",e)}}};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},778414,(e,t,n)=>{"use strict";let r,a,o,i,l,s,u,c,d,f,p,m;Object.defineProperty(n,"__esModule",{value:!0});var h={emitter:function(){return $},hydrate:function(){return ef},initialize:function(){return q},router:function(){return r},version:function(){return j}};for(var g in h)Object.defineProperty(n,g,{enumerable:!0,get:h[g]});let y=e.r(2879),v=e.r(318008);e.r(465906);let b=y._(e.r(687652)),_=y._(e.r(3362)),S=e.r(85373),E=y._(e.r(321774)),T=e.r(655337),w=e.r(502311),k=e.r(321238),N=e.r(220877),x=e.r(8929),R=e.r(645419),C=y._(e.r(782587)),P=y._(e.r(212547)),I=e.r(402321),A=e.r(812444),O=e.r(646286),L=e.r(646403),D=e.r(155659),M=e.r(346108),U=e.r(914463),z=e.r(609896),B=e.r(153400),F=e.r(394173);e.r(765161),e.r(592707);let j="16.2.3",$=(0,E.default)(),H=!1;class G extends b.default.Component{componentDidCatch(e,t){this.props.fn(e,t)}componentDidMount(){this.scrollToHash(),r.isSsr&&(a.isFallback||a.nextExport&&((0,k.isDynamicRoute)(r.pathname)||location.search||H)||a.props&&a.props.__N_SSG&&(location.search||H))&&r.replace(r.pathname+"?"+String((0,N.assign)((0,N.urlQueryToSearchParams)(r.query),new URLSearchParams(location.search))),o,{_h:1,shallow:!a.isFallback&&!H}).catch(e=>{if(!e.cancelled)throw e})}componentDidUpdate(){this.scrollToHash()}scrollToHash(){let{hash:e}=location;if(!(e=e&&e.substring(1)))return;let t=document.getElementById(e);t&&setTimeout(()=>t.scrollIntoView(),0)}render(){return this.props.children}}async function q(t={}){a=JSON.parse(document.getElementById("__NEXT_DATA__").textContent),window.__NEXT_DATA__=a,m=a.defaultLocale;let n=a.assetPrefix||"";self.__next_set_public_path__(`${n}/_next/`),o=(0,x.getURL)(),(0,M.hasBasePath)(o)&&(o=(0,D.removeBasePath)(o));{let{normalizeLocalePath:t}=e.r(47776),{detectDomainLocale:n}=e.r(890020),{parseRelativeUrl:r}=e.r(183530),{formatUrl:i}=e.r(439837);if(a.locales){let e=r(o),l=t(e.pathname,a.locales);l.detectedLocale?(e.pathname=l.pathname,o=i(e)):m=a.locale;let s=n([{domain:"www.slideshare.net",defaultLocale:"en"},{domain:"de.slideshare.net",defaultLocale:"de"},{domain:"es.slideshare.net",defaultLocale:"es"},{domain:"pt.slideshare.net",defaultLocale:"pt"},{domain:"fr.slideshare.net",defaultLocale:"fr"}],window.location.hostname);s&&(m=s.defaultLocale)}}if(a.scriptLoader){let{initScriptLoader:t}=e.r(23331);t(a.scriptLoader)}i=new P.default(a.buildId,n);let u=([e,t])=>i.routeLoader.onEntrypoint(e,t);return window.__NEXT_P&&window.__NEXT_P.map(e=>setTimeout(()=>u(e),0)),window.__NEXT_P=[],window.__NEXT_P.push=u,(s=(0,C.default)()).getIsSsr=()=>r.isSsr,l=document.getElementById("__next"),{assetPrefix:n}}function W(e,t){return(0,v.jsx)(e,{...t})}function Y({children:e}){let t=b.default.useMemo(()=>(0,z.adaptForAppRouterInstance)(r),[]);return(0,v.jsx)(G,{fn:e=>Q({App:d,err:e}).catch(e=>console.error("Error rendering page: ",e)),children:(0,v.jsx)(U.AppRouterContext.Provider,{value:t,children:(0,v.jsx)(B.SearchParamsContext.Provider,{value:(0,z.adaptForSearchParams)(r),children:(0,v.jsx)(z.PathnameContextProviderAdapter,{router:r,isAutoExport:self.__NEXT_DATA__.autoExport??!1,children:(0,v.jsx)(B.PathParamsContext.Provider,{value:(0,z.adaptForPathParams)(r),children:(0,v.jsx)(T.RouterContext.Provider,{value:(0,A.makePublicRouterInstance)(r),children:(0,v.jsx)(S.HeadManagerContext.Provider,{value:s,children:(0,v.jsx)(L.ImageConfigContext.Provider,{value:{deviceSizes:[],imageSizes:[],qualities:[75],path:"/_next/image/",loader:"custom",dangerouslyAllowSVG:!1,unoptimized:!1},children:e})})})})})})})})}let V=e=>t=>{let n={...t,Component:p,err:a.err,router:r};return(0,v.jsx)(Y,{children:W(e,n)})};function Q(t){let{App:n,err:l}=t;return console.error(l),console.error("A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred"),i.loadPage("/_error").then(({page:r,styleSheets:a})=>u?.Component===r?e.A(163192).then(r=>e.A(186384).then(e=>(t.App=n=e.default,r))).then(e=>({ErrorComponent:e.default,styleSheets:[]})):{ErrorComponent:r,styleSheets:a}).then(({ErrorComponent:e,styleSheets:i})=>{let s=V(n),u={Component:e,AppTree:s,router:r,ctx:{err:l,pathname:a.page,query:a.query,asPath:o,AppTree:s}};return Promise.resolve(t.props?.err?t.props:(0,x.loadGetInitialProps)(n,u)).then(n=>ec({...t,err:l,Component:e,styleSheets:i,props:n}))})}function X({callback:e}){return b.default.useLayoutEffect(()=>e(),[e]),null}let K="beforeRender",J="afterRender",Z="afterHydrate",ee="routeChange",et="Next.js-hydration",en="Next.js-route-change-to-render",er="Next.js-render",ea=null,eo=!0;function ei(){[K,Z,J,ee].forEach(e=>performance.clearMarks(e))}function el(){x.ST&&(performance.mark(Z),performance.getEntriesByName(K,"mark").length&&(performance.measure("Next.js-before-hydration","navigationStart",K),performance.measure(et,K,Z)),f&&performance.getEntriesByName(et).forEach(f),ei())}function es(){if(!x.ST)return;performance.mark(J);let e=performance.getEntriesByName(ee,"mark");e.length&&(performance.getEntriesByName(K,"mark").length&&(performance.measure(en,e[0].name,K),performance.measure(er,K,J),f&&(performance.getEntriesByName(er).forEach(f),performance.getEntriesByName(en).forEach(f))),ei(),[en,er].forEach(e=>performance.clearMeasures(e)))}function eu({callbacks:e,children:t}){return b.default.useLayoutEffect(()=>e.forEach(e=>e()),[e]),t}function ec(e){var t,n;let a,o,{App:i,Component:s,props:d,err:f}=e,p="initial"in e?void 0:e.styleSheets;s=s||u.Component;let m={...d=d||u.props,Component:s,err:f,router:r};u=m;let h=new Promise((e,t)=>{c&&c(),o=()=>{c=null,e()},c=()=>{c=null;let e=Object.defineProperty(Error("Cancel rendering route"),"__NEXT_ERROR_CODE",{value:"E503",enumerable:!1,configurable:!0});e.cancelled=!0,t(e)}});function g(){o()}!function(){let e;if(!p)return;let t=new Set((e=document.querySelectorAll("style[data-n-href]"),[].slice.call(e)).map(e=>e.getAttribute("data-n-href"))),n=document.querySelector("noscript[data-n-css]"),r=n?.getAttribute("data-n-css");p.forEach(({href:e,text:n})=>{if(!t.has(e)){let t=document.createElement("style");t.setAttribute("data-n-href",e),t.setAttribute("media","x"),r&&t.setAttribute("nonce",r),document.head.appendChild(t),t.appendChild(document.createTextNode(n))}})}();let y=(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(X,{callback:function(){if(e.scroll){let{x:t,y:n}=e.scroll;(0,w.disableSmoothScrollDuringRouteTransition)(()=>{window.scrollTo(t,n)})}}}),(0,v.jsxs)(Y,{children:[W(i,m),(0,v.jsx)(R.Portal,{type:"next-route-announcer",children:(0,v.jsx)(I.RouteAnnouncer,{})})]})]});return t=l,n=e=>(0,v.jsx)(eu,{callbacks:[e,g],children:y}),x.ST&&performance.mark(K),a=n(eo?el:es),ea?(0,b.default.startTransition)(()=>{ea.render(a)}):(ea=_.default.hydrateRoot(t,a,{onRecoverableError:F.onRecoverableError}),eo=!1),h}async function ed(e){if(e.err&&(void 0===e.Component||!e.isHydratePass))return void await Q(e);try{await ec(e)}catch(n){let t=(0,O.getProperError)(n);if(t.cancelled)throw t;await Q({...e,err:t})}}async function ef(e){let t=a.err;try{let e=await i.routeLoader.whenEntrypoint("/_app");if("error"in e)throw e.error;let{component:t,exports:n}=e;d=t,n&&n.reportWebVitals&&(f=({id:e,name:t,startTime:r,value:a,duration:o,entryType:i,entries:l,attribution:s})=>{let u,c=`${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`;l&&l.length&&(u=l[0].startTime);let d={id:e||c,name:t,startTime:r||u,value:null==a?o:a,label:"mark"===i||"measure"===i?"custom":"web-vital"};s&&(d.attribution=s),n.reportWebVitals(d)});let r=await i.routeLoader.whenEntrypoint(a.page);if("error"in r)throw r.error;p=r.component}catch(e){t=(0,O.getProperError)(e)}window.__NEXT_PRELOADREADY&&await window.__NEXT_PRELOADREADY(a.dynamicIds),r=(0,A.createRouter)(a.page,a.query,o,{initialProps:a.props,pageLoader:i,App:d,Component:p,wrapApp:V,err:t,isFallback:!!a.isFallback,subscription:(e,t,n)=>ed(Object.assign({},e,{App:t,scroll:n})),locale:a.locale,locales:a.locales,defaultLocale:m,domainLocales:a.domainLocales,isPreview:a.isPreview}),H=await r._initialMatchesMiddlewarePromise;let n={App:d,initial:!0,Component:p,props:a.props,err:t,isHydratePass:!0};e?.beforeRender&&await e.beforeRender(),ed(n)}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},448911,(e,t,n)=>{"use strict";function r(){return new Promise(e=>{var t;t=function(){for(var t=document.querySelectorAll("[data-next-hide-fouc]"),n=t.length;n--;)t[n].parentNode.removeChild(t[n]);e()},window.requestAnimationFrame&&window.self===window.top?window.requestAnimationFrame(t):window.setTimeout(t)})}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"displayContent",{enumerable:!0,get:function(){return r}}),("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},920090,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),e.r(584733),e.r(770159);let r=e.r(778414),a=e.r(448911);window.next={version:r.version,turbopack:!0,get router(){return r.router},emitter:r.emitter},self.__next_set_public_path__=()=>{},self.__webpack_hash__="",(0,r.initialize)({}).then(()=>(self.__turbopack_load_page_chunks__=(t,n)=>{Promise.all(n.map(t=>e.l(t))).catch(e=>console.error("failed to load chunks for page "+t,e))},(0,r.hydrate)({beforeRender:a.displayContent}))).catch(e=>{console.error("Error was not caught",e)}),("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)}]); //# debugId=50598d22-f811-c932-ce20-1290bdd1641c //# sourceMappingURL=0cn~9pvtnb-n~.js.map