WEBVTT
Kind: captions
Language: en

00:00:00.000 --> 00:00:04.350 align:start position:0%
 
foreign

00:00:04.350 --> 00:00:04.360 align:start position:0%
 
 

00:00:04.360 --> 00:00:13.070 align:start position:0%
 
[Music]

00:00:13.070 --> 00:00:13.080 align:start position:0%
 
 

00:00:13.080 --> 00:00:16.189 align:start position:0%
 
thanks<00:00:13.620><c> all</c><00:00:13.799><c> for</c><00:00:14.160><c> coming</c><00:00:14.340><c> in</c><00:00:14.580><c> today</c><00:00:15.020><c> and</c><00:00:16.020><c> in</c>

00:00:16.189 --> 00:00:16.199 align:start position:0%
thanks all for coming in today and in
 

00:00:16.199 --> 00:00:17.930 align:start position:0%
thanks all for coming in today and in
this<00:00:16.320><c> talk</c><00:00:16.560><c> we</c><00:00:17.039><c> are</c><00:00:17.160><c> going</c><00:00:17.340><c> to</c><00:00:17.460><c> be</c><00:00:17.699><c> talking</c>

00:00:17.930 --> 00:00:17.940 align:start position:0%
this talk we are going to be talking
 

00:00:17.940 --> 00:00:20.390 align:start position:0%
this talk we are going to be talking
about<00:00:18.240><c> how</c><00:00:18.779><c> we</c><00:00:18.900><c> improve</c><00:00:19.320><c> the</c><00:00:19.500><c> performance</c><00:00:19.859><c> of</c>

00:00:20.390 --> 00:00:20.400 align:start position:0%
about how we improve the performance of
 

00:00:20.400 --> 00:00:23.029 align:start position:0%
about how we improve the performance of
probability<00:00:20.880><c> computations</c><00:00:21.359><c> using</c><00:00:22.260><c> rust</c><00:00:22.560><c> and</c>

00:00:23.029 --> 00:00:23.039 align:start position:0%
probability computations using rust and
 

00:00:23.039 --> 00:00:25.310 align:start position:0%
probability computations using rust and
specifically<00:00:23.640><c> how</c><00:00:24.300><c> we</c><00:00:24.480><c> implemented</c><00:00:25.140><c> the</c>

00:00:25.310 --> 00:00:25.320 align:start position:0%
specifically how we implemented the
 

00:00:25.320 --> 00:00:29.410 align:start position:0%
specifically how we implemented the
carobm<00:00:25.920><c> using</c><00:00:26.640><c> rust</c><00:00:26.939><c> so</c><00:00:27.539><c> okay</c><00:00:27.900><c> let's</c><00:00:28.199><c> go</c><00:00:28.439><c> first</c>

00:00:29.410 --> 00:00:29.420 align:start position:0%
carobm using rust so okay let's go first
 

00:00:29.420 --> 00:00:33.229 align:start position:0%
carobm using rust so okay let's go first
I<00:00:30.420><c> want</c><00:00:30.539><c> to</c><00:00:30.720><c> give</c><00:00:31.380><c> a</c><00:00:31.619><c> little</c><00:00:31.800><c> worse</c><00:00:32.340><c> on</c><00:00:32.460><c> who</c><00:00:33.120><c> we</c>

00:00:33.229 --> 00:00:33.239 align:start position:0%
I want to give a little worse on who we
 

00:00:33.239 --> 00:00:35.930 align:start position:0%
I want to give a little worse on who we
are<00:00:33.480><c> we</c><00:00:34.320><c> around</c><00:00:34.500><c> the</c><00:00:34.800><c> class</c><00:00:34.920><c> Lambda</c><00:00:35.520><c> class</c><00:00:35.640><c> is</c>

00:00:35.930 --> 00:00:35.940 align:start position:0%
are we around the class Lambda class is
 

00:00:35.940 --> 00:00:40.250 align:start position:0%
are we around the class Lambda class is
a<00:00:36.239><c> lesson</c><00:00:36.840><c> base</c><00:00:37.140><c> so</c><00:00:37.680><c> for</c><00:00:37.920><c> company</c><00:00:38.420><c> and</c><00:00:39.420><c> it's</c><00:00:39.960><c> in</c>

00:00:40.250 --> 00:00:40.260 align:start position:0%
a lesson base so for company and it's in
 

00:00:40.260 --> 00:00:44.090 align:start position:0%
a lesson base so for company and it's in
the<00:00:40.500><c> industry</c><00:00:40.860><c> a</c><00:00:41.520><c> more</c><00:00:42.300><c> head</c><00:00:42.540><c> interiors</c><00:00:43.100><c> and</c>

00:00:44.090 --> 00:00:44.100 align:start position:0%
the industry a more head interiors and
 

00:00:44.100 --> 00:00:47.810 align:start position:0%
the industry a more head interiors and
yes<00:00:44.399><c> basically</c><00:00:44.879><c> we</c><00:00:45.420><c> love</c><00:00:45.800><c> soybean</c><00:00:46.820><c> difficult</c>

00:00:47.810 --> 00:00:47.820 align:start position:0%
yes basically we love soybean difficult
 

00:00:47.820 --> 00:00:50.150 align:start position:0%
yes basically we love soybean difficult
problems<00:00:48.239><c> so</c><00:00:48.600><c> if</c><00:00:48.899><c> you</c><00:00:49.020><c> if</c><00:00:49.320><c> you</c><00:00:49.440><c> have</c><00:00:49.739><c> any</c>

00:00:50.150 --> 00:00:50.160 align:start position:0%
problems so if you if you have any
 

00:00:50.160 --> 00:00:52.010 align:start position:0%
problems so if you if you have any
problem<00:00:50.399><c> just</c><00:00:50.820><c> give</c><00:00:51.120><c> us</c><00:00:51.300><c> a</c><00:00:51.360><c> call</c>

00:00:52.010 --> 00:00:52.020 align:start position:0%
problem just give us a call
 

00:00:52.020 --> 00:00:54.470 align:start position:0%
problem just give us a call
and<00:00:52.500><c> okay</c><00:00:52.739><c> let's</c><00:00:52.920><c> go</c><00:00:53.160><c> straight</c><00:00:53.520><c> to</c><00:00:53.879><c> to</c><00:00:54.239><c> the</c>

00:00:54.470 --> 00:00:54.480 align:start position:0%
and okay let's go straight to to the
 

00:00:54.480 --> 00:00:55.549 align:start position:0%
and okay let's go straight to to the
talk

00:00:55.549 --> 00:00:55.559 align:start position:0%
talk
 

00:00:55.559 --> 00:00:58.549 align:start position:0%
talk
and<00:00:56.399><c> the</c><00:00:56.820><c> first</c><00:00:56.940><c> thing</c><00:00:57.120><c> I</c><00:00:57.360><c> want</c><00:00:57.600><c> to</c><00:00:57.780><c> start</c><00:00:58.320><c> with</c>

00:00:58.549 --> 00:00:58.559 align:start position:0%
and the first thing I want to start with
 

00:00:58.559 --> 00:01:01.250 align:start position:0%
and the first thing I want to start with
is<00:00:59.100><c> to</c><00:00:59.280><c> give</c><00:00:59.399><c> a</c><00:00:59.579><c> little</c><00:00:59.699><c> bit</c><00:00:59.879><c> of</c><00:01:00.059><c> context</c><00:01:00.420><c> and</c>

00:01:01.250 --> 00:01:01.260 align:start position:0%
is to give a little bit of context and
 

00:01:01.260 --> 00:01:03.889 align:start position:0%
is to give a little bit of context and
talk<00:01:01.500><c> a</c><00:01:01.680><c> little</c><00:01:01.800><c> bit</c><00:01:01.980><c> about</c><00:01:02.219><c> ethereum</c><00:01:02.820><c> and</c><00:01:03.719><c> as</c>

00:01:03.889 --> 00:01:03.899 align:start position:0%
talk a little bit about ethereum and as
 

00:01:03.899 --> 00:01:05.750 align:start position:0%
talk a little bit about ethereum and as
you<00:01:04.019><c> all</c><00:01:04.140><c> may</c><00:01:04.320><c> know</c><00:01:04.500><c> ethereum</c><00:01:05.339><c> is</c><00:01:05.519><c> a</c>

00:01:05.750 --> 00:01:05.760 align:start position:0%
you all may know ethereum is a
 

00:01:05.760 --> 00:01:08.270 align:start position:0%
you all may know ethereum is a
decentralized<00:01:06.420><c> network</c><00:01:06.900><c> meaning</c><00:01:07.740><c> that</c><00:01:08.040><c> when</c>

00:01:08.270 --> 00:01:08.280 align:start position:0%
decentralized network meaning that when
 

00:01:08.280 --> 00:01:10.490 align:start position:0%
decentralized network meaning that when
you<00:01:08.460><c> run</c><00:01:08.640><c> it</c><00:01:08.820><c> on</c><00:01:09.000><c> suction</c><00:01:09.240><c> the</c><00:01:09.900><c> transaction</c><00:01:10.260><c> is</c>

00:01:10.490 --> 00:01:10.500 align:start position:0%
you run it on suction the transaction is
 

00:01:10.500 --> 00:01:13.070 align:start position:0%
you run it on suction the transaction is
not<00:01:10.680><c> run</c><00:01:10.799><c> in</c><00:01:11.159><c> only</c><00:01:11.280><c> one</c><00:01:11.520><c> computer</c><00:01:11.720><c> but</c><00:01:12.720><c> in</c>

00:01:13.070 --> 00:01:13.080 align:start position:0%
not run in only one computer but in
 

00:01:13.080 --> 00:01:15.830 align:start position:0%
not run in only one computer but in
every<00:01:13.500><c> computer</c><00:01:13.820><c> that</c><00:01:14.820><c> forms</c><00:01:15.240><c> part</c><00:01:15.540><c> of</c>

00:01:15.830 --> 00:01:15.840 align:start position:0%
every computer that forms part of
 

00:01:15.840 --> 00:01:17.750 align:start position:0%
every computer that forms part of
ethereum<00:01:16.500><c> of</c><00:01:16.799><c> the</c><00:01:16.979><c> network</c>

00:01:17.750 --> 00:01:17.760 align:start position:0%
ethereum of the network
 

00:01:17.760 --> 00:01:20.630 align:start position:0%
ethereum of the network
so<00:01:18.600><c> that's</c><00:01:19.020><c> really</c><00:01:19.320><c> cool</c><00:01:19.560><c> because</c><00:01:20.340><c> the</c>

00:01:20.630 --> 00:01:20.640 align:start position:0%
so that's really cool because the
 

00:01:20.640 --> 00:01:23.090 align:start position:0%
so that's really cool because the
verification<00:01:21.119><c> of</c><00:01:21.540><c> the</c><00:01:21.840><c> transaction</c><00:01:22.200><c> does</c><00:01:22.979><c> not</c>

00:01:23.090 --> 00:01:23.100 align:start position:0%
verification of the transaction does not
 

00:01:23.100 --> 00:01:24.950 align:start position:0%
verification of the transaction does not
depend<00:01:23.460><c> on</c><00:01:23.640><c> only</c><00:01:24.000><c> one</c><00:01:24.240><c> computer</c><00:01:24.420><c> on</c><00:01:24.780><c> a</c>

00:01:24.950 --> 00:01:24.960 align:start position:0%
depend on only one computer on a
 

00:01:24.960 --> 00:01:27.590 align:start position:0%
depend on only one computer on a
centralized<00:01:25.560><c> entity</c><00:01:25.979><c> but</c><00:01:26.640><c> on</c><00:01:26.939><c> every</c><00:01:27.360><c> computer</c>

00:01:27.590 --> 00:01:27.600 align:start position:0%
centralized entity but on every computer
 

00:01:27.600 --> 00:01:30.830 align:start position:0%
centralized entity but on every computer
inside<00:01:28.020><c> the</c><00:01:28.380><c> network</c><00:01:28.920><c> but</c><00:01:29.820><c> it</c><00:01:30.060><c> comes</c><00:01:30.420><c> with</c><00:01:30.659><c> a</c>

00:01:30.830 --> 00:01:30.840 align:start position:0%
inside the network but it comes with a
 

00:01:30.840 --> 00:01:34.190 align:start position:0%
inside the network but it comes with a
downside<00:01:31.140><c> and</c><00:01:31.979><c> the</c><00:01:32.220><c> downside</c><00:01:32.580><c> is</c><00:01:32.939><c> that</c><00:01:33.299><c> the</c>

00:01:34.190 --> 00:01:34.200 align:start position:0%
downside and the downside is that the
 

00:01:34.200 --> 00:01:36.789 align:start position:0%
downside and the downside is that the
computation<00:01:34.680><c> capacity</c><00:01:35.340><c> of</c><00:01:36.180><c> the</c><00:01:36.600><c> network</c>

00:01:36.789 --> 00:01:36.799 align:start position:0%
computation capacity of the network
 

00:01:36.799 --> 00:01:40.910 align:start position:0%
computation capacity of the network
depends<00:01:37.799><c> of</c><00:01:38.220><c> on</c><00:01:38.700><c> your</c><00:01:38.939><c> slowest</c><00:01:39.420><c> note</c><00:01:40.020><c> so</c><00:01:40.680><c> we</c>

00:01:40.910 --> 00:01:40.920 align:start position:0%
depends of on your slowest note so we
 

00:01:40.920 --> 00:01:43.130 align:start position:0%
depends of on your slowest note so we
have<00:01:41.159><c> in</c><00:01:41.280><c> a</c><00:01:41.460><c> situation</c><00:01:41.700><c> that</c><00:01:42.119><c> we</c><00:01:42.540><c> have</c><00:01:42.720><c> a</c><00:01:43.020><c> high</c>

00:01:43.130 --> 00:01:43.140 align:start position:0%
have in a situation that we have a high
 

00:01:43.140 --> 00:01:47.390 align:start position:0%
have in a situation that we have a high
demand<00:01:43.560><c> of</c><00:01:43.979><c> running</c><00:01:44.220><c> transactions</c><00:01:44.939><c> and</c><00:01:45.659><c> our</c>

00:01:47.390 --> 00:01:47.400 align:start position:0%
demand of running transactions and our
 

00:01:47.400 --> 00:01:51.350 align:start position:0%
demand of running transactions and our
computation<00:01:48.380><c> capacity</c><00:01:49.380><c> is</c><00:01:50.220><c> limited</c><00:01:50.640><c> by</c><00:01:51.000><c> our</c>

00:01:51.350 --> 00:01:51.360 align:start position:0%
computation capacity is limited by our
 

00:01:51.360 --> 00:01:54.649 align:start position:0%
computation capacity is limited by our
slowest<00:01:51.899><c> low</c><00:01:52.140><c> so</c><00:01:52.920><c> how</c><00:01:53.820><c> can</c><00:01:54.000><c> we</c><00:01:54.180><c> solve</c><00:01:54.540><c> this</c>

00:01:54.649 --> 00:01:54.659 align:start position:0%
slowest low so how can we solve this
 

00:01:54.659 --> 00:01:55.670 align:start position:0%
slowest low so how can we solve this
problem

00:01:55.670 --> 00:01:55.680 align:start position:0%
problem
 

00:01:55.680 --> 00:01:59.330 align:start position:0%
problem
and<00:01:56.520><c> here</c><00:01:57.119><c> is</c><00:01:57.540><c> where</c><00:01:57.960><c> starnet</c><00:01:58.680><c> comes</c><00:01:59.220><c> into</c>

00:01:59.330 --> 00:01:59.340 align:start position:0%
and here is where starnet comes into
 

00:01:59.340 --> 00:02:00.770 align:start position:0%
and here is where starnet comes into
play

00:02:00.770 --> 00:02:00.780 align:start position:0%
play
 

00:02:00.780 --> 00:02:03.830 align:start position:0%
play
starnet<00:02:01.439><c> is</c><00:02:01.680><c> a</c><00:02:01.860><c> secret</c><00:02:01.979><c> roll</c><00:02:02.340><c> up</c><00:02:02.579><c> and</c><00:02:03.360><c> what</c>

00:02:03.830 --> 00:02:03.840 align:start position:0%
starnet is a secret roll up and what
 

00:02:03.840 --> 00:02:05.749 align:start position:0%
starnet is a secret roll up and what
rollapse<00:02:04.439><c> allows</c><00:02:04.799><c> us</c><00:02:04.920><c> is</c><00:02:05.340><c> to</c><00:02:05.579><c> run</c>

00:02:05.749 --> 00:02:05.759 align:start position:0%
rollapse allows us is to run
 

00:02:05.759 --> 00:02:08.749 align:start position:0%
rollapse allows us is to run
transactions<00:02:06.540><c> of</c><00:02:07.079><c> chain</c><00:02:07.380><c> then</c><00:02:08.220><c> make</c><00:02:08.459><c> a</c><00:02:08.640><c> batch</c>

00:02:08.749 --> 00:02:08.759 align:start position:0%
transactions of chain then make a batch
 

00:02:08.759 --> 00:02:11.510 align:start position:0%
transactions of chain then make a batch
of<00:02:09.000><c> intersection</c><00:02:09.420><c> and</c><00:02:10.319><c> send</c><00:02:10.619><c> to</c><00:02:10.800><c> ethereum</c><00:02:11.220><c> the</c>

00:02:11.510 --> 00:02:11.520 align:start position:0%
of intersection and send to ethereum the
 

00:02:11.520 --> 00:02:14.930 align:start position:0%
of intersection and send to ethereum the
update<00:02:12.000><c> State</c><00:02:12.239><c> and</c><00:02:13.200><c> what</c><00:02:13.440><c> CK</c><00:02:13.860><c> adds</c><00:02:14.520><c> to</c><00:02:14.580><c> roll</c><00:02:14.760><c> up</c>

00:02:14.930 --> 00:02:14.940 align:start position:0%
update State and what CK adds to roll up
 

00:02:14.940 --> 00:02:17.630 align:start position:0%
update State and what CK adds to roll up
is<00:02:15.660><c> that</c><00:02:15.900><c> we</c><00:02:16.379><c> can</c><00:02:16.500><c> run</c><00:02:16.739><c> the</c><00:02:16.920><c> construction</c><00:02:17.099><c> of</c>

00:02:17.630 --> 00:02:17.640 align:start position:0%
is that we can run the construction of
 

00:02:17.640 --> 00:02:22.309 align:start position:0%
is that we can run the construction of
chain<00:02:18.080><c> generate</c><00:02:19.080><c> a</c><00:02:19.319><c> proof</c><00:02:19.760><c> of</c><00:02:20.760><c> the</c><00:02:21.540><c> Integrity</c>

00:02:22.309 --> 00:02:22.319 align:start position:0%
chain generate a proof of the Integrity
 

00:02:22.319 --> 00:02:25.070 align:start position:0%
chain generate a proof of the Integrity
of<00:02:22.620><c> the</c><00:02:22.860><c> execution</c><00:02:23.400><c> of</c><00:02:23.700><c> the</c><00:02:23.819><c> transactions</c><00:02:24.420><c> and</c>

00:02:25.070 --> 00:02:25.080 align:start position:0%
of the execution of the transactions and
 

00:02:25.080 --> 00:02:27.949 align:start position:0%
of the execution of the transactions and
then<00:02:25.260><c> we</c><00:02:25.980><c> send</c><00:02:26.220><c> to</c><00:02:26.400><c> ethereum</c><00:02:26.819><c> they</c><00:02:27.420><c> update</c><00:02:27.780><c> the</c>

00:02:27.949 --> 00:02:27.959 align:start position:0%
then we send to ethereum they update the
 

00:02:27.959 --> 00:02:30.410 align:start position:0%
then we send to ethereum they update the
state<00:02:28.200><c> and</c><00:02:28.739><c> the</c><00:02:28.920><c> proof</c><00:02:29.280><c> of</c><00:02:29.700><c> the</c><00:02:29.940><c> computational</c>

00:02:30.410 --> 00:02:30.420 align:start position:0%
state and the proof of the computational
 

00:02:30.420 --> 00:02:35.030 align:start position:0%
state and the proof of the computational
integrity<00:02:31.440><c> so</c><00:02:32.099><c> then</c><00:02:32.520><c> on</c><00:02:33.180><c> chain</c><00:02:33.959><c> uh</c><00:02:34.620><c> the</c><00:02:34.800><c> proof</c>

00:02:35.030 --> 00:02:35.040 align:start position:0%
integrity so then on chain uh the proof
 

00:02:35.040 --> 00:02:37.070 align:start position:0%
integrity so then on chain uh the proof
is<00:02:35.220><c> verified</c><00:02:35.580><c> by</c><00:02:35.879><c> a</c><00:02:36.000><c> verifier</c><00:02:36.360><c> and</c><00:02:36.900><c> that</c>

00:02:37.070 --> 00:02:37.080 align:start position:0%
is verified by a verifier and that
 

00:02:37.080 --> 00:02:38.809 align:start position:0%
is verified by a verifier and that
verification<00:02:37.560><c> is</c><00:02:37.980><c> running</c><00:02:38.160><c> all</c><00:02:38.580><c> the</c>

00:02:38.809 --> 00:02:38.819 align:start position:0%
verification is running all the
 

00:02:38.819 --> 00:02:41.089 align:start position:0%
verification is running all the
computers<00:02:39.180><c> inside</c><00:02:39.780><c> ethereum</c>

00:02:41.089 --> 00:02:41.099 align:start position:0%
computers inside ethereum
 

00:02:41.099 --> 00:02:43.190 align:start position:0%
computers inside ethereum
so<00:02:41.760><c> well</c><00:02:42.360><c> and</c>

00:02:43.190 --> 00:02:43.200 align:start position:0%
so well and
 

00:02:43.200 --> 00:02:45.050 align:start position:0%
so well and
the<00:02:43.739><c> coolest</c><00:02:44.040><c> thing</c><00:02:44.220><c> about</c><00:02:44.580><c> this</c>

00:02:45.050 --> 00:02:45.060 align:start position:0%
the coolest thing about this
 

00:02:45.060 --> 00:02:47.150 align:start position:0%
the coolest thing about this
verification<00:02:45.540><c> is</c><00:02:46.319><c> that</c><00:02:46.500><c> the</c><00:02:46.680><c> verification</c>

00:02:47.150 --> 00:02:47.160 align:start position:0%
verification is that the verification
 

00:02:47.160 --> 00:02:51.250 align:start position:0%
verification is that the verification
cost<00:02:47.760><c> of</c><00:02:48.660><c> the</c><00:02:48.900><c> proof</c><00:02:49.319><c> growth</c><00:02:50.239><c> logarithmically</c>

00:02:51.250 --> 00:02:51.260 align:start position:0%
cost of the proof growth logarithmically
 

00:02:51.260 --> 00:02:54.530 align:start position:0%
cost of the proof growth logarithmically
with<00:02:52.260><c> respect</c><00:02:52.680><c> the</c><00:02:53.459><c> number</c><00:02:53.640><c> of</c><00:02:53.819><c> transactions</c>

00:02:54.530 --> 00:02:54.540 align:start position:0%
with respect the number of transactions
 

00:02:54.540 --> 00:02:59.570 align:start position:0%
with respect the number of transactions
inside<00:02:54.900><c> the</c><00:02:55.200><c> batch</c><00:02:55.459><c> so</c><00:02:56.900><c> as</c><00:02:57.900><c> the</c><00:02:58.319><c> the</c><00:02:59.040><c> cost</c><00:02:59.340><c> of</c>

00:02:59.570 --> 00:02:59.580 align:start position:0%
inside the batch so as the the cost of
 

00:02:59.580 --> 00:03:02.869 align:start position:0%
inside the batch so as the the cost of
verification<00:03:00.180><c> is</c><00:03:01.080><c> distributed</c><00:03:01.800><c> between</c><00:03:02.220><c> all</c>

00:03:02.869 --> 00:03:02.879 align:start position:0%
verification is distributed between all
 

00:03:02.879 --> 00:03:05.210 align:start position:0%
verification is distributed between all
the<00:03:03.000><c> transactions</c><00:03:03.540><c> including</c><00:03:04.019><c> the</c><00:03:04.200><c> batch</c><00:03:04.379><c> as</c>

00:03:05.210 --> 00:03:05.220 align:start position:0%
the transactions including the batch as
 

00:03:05.220 --> 00:03:07.550 align:start position:0%
the transactions including the batch as
we<00:03:05.459><c> add</c><00:03:05.640><c> more</c><00:03:05.879><c> transactions</c><00:03:06.660><c> in</c><00:03:07.019><c> the</c><00:03:07.200><c> in</c><00:03:07.379><c> the</c>

00:03:07.550 --> 00:03:07.560 align:start position:0%
we add more transactions in the in the
 

00:03:07.560 --> 00:03:09.710 align:start position:0%
we add more transactions in the in the
batch<00:03:07.680><c> the</c><00:03:08.580><c> cost</c><00:03:08.819><c> per</c><00:03:09.000><c> transaction</c><00:03:09.480><c> the</c>

00:03:09.710 --> 00:03:09.720 align:start position:0%
batch the cost per transaction the
 

00:03:09.720 --> 00:03:12.470 align:start position:0%
batch the cost per transaction the
average<00:03:09.900><c> cost</c><00:03:10.260><c> per</c><00:03:10.920><c> transactions</c><00:03:11.760><c> goes</c><00:03:12.360><c> to</c>

00:03:12.470 --> 00:03:12.480 align:start position:0%
average cost per transactions goes to
 

00:03:12.480 --> 00:03:13.550 align:start position:0%
average cost per transactions goes to
zero

00:03:13.550 --> 00:03:13.560 align:start position:0%
zero
 

00:03:13.560 --> 00:03:17.030 align:start position:0%
zero
so<00:03:14.220><c> ah</c><00:03:14.580><c> yeah</c><00:03:14.819><c> here</c><00:03:15.420><c> is</c><00:03:15.659><c> a</c><00:03:15.959><c> slide</c><00:03:16.560><c> that</c><00:03:16.739><c> I</c><00:03:16.980><c> was</c>

00:03:17.030 --> 00:03:17.040 align:start position:0%
so ah yeah here is a slide that I was
 

00:03:17.040 --> 00:03:19.430 align:start position:0%
so ah yeah here is a slide that I was
supposed<00:03:17.280><c> to</c><00:03:17.519><c> to</c><00:03:18.239><c> say</c><00:03:18.540><c> that</c><00:03:18.780><c> because</c><00:03:19.019><c> of</c>

00:03:19.430 --> 00:03:19.440 align:start position:0%
supposed to to say that because of
 

00:03:19.440 --> 00:03:22.190 align:start position:0%
supposed to to say that because of
verification<00:03:19.920><c> grows</c><00:03:20.760><c> logarithmically</c><00:03:21.599><c> and</c>

00:03:22.190 --> 00:03:22.200 align:start position:0%
verification grows logarithmically and
 

00:03:22.200 --> 00:03:24.410 align:start position:0%
verification grows logarithmically and
with<00:03:22.440><c> respect</c><00:03:22.680><c> the</c><00:03:22.860><c> numbers</c><00:03:22.920><c> and</c><00:03:23.159><c> section</c><00:03:23.459><c> and</c>

00:03:24.410 --> 00:03:24.420 align:start position:0%
with respect the numbers and section and
 

00:03:24.420 --> 00:03:27.050 align:start position:0%
with respect the numbers and section and
yeah<00:03:24.659><c> if</c><00:03:25.379><c> we</c><00:03:25.560><c> tend</c><00:03:25.739><c> to</c><00:03:25.860><c> Infinity</c><00:03:26.040><c> if</c><00:03:26.519><c> you</c><00:03:26.879><c> take</c>

00:03:27.050 --> 00:03:27.060 align:start position:0%
yeah if we tend to Infinity if you take
 

00:03:27.060 --> 00:03:29.390 align:start position:0%
yeah if we tend to Infinity if you take
this<00:03:27.360><c> one</c><00:03:27.540><c> extreme</c><00:03:27.840><c> and</c><00:03:28.140><c> we</c><00:03:28.920><c> tend</c><00:03:29.159><c> to</c><00:03:29.280><c> Infinity</c>

00:03:29.390 --> 00:03:29.400 align:start position:0%
this one extreme and we tend to Infinity
 

00:03:29.400 --> 00:03:31.070 align:start position:0%
this one extreme and we tend to Infinity
the<00:03:29.819><c> number</c><00:03:30.000><c> of</c><00:03:30.180><c> transactions</c><00:03:30.720><c> inside</c><00:03:30.840><c> the</c>

00:03:31.070 --> 00:03:31.080 align:start position:0%
the number of transactions inside the
 

00:03:31.080 --> 00:03:33.949 align:start position:0%
the number of transactions inside the
batch<00:03:31.739><c> the</c><00:03:32.519><c> cost</c><00:03:32.700><c> the</c><00:03:33.000><c> average</c><00:03:33.239><c> cost</c><00:03:33.599><c> per</c>

00:03:33.949 --> 00:03:33.959 align:start position:0%
batch the cost the average cost per
 

00:03:33.959 --> 00:03:36.949 align:start position:0%
batch the cost the average cost per
transactions<00:03:34.860><c> go</c><00:03:35.519><c> to</c><00:03:35.819><c> zero</c>

00:03:36.949 --> 00:03:36.959 align:start position:0%
transactions go to zero
 

00:03:36.959 --> 00:03:38.570 align:start position:0%
transactions go to zero
so<00:03:37.560><c> okay</c>

00:03:38.570 --> 00:03:38.580 align:start position:0%
so okay
 

00:03:38.580 --> 00:03:41.149 align:start position:0%
so okay
we<00:03:39.060><c> say</c><00:03:39.239><c> that</c><00:03:39.480><c> in</c><00:03:39.659><c> stagnet</c><00:03:40.200><c> we</c><00:03:40.379><c> can</c><00:03:40.560><c> generate</c><00:03:40.920><c> a</c>

00:03:41.149 --> 00:03:41.159 align:start position:0%
we say that in stagnet we can generate a
 

00:03:41.159 --> 00:03:43.490 align:start position:0%
we say that in stagnet we can generate a
proof<00:03:41.519><c> on</c><00:03:42.299><c> the</c><00:03:42.480><c> execution</c><00:03:42.959><c> of</c><00:03:43.319><c> our</c>

00:03:43.490 --> 00:03:43.500 align:start position:0%
proof on the execution of our
 

00:03:43.500 --> 00:03:46.910 align:start position:0%
proof on the execution of our
transaction<00:03:43.980><c> but</c><00:03:44.700><c> what</c><00:03:45.060><c> kind</c><00:03:45.239><c> of</c><00:03:45.420><c> proof</c><00:03:46.200><c> well</c>

00:03:46.910 --> 00:03:46.920 align:start position:0%
transaction but what kind of proof well
 

00:03:46.920 --> 00:03:49.789 align:start position:0%
transaction but what kind of proof well
it's<00:03:47.700><c> a</c><00:03:47.879><c> series</c><00:03:48.060><c> proof</c><00:03:48.720><c> and</c><00:03:49.080><c> specifically</c><00:03:49.620><c> a</c>

00:03:49.789 --> 00:03:49.799 align:start position:0%
it's a series proof and specifically a
 

00:03:49.799 --> 00:03:52.850 align:start position:0%
it's a series proof and specifically a
stack<00:03:50.159><c> and</c><00:03:51.000><c> to</c><00:03:51.180><c> your</c><00:03:51.420><c> knowledge</c><00:03:51.720><c> allows</c><00:03:52.500><c> us</c><00:03:52.620><c> to</c>

00:03:52.850 --> 00:03:52.860 align:start position:0%
stack and to your knowledge allows us to
 

00:03:52.860 --> 00:03:54.470 align:start position:0%
stack and to your knowledge allows us to
prove<00:03:53.159><c> the</c><00:03:53.340><c> veracity</c><00:03:53.760><c> of</c><00:03:54.000><c> a</c><00:03:54.180><c> statement</c>

00:03:54.470 --> 00:03:54.480 align:start position:0%
prove the veracity of a statement
 

00:03:54.480 --> 00:03:57.170 align:start position:0%
prove the veracity of a statement
without<00:03:55.260><c> rebuilding</c><00:03:56.099><c> anything</c><00:03:56.459><c> beyond</c><00:03:57.000><c> the</c>

00:03:57.170 --> 00:03:57.180 align:start position:0%
without rebuilding anything beyond the
 

00:03:57.180 --> 00:03:59.089 align:start position:0%
without rebuilding anything beyond the
fact<00:03:57.360><c> that</c><00:03:57.840><c> the</c><00:03:58.019><c> statement</c><00:03:58.319><c> the</c><00:03:58.560><c> statement</c><00:03:58.920><c> is</c>

00:03:59.089 --> 00:03:59.099 align:start position:0%
fact that the statement the statement is
 

00:03:59.099 --> 00:04:02.330 align:start position:0%
fact that the statement the statement is
true<00:03:59.280><c> and</c><00:04:00.060><c> in</c><00:04:00.299><c> this</c><00:04:00.480><c> specific</c><00:04:00.840><c> case</c><00:04:01.340><c> Stacks</c>

00:04:02.330 --> 00:04:02.340 align:start position:0%
true and in this specific case Stacks
 

00:04:02.340 --> 00:04:04.970 align:start position:0%
true and in this specific case Stacks
allow<00:04:02.640><c> us</c><00:04:02.760><c> to</c><00:04:03.120><c> prove</c><00:04:04.019><c> their</c><00:04:04.500><c> computational</c>

00:04:04.970 --> 00:04:04.980 align:start position:0%
allow us to prove their computational
 

00:04:04.980 --> 00:04:07.430 align:start position:0%
allow us to prove their computational
integrity<00:04:05.580><c> of</c><00:04:06.180><c> the</c><00:04:06.599><c> transaction</c><00:04:06.959><c> that</c><00:04:07.260><c> would</c>

00:04:07.430 --> 00:04:07.440 align:start position:0%
integrity of the transaction that would
 

00:04:07.440 --> 00:04:10.250 align:start position:0%
integrity of the transaction that would
run<00:04:07.620><c> off</c><00:04:08.040><c> chain</c><00:04:08.340><c> we</c><00:04:09.120><c> are</c><00:04:09.299><c> having</c><00:04:09.480><c> to</c><00:04:09.780><c> run</c><00:04:10.080><c> it</c>

00:04:10.250 --> 00:04:10.260 align:start position:0%
run off chain we are having to run it
 

00:04:10.260 --> 00:04:13.009 align:start position:0%
run off chain we are having to run it
all<00:04:10.439><c> again</c><00:04:10.739><c> so</c><00:04:11.519><c> this</c><00:04:12.120><c> is</c><00:04:12.299><c> kind</c><00:04:12.599><c> of</c><00:04:12.720><c> a</c><00:04:12.840><c> game</c>

00:04:13.009 --> 00:04:13.019 align:start position:0%
all again so this is kind of a game
 

00:04:13.019 --> 00:04:15.710 align:start position:0%
all again so this is kind of a game
changer<00:04:13.439><c> because</c><00:04:13.799><c> before</c><00:04:14.580><c> serial</c><00:04:15.420><c> knowledge</c>

00:04:15.710 --> 00:04:15.720 align:start position:0%
changer because before serial knowledge
 

00:04:15.720 --> 00:04:19.670 align:start position:0%
changer because before serial knowledge
the<00:04:16.320><c> only</c><00:04:16.440><c> way</c><00:04:16.680><c> we</c><00:04:16.979><c> had</c><00:04:17.220><c> to</c><00:04:17.579><c> to</c><00:04:18.359><c> prove</c><00:04:18.900><c> the</c><00:04:19.440><c> rest</c>

00:04:19.670 --> 00:04:19.680 align:start position:0%
the only way we had to to prove the rest
 

00:04:19.680 --> 00:04:21.830 align:start position:0%
the only way we had to to prove the rest
the<00:04:20.160><c> computation</c><00:04:20.579><c> Integrity</c><00:04:21.180><c> of</c><00:04:21.720><c> a</c>

00:04:21.830 --> 00:04:21.840 align:start position:0%
the computation Integrity of a
 

00:04:21.840 --> 00:04:24.530 align:start position:0%
the computation Integrity of a
computation<00:04:22.320><c> was</c><00:04:22.979><c> to</c><00:04:23.220><c> run</c><00:04:23.400><c> that</c><00:04:23.820><c> computation</c>

00:04:24.530 --> 00:04:24.540 align:start position:0%
computation was to run that computation
 

00:04:24.540 --> 00:04:27.890 align:start position:0%
computation was to run that computation
ourselves<00:04:25.380><c> but</c><00:04:26.220><c> with</c><00:04:26.940><c> with</c><00:04:27.240><c> your</c><00:04:27.540><c> knowledge</c>

00:04:27.890 --> 00:04:27.900 align:start position:0%
ourselves but with with your knowledge
 

00:04:27.900 --> 00:04:32.930 align:start position:0%
ourselves but with with your knowledge
and<00:04:28.620><c> stacks</c><00:04:29.100><c> now</c><00:04:29.960><c> and</c><00:04:30.960><c> untrusted</c><00:04:31.620><c> entity</c><00:04:32.400><c> can</c>

00:04:32.930 --> 00:04:32.940 align:start position:0%
and stacks now and untrusted entity can
 

00:04:32.940 --> 00:04:36.469 align:start position:0%
and stacks now and untrusted entity can
run<00:04:33.120><c> transactions</c><00:04:34.259><c> a</c><00:04:34.860><c> generator</c><00:04:35.400><c> proof</c><00:04:35.880><c> on</c>

00:04:36.469 --> 00:04:36.479 align:start position:0%
run transactions a generator proof on
 

00:04:36.479 --> 00:04:39.890 align:start position:0%
run transactions a generator proof on
the<00:04:36.660><c> Integrity</c><00:04:37.139><c> of</c><00:04:37.919><c> that</c><00:04:38.160><c> execution</c><00:04:38.720><c> and</c><00:04:39.720><c> then</c>

00:04:39.890 --> 00:04:39.900 align:start position:0%
the Integrity of that execution and then
 

00:04:39.900 --> 00:04:43.490 align:start position:0%
the Integrity of that execution and then
the<00:04:40.800><c> proof</c><00:04:41.160><c> have</c><00:04:41.699><c> to</c><00:04:41.880><c> be</c><00:04:42.000><c> verified</c><00:04:42.300><c> and</c><00:04:43.139><c> we</c><00:04:43.380><c> can</c>

00:04:43.490 --> 00:04:43.500 align:start position:0%
the proof have to be verified and we can
 

00:04:43.500 --> 00:04:45.650 align:start position:0%
the proof have to be verified and we can
be<00:04:43.680><c> sure</c><00:04:43.800><c> that</c><00:04:44.100><c> everything</c><00:04:44.460><c> is</c><00:04:44.820><c> okay</c>

00:04:45.650 --> 00:04:45.660 align:start position:0%
be sure that everything is okay
 

00:04:45.660 --> 00:04:50.749 align:start position:0%
be sure that everything is okay
so<00:04:46.320><c> okay</c><00:04:47.000><c> how</c><00:04:48.000><c> do</c><00:04:48.240><c> we</c><00:04:48.419><c> write</c><00:04:48.780><c> a</c><00:04:49.320><c> program</c><00:04:49.759><c> that</c>

00:04:50.749 --> 00:04:50.759 align:start position:0%
so okay how do we write a program that
 

00:04:50.759 --> 00:04:53.950 align:start position:0%
so okay how do we write a program that
is<00:04:51.060><c> a</c><00:04:51.540><c> probable</c><00:04:51.960><c> meaning</c><00:04:52.620><c> that</c><00:04:52.979><c> its</c><00:04:53.460><c> execution</c>

00:04:53.950 --> 00:04:53.960 align:start position:0%
is a probable meaning that its execution
 

00:04:53.960 --> 00:04:59.210 align:start position:0%
is a probable meaning that its execution
can<00:04:54.960><c> be</c><00:04:55.759><c> can</c><00:04:56.759><c> be</c><00:04:56.880><c> proven</c><00:04:57.180><c> the</c><00:04:58.080><c> Integrity</c><00:04:58.979><c> of</c>

00:04:59.210 --> 00:04:59.220 align:start position:0%
can be can be proven the Integrity of
 

00:04:59.220 --> 00:05:00.290 align:start position:0%
can be can be proven the Integrity of
execution

00:05:00.290 --> 00:05:00.300 align:start position:0%
execution
 

00:05:00.300 --> 00:05:02.090 align:start position:0%
execution
and<00:05:00.900><c> okay</c>

00:05:02.090 --> 00:05:02.100 align:start position:0%
and okay
 

00:05:02.100 --> 00:05:05.810 align:start position:0%
and okay
we<00:05:02.639><c> have</c><00:05:02.759><c> Cairo</c><00:05:03.600><c> and</c><00:05:04.320><c> Cairo</c><00:05:04.860><c> is</c><00:05:05.040><c> a</c><00:05:05.400><c> primary</c>

00:05:05.810 --> 00:05:05.820 align:start position:0%
we have Cairo and Cairo is a primary
 

00:05:05.820 --> 00:05:08.990 align:start position:0%
we have Cairo and Cairo is a primary
language<00:05:06.000><c> a</c><00:05:06.900><c> specific</c><00:05:07.199><c> design</c><00:05:07.620><c> to</c><00:05:08.520><c> doing</c><00:05:08.699><c> this</c>

00:05:08.990 --> 00:05:09.000 align:start position:0%
language a specific design to doing this
 

00:05:09.000 --> 00:05:13.490 align:start position:0%
language a specific design to doing this
when<00:05:09.900><c> we</c><00:05:10.199><c> we</c><00:05:10.500><c> write</c><00:05:10.860><c> a</c><00:05:11.340><c> program</c><00:05:12.300><c> in</c><00:05:12.600><c> Cairo</c><00:05:13.020><c> it's</c>

00:05:13.490 --> 00:05:13.500 align:start position:0%
when we we write a program in Cairo it's
 

00:05:13.500 --> 00:05:16.790 align:start position:0%
when we we write a program in Cairo it's
run<00:05:13.740><c> in</c><00:05:14.040><c> the</c><00:05:14.160><c> Caribbean</c><00:05:15.240><c> and</c><00:05:15.960><c> that</c><00:05:16.139><c> Cairo</c><00:05:16.500><c> VM</c>

00:05:16.790 --> 00:05:16.800 align:start position:0%
run in the Caribbean and that Cairo VM
 

00:05:16.800 --> 00:05:19.730 align:start position:0%
run in the Caribbean and that Cairo VM
executes<00:05:17.340><c> a</c><00:05:17.460><c> program</c><00:05:18.060><c> and</c><00:05:18.780><c> also</c><00:05:19.080><c> generate</c><00:05:19.560><c> a</c>

00:05:19.730 --> 00:05:19.740 align:start position:0%
executes a program and also generate a
 

00:05:19.740 --> 00:05:23.930 align:start position:0%
executes a program and also generate a
trace<00:05:20.040><c> of</c><00:05:21.000><c> the</c><00:05:21.180><c> execution</c><00:05:21.800><c> and</c><00:05:22.800><c> that</c><00:05:22.979><c> Trace</c><00:05:23.340><c> is</c>

00:05:23.930 --> 00:05:23.940 align:start position:0%
trace of the execution and that Trace is
 

00:05:23.940 --> 00:05:27.409 align:start position:0%
trace of the execution and that Trace is
then<00:05:24.180><c> is</c><00:05:24.780><c> going</c><00:05:24.960><c> to</c><00:05:25.139><c> be</c><00:05:25.380><c> sent</c><00:05:25.560><c> to</c><00:05:25.800><c> approver</c><00:05:26.639><c> and</c>

00:05:27.409 --> 00:05:27.419 align:start position:0%
then is going to be sent to approver and
 

00:05:27.419 --> 00:05:29.689 align:start position:0%
then is going to be sent to approver and
generate<00:05:27.840><c> the</c><00:05:28.259><c> start</c><00:05:28.560><c> proof</c><00:05:28.919><c> and</c><00:05:29.460><c> that's</c>

00:05:29.689 --> 00:05:29.699 align:start position:0%
generate the start proof and that's
 

00:05:29.699 --> 00:05:32.029 align:start position:0%
generate the start proof and that's
that's<00:05:30.120><c> that</c><00:05:30.780><c> probe</c><00:05:31.380><c> is</c><00:05:31.560><c> going</c><00:05:31.740><c> to</c><00:05:31.860><c> be</c>

00:05:32.029 --> 00:05:32.039 align:start position:0%
that's that probe is going to be
 

00:05:32.039 --> 00:05:35.390 align:start position:0%
that's that probe is going to be
verified<00:05:32.340><c> by</c><00:05:32.639><c> a</c><00:05:32.759><c> verifier</c><00:05:33.180><c> so</c><00:05:34.020><c> okay</c><00:05:34.259><c> how</c><00:05:35.160><c> does</c>

00:05:35.390 --> 00:05:35.400 align:start position:0%
verified by a verifier so okay how does
 

00:05:35.400 --> 00:05:38.450 align:start position:0%
verified by a verifier so okay how does
the<00:05:35.759><c> Caribbean</c><00:05:36.360><c> works</c><00:05:36.900><c> and</c><00:05:37.620><c> now</c><00:05:37.919><c> Federica</c>

00:05:38.450 --> 00:05:38.460 align:start position:0%
the Caribbean works and now Federica
 

00:05:38.460 --> 00:05:41.150 align:start position:0%
the Caribbean works and now Federica
will<00:05:38.940><c> guide</c><00:05:39.360><c> us</c><00:05:39.600><c> through</c><00:05:39.900><c> the</c><00:05:40.380><c> internals</c><00:05:40.860><c> of</c>

00:05:41.150 --> 00:05:41.160 align:start position:0%
will guide us through the internals of
 

00:05:41.160 --> 00:05:45.170 align:start position:0%
will guide us through the internals of
the<00:05:41.340><c> Caribbean</c><00:05:41.820><c> so</c><00:05:42.139><c> ferrica</c><00:05:43.139><c> soldiers</c><00:05:44.039><c> well</c>

00:05:45.170 --> 00:05:45.180 align:start position:0%
the Caribbean so ferrica soldiers well
 

00:05:45.180 --> 00:05:47.210 align:start position:0%
the Caribbean so ferrica soldiers well
now<00:05:45.600><c> let's</c><00:05:45.720><c> talk</c><00:05:45.900><c> about</c><00:05:45.960><c> about</c><00:05:46.320><c> how</c><00:05:46.919><c> the</c>

00:05:47.210 --> 00:05:47.220 align:start position:0%
now let's talk about about how the
 

00:05:47.220 --> 00:05:50.330 align:start position:0%
now let's talk about about how the
Caribbean<00:05:47.940><c> works</c><00:05:48.300><c> well</c><00:05:49.020><c> you</c><00:05:49.860><c> already</c><00:05:49.979><c> know</c>

00:05:50.330 --> 00:05:50.340 align:start position:0%
Caribbean works well you already know
 

00:05:50.340 --> 00:05:52.610 align:start position:0%
Caribbean works well you already know
how<00:05:50.639><c> a</c><00:05:50.759><c> virtual</c><00:05:51.120><c> machine</c><00:05:51.300><c> works</c><00:05:51.780><c> basically</c>

00:05:52.610 --> 00:05:52.620 align:start position:0%
how a virtual machine works basically
 

00:05:52.620 --> 00:05:54.650 align:start position:0%
how a virtual machine works basically
you<00:05:52.979><c> write</c><00:05:53.160><c> your</c><00:05:53.400><c> source</c><00:05:53.759><c> code</c><00:05:53.940><c> you</c><00:05:54.300><c> compile</c>

00:05:54.650 --> 00:05:54.660 align:start position:0%
you write your source code you compile
 

00:05:54.660 --> 00:05:56.450 align:start position:0%
you write your source code you compile
it<00:05:54.840><c> and</c><00:05:55.320><c> then</c><00:05:55.440><c> you</c><00:05:55.560><c> use</c><00:05:55.740><c> the</c><00:05:55.860><c> virtual</c><00:05:56.160><c> machine</c>

00:05:56.450 --> 00:05:56.460 align:start position:0%
it and then you use the virtual machine
 

00:05:56.460 --> 00:05:58.790 align:start position:0%
it and then you use the virtual machine
to<00:05:56.759><c> interpret</c><00:05:57.240><c> that</c><00:05:57.479><c> compile</c><00:05:57.900><c> code</c><00:05:58.199><c> and</c>

00:05:58.790 --> 00:05:58.800 align:start position:0%
to interpret that compile code and
 

00:05:58.800 --> 00:06:01.010 align:start position:0%
to interpret that compile code and
execute<00:05:59.160><c> the</c><00:05:59.280><c> instructions</c><00:05:59.759><c> but</c><00:06:00.300><c> what</c><00:06:00.660><c> sets</c>

00:06:01.010 --> 00:06:01.020 align:start position:0%
execute the instructions but what sets
 

00:06:01.020 --> 00:06:03.170 align:start position:0%
execute the instructions but what sets
apart<00:06:01.320><c> this</c><00:06:01.860><c> current</c><00:06:02.100><c> Bureau</c><00:06:02.580><c> machine</c><00:06:02.699><c> is</c>

00:06:03.170 --> 00:06:03.180 align:start position:0%
apart this current Bureau machine is
 

00:06:03.180 --> 00:06:05.090 align:start position:0%
apart this current Bureau machine is
that<00:06:03.360><c> it</c><00:06:03.539><c> also</c><00:06:03.840><c> generates</c><00:06:04.259><c> this</c><00:06:04.560><c> Trace</c><00:06:04.919><c> that</c>

00:06:05.090 --> 00:06:05.100 align:start position:0%
that it also generates this Trace that
 

00:06:05.100 --> 00:06:07.129 align:start position:0%
that it also generates this Trace that
can<00:06:05.280><c> be</c><00:06:05.400><c> used</c><00:06:05.520><c> to</c><00:06:05.639><c> generate</c><00:06:05.940><c> the</c><00:06:06.060><c> proof</c>

00:06:07.129 --> 00:06:07.139 align:start position:0%
can be used to generate the proof
 

00:06:07.139 --> 00:06:09.230 align:start position:0%
can be used to generate the proof
so<00:06:07.560><c> let's</c><00:06:07.740><c> go</c><00:06:07.979><c> a</c><00:06:08.100><c> bit</c><00:06:08.160><c> into</c><00:06:08.400><c> the</c><00:06:08.639><c> architecture</c>

00:06:09.230 --> 00:06:09.240 align:start position:0%
so let's go a bit into the architecture
 

00:06:09.240 --> 00:06:11.930 align:start position:0%
so let's go a bit into the architecture
of<00:06:09.660><c> the</c><00:06:09.780><c> career</c><00:06:10.080><c> virtual</c><00:06:10.380><c> machine</c><00:06:10.680><c> well</c><00:06:11.520><c> first</c>

00:06:11.930 --> 00:06:11.940 align:start position:0%
of the career virtual machine well first
 

00:06:11.940 --> 00:06:14.390 align:start position:0%
of the career virtual machine well first
we<00:06:12.240><c> have</c><00:06:12.419><c> the</c><00:06:12.600><c> memory</c><00:06:12.900><c> model</c><00:06:13.139><c> it</c><00:06:13.919><c> is</c><00:06:14.039><c> the</c><00:06:14.160><c> right</c>

00:06:14.390 --> 00:06:14.400 align:start position:0%
we have the memory model it is the right
 

00:06:14.400 --> 00:06:16.370 align:start position:0%
we have the memory model it is the right
one's<00:06:14.699><c> read-only</c><00:06:15.300><c> memory</c><00:06:15.539><c> that</c><00:06:15.840><c> is</c><00:06:15.960><c> divided</c>

00:06:16.370 --> 00:06:16.380 align:start position:0%
one's read-only memory that is divided
 

00:06:16.380 --> 00:06:19.129 align:start position:0%
one's read-only memory that is divided
into<00:06:16.620><c> different</c><00:06:16.979><c> segments</c><00:06:18.000><c> these</c><00:06:18.660><c> segments</c>

00:06:19.129 --> 00:06:19.139 align:start position:0%
into different segments these segments
 

00:06:19.139 --> 00:06:22.430 align:start position:0%
into different segments these segments
have<00:06:19.259><c> a</c><00:06:19.440><c> known</c><00:06:19.620><c> size</c><00:06:19.979><c> at</c><00:06:20.220><c> runtime</c><00:06:20.639><c> and</c><00:06:21.600><c> once</c><00:06:22.080><c> we</c>

00:06:22.430 --> 00:06:22.440 align:start position:0%
have a known size at runtime and once we
 

00:06:22.440 --> 00:06:25.490 align:start position:0%
have a known size at runtime and once we
finish<00:06:22.740><c> the</c><00:06:22.979><c> BM</c><00:06:23.280><c> run</c><00:06:23.520><c> we</c><00:06:24.360><c> these</c><00:06:24.960><c> segments</c><00:06:25.319><c> go</c>

00:06:25.490 --> 00:06:25.500 align:start position:0%
finish the BM run we these segments go
 

00:06:25.500 --> 00:06:27.409 align:start position:0%
finish the BM run we these segments go
for<00:06:25.680><c> a</c><00:06:25.800><c> relocation</c><00:06:26.280><c> process</c><00:06:26.699><c> and</c><00:06:27.000><c> we</c><00:06:27.180><c> end</c><00:06:27.300><c> up</c>

00:06:27.409 --> 00:06:27.419 align:start position:0%
for a relocation process and we end up
 

00:06:27.419 --> 00:06:29.930 align:start position:0%
for a relocation process and we end up
with<00:06:27.660><c> a</c><00:06:27.780><c> continuous</c><00:06:28.139><c> memory</c><00:06:28.919><c> so</c><00:06:29.400><c> well</c><00:06:29.580><c> the</c>

00:06:29.930 --> 00:06:29.940 align:start position:0%
with a continuous memory so well the
 

00:06:29.940 --> 00:06:32.210 align:start position:0%
with a continuous memory so well the
segments<00:06:30.479><c> consists</c><00:06:31.319><c> of</c><00:06:31.380><c> the</c><00:06:31.560><c> program</c><00:06:31.740><c> segment</c>

00:06:32.210 --> 00:06:32.220 align:start position:0%
segments consists of the program segment
 

00:06:32.220 --> 00:06:34.070 align:start position:0%
segments consists of the program segment
which<00:06:32.580><c> contains</c><00:06:33.120><c> the</c><00:06:33.300><c> code</c><00:06:33.479><c> of</c><00:06:33.720><c> the</c><00:06:33.900><c> program</c>

00:06:34.070 --> 00:06:34.080 align:start position:0%
which contains the code of the program
 

00:06:34.080 --> 00:06:36.650 align:start position:0%
which contains the code of the program
the<00:06:34.800><c> execution</c><00:06:35.220><c> segment</c><00:06:35.639><c> which</c><00:06:36.060><c> gets</c><00:06:36.360><c> filled</c>

00:06:36.650 --> 00:06:36.660 align:start position:0%
the execution segment which gets filled
 

00:06:36.660 --> 00:06:39.170 align:start position:0%
the execution segment which gets filled
up<00:06:36.780><c> as</c><00:06:37.020><c> the</c><00:06:37.199><c> VM</c><00:06:37.440><c> runs</c><00:06:37.860><c> the</c><00:06:38.400><c> built-in</c><00:06:38.819><c> segment</c>

00:06:39.170 --> 00:06:39.180 align:start position:0%
up as the VM runs the built-in segment
 

00:06:39.180 --> 00:06:41.090 align:start position:0%
up as the VM runs the built-in segment
which<00:06:39.600><c> we'll</c><00:06:39.780><c> talk</c><00:06:40.020><c> about</c><00:06:40.139><c> later</c><00:06:40.500><c> and</c><00:06:40.919><c> the</c>

00:06:41.090 --> 00:06:41.100 align:start position:0%
which we'll talk about later and the
 

00:06:41.100 --> 00:06:43.309 align:start position:0%
which we'll talk about later and the
user<00:06:41.400><c> segment</c><00:06:41.759><c> which</c><00:06:42.240><c> contains</c><00:06:42.780><c> structures</c>

00:06:43.309 --> 00:06:43.319 align:start position:0%
user segment which contains structures
 

00:06:43.319 --> 00:06:45.409 align:start position:0%
user segment which contains structures
defined<00:06:43.740><c> by</c><00:06:43.919><c> the</c><00:06:44.100><c> users</c><00:06:44.400><c> such</c><00:06:44.699><c> as</c><00:06:44.819><c> arrays</c><00:06:45.360><c> or</c>

00:06:45.409 --> 00:06:45.419 align:start position:0%
defined by the users such as arrays or
 

00:06:45.419 --> 00:06:47.809 align:start position:0%
defined by the users such as arrays or
dictionaries<00:06:45.960><c> well</c><00:06:46.560><c> let's</c><00:06:47.160><c> explain</c><00:06:47.400><c> a</c><00:06:47.699><c> bit</c>

00:06:47.809 --> 00:06:47.819 align:start position:0%
dictionaries well let's explain a bit
 

00:06:47.819 --> 00:06:49.969 align:start position:0%
dictionaries well let's explain a bit
about<00:06:48.000><c> this</c><00:06:48.240><c> provocation</c><00:06:48.780><c> process</c><00:06:49.199><c> the</c><00:06:49.860><c> first</c>

00:06:49.969 --> 00:06:49.979 align:start position:0%
about this provocation process the first
 

00:06:49.979 --> 00:06:52.249 align:start position:0%
about this provocation process the first
step<00:06:50.220><c> is</c><00:06:50.460><c> to</c><00:06:50.699><c> assign</c><00:06:51.060><c> a</c><00:06:51.360><c> size</c><00:06:51.539><c> to</c><00:06:51.780><c> each</c><00:06:51.900><c> segment</c>

00:06:52.249 --> 00:06:52.259 align:start position:0%
step is to assign a size to each segment
 

00:06:52.259 --> 00:06:54.770 align:start position:0%
step is to assign a size to each segment
for<00:06:52.680><c> example</c><00:06:52.979><c> the</c><00:06:53.460><c> segment</c><00:06:53.819><c> serial</c><00:06:54.240><c> has</c><00:06:54.479><c> five</c>

00:06:54.770 --> 00:06:54.780 align:start position:0%
for example the segment serial has five
 

00:06:54.780 --> 00:06:57.290 align:start position:0%
for example the segment serial has five
elements<00:06:55.259><c> so</c><00:06:55.500><c> it</c><00:06:55.680><c> has</c><00:06:55.800><c> size</c><00:06:56.039><c> 5</c><00:06:56.340><c> and</c><00:06:56.819><c> then</c><00:06:57.060><c> we</c>

00:06:57.290 --> 00:06:57.300 align:start position:0%
elements so it has size 5 and then we
 

00:06:57.300 --> 00:06:59.870 align:start position:0%
elements so it has size 5 and then we
will<00:06:57.479><c> use</c><00:06:57.720><c> the</c><00:06:58.080><c> sizes</c><00:06:58.500><c> to</c><00:06:58.919><c> assign</c><00:06:59.220><c> a</c><00:06:59.460><c> base</c><00:06:59.580><c> to</c>

00:06:59.870 --> 00:06:59.880 align:start position:0%
will use the sizes to assign a base to
 

00:06:59.880 --> 00:07:02.090 align:start position:0%
will use the sizes to assign a base to
each<00:07:00.000><c> segment</c><00:07:00.360><c> what</c><00:07:01.020><c> when</c><00:07:01.319><c> you</c><00:07:01.440><c> say</c><00:07:01.560><c> with</c><00:07:01.800><c> base</c>

00:07:02.090 --> 00:07:02.100 align:start position:0%
each segment what when you say with base
 

00:07:02.100 --> 00:07:04.909 align:start position:0%
each segment what when you say with base
is<00:07:02.460><c> that</c><00:07:02.639><c> is</c><00:07:03.180><c> the</c><00:07:03.960><c> first</c><00:07:04.080><c> address</c><00:07:04.319><c> of</c><00:07:04.740><c> each</c>

00:07:04.909 --> 00:07:04.919 align:start position:0%
is that is the first address of each
 

00:07:04.919 --> 00:07:07.670 align:start position:0%
is that is the first address of each
segment<00:07:05.280><c> in</c><00:07:05.759><c> the</c><00:07:05.880><c> relocated</c><00:07:06.240><c> memory</c><00:07:06.660><c> so</c><00:07:07.440><c> for</c>

00:07:07.670 --> 00:07:07.680 align:start position:0%
segment in the relocated memory so for
 

00:07:07.680 --> 00:07:10.730 align:start position:0%
segment in the relocated memory so for
example<00:07:07.919><c> for</c><00:07:08.340><c> segment</c><00:07:08.759><c> one</c><00:07:09.080><c> we</c><00:07:10.080><c> have</c><00:07:10.319><c> the</c>

00:07:10.730 --> 00:07:10.740 align:start position:0%
example for segment one we have the
 

00:07:10.740 --> 00:07:12.409 align:start position:0%
example for segment one we have the
previous<00:07:10.919><c> segment</c><00:07:11.400><c> base</c><00:07:11.580><c> is</c><00:07:11.880><c> one</c><00:07:12.120><c> because</c>

00:07:12.409 --> 00:07:12.419 align:start position:0%
previous segment base is one because
 

00:07:12.419 --> 00:07:15.170 align:start position:0%
previous segment base is one because
this<00:07:12.720><c> is</c><00:07:12.900><c> the</c><00:07:13.080><c> first</c><00:07:13.199><c> segment</c><00:07:13.860><c> and</c><00:07:14.759><c> we</c><00:07:15.000><c> add</c>

00:07:15.170 --> 00:07:15.180 align:start position:0%
this is the first segment and we add
 

00:07:15.180 --> 00:07:17.029 align:start position:0%
this is the first segment and we add
five<00:07:15.479><c> which</c><00:07:15.780><c> is</c><00:07:15.900><c> the</c><00:07:16.080><c> size</c><00:07:16.259><c> and</c><00:07:16.500><c> we</c><00:07:16.620><c> get</c><00:07:16.800><c> six</c>

00:07:17.029 --> 00:07:17.039 align:start position:0%
five which is the size and we get six
 

00:07:17.039 --> 00:07:19.909 align:start position:0%
five which is the size and we get six
now<00:07:17.819><c> with</c><00:07:18.180><c> this</c><00:07:18.539><c> space</c><00:07:18.720><c> is</c><00:07:18.960><c> calculated</c><00:07:19.440><c> we'll</c>

00:07:19.909 --> 00:07:19.919 align:start position:0%
now with this space is calculated we'll
 

00:07:19.919 --> 00:07:21.830 align:start position:0%
now with this space is calculated we'll
proceed<00:07:20.340><c> to</c><00:07:20.460><c> relocate</c><00:07:21.000><c> all</c><00:07:21.240><c> the</c><00:07:21.360><c> addresses</c>

00:07:21.830 --> 00:07:21.840 align:start position:0%
proceed to relocate all the addresses
 

00:07:21.840 --> 00:07:25.430 align:start position:0%
proceed to relocate all the addresses
we'll<00:07:22.740><c> do</c><00:07:22.979><c> this</c><00:07:23.160><c> by</c><00:07:23.520><c> adding</c><00:07:24.360><c> the</c><00:07:24.840><c> base</c><00:07:25.020><c> of</c><00:07:25.259><c> the</c>

00:07:25.430 --> 00:07:25.440 align:start position:0%
we'll do this by adding the base of the
 

00:07:25.440 --> 00:07:27.230 align:start position:0%
we'll do this by adding the base of the
segment<00:07:25.740><c> with</c><00:07:26.220><c> the</c><00:07:26.400><c> offset</c><00:07:26.759><c> of</c><00:07:26.940><c> the</c><00:07:27.120><c> address</c>

00:07:27.230 --> 00:07:27.240 align:start position:0%
segment with the offset of the address
 

00:07:27.240 --> 00:07:30.830 align:start position:0%
segment with the offset of the address
so<00:07:28.020><c> for</c><00:07:28.199><c> example</c><00:07:28.440><c> here</c><00:07:28.680><c> we</c><00:07:28.860><c> have</c><00:07:29.699><c> the</c><00:07:30.300><c> segment</c>

00:07:30.830 --> 00:07:30.840 align:start position:0%
so for example here we have the segment
 

00:07:30.840 --> 00:07:34.969 align:start position:0%
so for example here we have the segment
the<00:07:31.440><c> address</c><00:07:31.620><c> 0</c><00:07:32.039><c> 0</c><00:07:32.840><c> the</c><00:07:33.840><c> base</c><00:07:34.259><c> of</c><00:07:34.500><c> the</c><00:07:34.740><c> segment</c>

00:07:34.969 --> 00:07:34.979 align:start position:0%
the address 0 0 the base of the segment
 

00:07:34.979 --> 00:07:38.210 align:start position:0%
the address 0 0 the base of the segment
0<00:07:35.220><c> is</c><00:07:35.580><c> 1</c><00:07:35.819><c> and</c><00:07:36.060><c> we</c><00:07:36.240><c> add</c><00:07:36.479><c> 0</c><00:07:36.660><c> and</c><00:07:37.020><c> get</c><00:07:37.199><c> one</c><00:07:37.440><c> we'll</c><00:07:37.979><c> do</c>

00:07:38.210 --> 00:07:38.220 align:start position:0%
0 is 1 and we add 0 and get one we'll do
 

00:07:38.220 --> 00:07:39.830 align:start position:0%
0 is 1 and we add 0 and get one we'll do
this<00:07:38.340><c> with</c><00:07:38.520><c> all</c><00:07:38.819><c> the</c><00:07:38.940><c> addresses</c><00:07:39.360><c> and</c><00:07:39.599><c> also</c>

00:07:39.830 --> 00:07:39.840 align:start position:0%
this with all the addresses and also
 

00:07:39.840 --> 00:07:41.330 align:start position:0%
this with all the addresses and also
with<00:07:40.020><c> the</c><00:07:40.199><c> addresses</c><00:07:40.620><c> that</c><00:07:40.800><c> are</c><00:07:40.979><c> contained</c>

00:07:41.330 --> 00:07:41.340 align:start position:0%
with the addresses that are contained
 

00:07:41.340 --> 00:07:43.249 align:start position:0%
with the addresses that are contained
inside<00:07:41.460><c> the</c><00:07:41.759><c> memory</c><00:07:42.120><c> for</c><00:07:42.479><c> example</c><00:07:42.720><c> you</c><00:07:43.080><c> see</c>

00:07:43.249 --> 00:07:43.259 align:start position:0%
inside the memory for example you see
 

00:07:43.259 --> 00:07:45.890 align:start position:0%
inside the memory for example you see
here<00:07:43.440><c> that</c><00:07:43.680><c> we</c><00:07:43.919><c> have</c><00:07:44.099><c> two</c><00:07:44.880><c> zero</c><00:07:45.360><c> and</c><00:07:45.599><c> three</c>

00:07:45.890 --> 00:07:45.900 align:start position:0%
here that we have two zero and three
 

00:07:45.900 --> 00:07:49.070 align:start position:0%
here that we have two zero and three
zero<00:07:46.319><c> and</c><00:07:46.919><c> they</c><00:07:47.099><c> both</c><00:07:47.340><c> relocate</c><00:07:48.000><c> to</c><00:07:48.120><c> nine</c><00:07:48.419><c> as</c>

00:07:49.070 --> 00:07:49.080 align:start position:0%
zero and they both relocate to nine as
 

00:07:49.080 --> 00:07:51.170 align:start position:0%
zero and they both relocate to nine as
the<00:07:49.319><c> base</c><00:07:49.500><c> of</c><00:07:49.800><c> the</c><00:07:49.919><c> segment</c><00:07:50.220><c> two</c><00:07:50.460><c> and</c><00:07:50.759><c> segment</c>

00:07:51.170 --> 00:07:51.180 align:start position:0%
the base of the segment two and segment
 

00:07:51.180 --> 00:07:53.749 align:start position:0%
the base of the segment two and segment
three<00:07:51.360><c> is</c><00:07:51.660><c> nine</c><00:07:51.960><c> and</c><00:07:52.919><c> this</c><00:07:53.099><c> is</c><00:07:53.220><c> how</c><00:07:53.520><c> the</c>

00:07:53.749 --> 00:07:53.759 align:start position:0%
three is nine and this is how the
 

00:07:53.759 --> 00:07:56.150 align:start position:0%
three is nine and this is how the
relocated<00:07:54.360><c> memory</c><00:07:54.780><c> looks</c><00:07:55.139><c> like</c><00:07:55.259><c> it's</c><00:07:55.740><c> a</c><00:07:55.979><c> set</c>

00:07:56.150 --> 00:07:56.160 align:start position:0%
relocated memory looks like it's a set
 

00:07:56.160 --> 00:07:59.150 align:start position:0%
relocated memory looks like it's a set
of<00:07:56.340><c> continuous</c><00:07:56.940><c> addresses</c><00:07:57.539><c> with</c><00:07:57.960><c> elements</c>

00:07:59.150 --> 00:07:59.160 align:start position:0%
of continuous addresses with elements
 

00:07:59.160 --> 00:08:01.850 align:start position:0%
of continuous addresses with elements
but<00:07:59.819><c> now</c><00:08:00.240><c> let's</c><00:08:00.419><c> talk</c><00:08:00.599><c> about</c><00:08:00.780><c> the</c><00:08:01.380><c> registers</c>

00:08:01.850 --> 00:08:01.860 align:start position:0%
but now let's talk about the registers
 

00:08:01.860 --> 00:08:04.189 align:start position:0%
but now let's talk about the registers
Cairo<00:08:02.759><c> has</c><00:08:03.000><c> three</c><00:08:03.360><c> general</c><00:08:03.599><c> purpose</c>

00:08:04.189 --> 00:08:04.199 align:start position:0%
Cairo has three general purpose
 

00:08:04.199 --> 00:08:06.350 align:start position:0%
Cairo has three general purpose
registers<00:08:04.740><c> the</c><00:08:05.460><c> first</c><00:08:05.580><c> one</c><00:08:05.759><c> is</c><00:08:05.940><c> the</c><00:08:06.120><c> program</c>

00:08:06.350 --> 00:08:06.360 align:start position:0%
registers the first one is the program
 

00:08:06.360 --> 00:08:08.390 align:start position:0%
registers the first one is the program
counter<00:08:06.900><c> which</c><00:08:07.259><c> iterates</c><00:08:07.800><c> over</c><00:08:07.979><c> the</c><00:08:08.220><c> program</c>

00:08:08.390 --> 00:08:08.400 align:start position:0%
counter which iterates over the program
 

00:08:08.400 --> 00:08:09.950 align:start position:0%
counter which iterates over the program
segments<00:08:09.060><c> and</c><00:08:09.240><c> points</c><00:08:09.539><c> to</c><00:08:09.660><c> the</c><00:08:09.840><c> next</c>

00:08:09.950 --> 00:08:09.960 align:start position:0%
segments and points to the next
 

00:08:09.960 --> 00:08:11.870 align:start position:0%
segments and points to the next
instruction<00:08:10.199><c> to</c><00:08:10.680><c> be</c><00:08:10.800><c> executed</c>

00:08:11.870 --> 00:08:11.880 align:start position:0%
instruction to be executed
 

00:08:11.880 --> 00:08:13.730 align:start position:0%
instruction to be executed
then<00:08:12.300><c> we</c><00:08:12.479><c> have</c><00:08:12.660><c> the</c><00:08:12.840><c> frame</c><00:08:13.080><c> pointer</c><00:08:13.440><c> and</c>

00:08:13.730 --> 00:08:13.740 align:start position:0%
then we have the frame pointer and
 

00:08:13.740 --> 00:08:16.010 align:start position:0%
then we have the frame pointer and
allocation<00:08:14.220><c> pointer</c><00:08:14.699><c> in</c><00:08:15.060><c> execution</c><00:08:15.539><c> segment</c>

00:08:16.010 --> 00:08:16.020 align:start position:0%
allocation pointer in execution segment
 

00:08:16.020 --> 00:08:18.469 align:start position:0%
allocation pointer in execution segment
the<00:08:16.800><c> allocation</c><00:08:17.220><c> pointer</c><00:08:17.639><c> will</c><00:08:18.000><c> point</c><00:08:18.180><c> to</c><00:08:18.300><c> the</c>

00:08:18.469 --> 00:08:18.479 align:start position:0%
the allocation pointer will point to the
 

00:08:18.479 --> 00:08:20.510 align:start position:0%
the allocation pointer will point to the
next<00:08:18.660><c> and</c><00:08:18.840><c> use</c><00:08:19.020><c> memory</c><00:08:19.440><c> cell</c><00:08:19.680><c> while</c><00:08:20.099><c> the</c><00:08:20.280><c> frame</c>

00:08:20.510 --> 00:08:20.520 align:start position:0%
next and use memory cell while the frame
 

00:08:20.520 --> 00:08:22.730 align:start position:0%
next and use memory cell while the frame
pointer<00:08:20.879><c> points</c><00:08:21.360><c> to</c><00:08:21.479><c> the</c><00:08:21.599><c> current</c><00:08:21.720><c> frame</c><00:08:22.139><c> what</c>

00:08:22.730 --> 00:08:22.740 align:start position:0%
pointer points to the current frame what
 

00:08:22.740 --> 00:08:24.350 align:start position:0%
pointer points to the current frame what
this<00:08:22.919><c> means</c><00:08:23.220><c> is</c><00:08:23.340><c> that</c><00:08:23.580><c> when</c><00:08:23.879><c> we</c><00:08:24.060><c> want</c><00:08:24.240><c> to</c>

00:08:24.350 --> 00:08:24.360 align:start position:0%
this means is that when we want to
 

00:08:24.360 --> 00:08:26.510 align:start position:0%
this means is that when we want to
execute<00:08:24.780><c> a</c><00:08:24.900><c> chiro</c><00:08:25.259><c> function</c><00:08:25.560><c> the</c><00:08:26.280><c> frame</c>

00:08:26.510 --> 00:08:26.520 align:start position:0%
execute a chiro function the frame
 

00:08:26.520 --> 00:08:27.890 align:start position:0%
execute a chiro function the frame
pointer<00:08:26.879><c> takes</c><00:08:27.240><c> the</c><00:08:27.419><c> value</c><00:08:27.539><c> of</c><00:08:27.780><c> the</c>

00:08:27.890 --> 00:08:27.900 align:start position:0%
pointer takes the value of the
 

00:08:27.900 --> 00:08:30.050 align:start position:0%
pointer takes the value of the
allocation<00:08:28.259><c> pointer</c><00:08:28.800><c> and</c><00:08:29.280><c> remains</c><00:08:29.699><c> constant</c>

00:08:30.050 --> 00:08:30.060 align:start position:0%
allocation pointer and remains constant
 

00:08:30.060 --> 00:08:31.850 align:start position:0%
allocation pointer and remains constant
while<00:08:30.419><c> the</c><00:08:30.599><c> allocation</c><00:08:30.960><c> pointer</c><00:08:31.440><c> keeps</c>

00:08:31.850 --> 00:08:31.860 align:start position:0%
while the allocation pointer keeps
 

00:08:31.860 --> 00:08:33.649 align:start position:0%
while the allocation pointer keeps
increasing<00:08:32.279><c> as</c><00:08:32.580><c> we</c><00:08:32.820><c> add</c><00:08:33.000><c> elements</c><00:08:33.539><c> into</c>

00:08:33.649 --> 00:08:33.659 align:start position:0%
increasing as we add elements into
 

00:08:33.659 --> 00:08:36.290 align:start position:0%
increasing as we add elements into
memory<00:08:34.039><c> and</c><00:08:35.039><c> when</c><00:08:35.219><c> we</c><00:08:35.399><c> exceed</c><00:08:35.820><c> this</c><00:08:36.000><c> function</c>

00:08:36.290 --> 00:08:36.300 align:start position:0%
memory and when we exceed this function
 

00:08:36.300 --> 00:08:38.329 align:start position:0%
memory and when we exceed this function
the<00:08:37.020><c> frame</c><00:08:37.260><c> pointer</c><00:08:37.560><c> will</c><00:08:37.800><c> change</c><00:08:37.979><c> its</c><00:08:38.279><c> value</c>

00:08:38.329 --> 00:08:38.339 align:start position:0%
the frame pointer will change its value
 

00:08:38.339 --> 00:08:41.209 align:start position:0%
the frame pointer will change its value
this<00:08:39.180><c> is</c><00:08:39.300><c> how</c><00:08:39.599><c> the</c><00:08:39.899><c> VM</c><00:08:40.200><c> operates</c><00:08:40.680><c> this</c><00:08:40.919><c> is</c><00:08:41.099><c> the</c>

00:08:41.209 --> 00:08:41.219 align:start position:0%
this is how the VM operates this is the
 

00:08:41.219 --> 00:08:43.490 align:start position:0%
this is how the VM operates this is the
main<00:08:41.339><c> execution</c><00:08:41.760><c> Loop</c><00:08:42.180><c> we</c><00:08:42.719><c> first</c><00:08:42.959><c> get</c><00:08:43.260><c> the</c>

00:08:43.490 --> 00:08:43.500 align:start position:0%
main execution Loop we first get the
 

00:08:43.500 --> 00:08:46.070 align:start position:0%
main execution Loop we first get the
next<00:08:43.680><c> instruction</c><00:08:43.979><c> we</c><00:08:44.700><c> decoded</c><00:08:45.240><c> we</c><00:08:45.720><c> compute</c>

00:08:46.070 --> 00:08:46.080 align:start position:0%
next instruction we decoded we compute
 

00:08:46.080 --> 00:08:47.990 align:start position:0%
next instruction we decoded we compute
the<00:08:46.260><c> operands</c><00:08:46.800><c> then</c><00:08:47.279><c> we</c><00:08:47.519><c> add</c><00:08:47.640><c> the</c><00:08:47.820><c> current</c>

00:08:47.990 --> 00:08:48.000 align:start position:0%
the operands then we add the current
 

00:08:48.000 --> 00:08:50.210 align:start position:0%
the operands then we add the current
register<00:08:48.420><c> values</c><00:08:48.899><c> to</c><00:08:49.080><c> a</c><00:08:49.260><c> trace</c><00:08:49.440><c> and</c><00:08:49.920><c> then</c><00:08:50.040><c> we</c>

00:08:50.210 --> 00:08:50.220 align:start position:0%
register values to a trace and then we
 

00:08:50.220 --> 00:08:51.949 align:start position:0%
register values to a trace and then we
update<00:08:50.519><c> the</c><00:08:50.700><c> registers</c>

00:08:51.949 --> 00:08:51.959 align:start position:0%
update the registers
 

00:08:51.959 --> 00:08:55.009 align:start position:0%
update the registers
so<00:08:52.560><c> okay</c><00:08:52.860><c> this</c><00:08:53.580><c> is</c><00:08:53.700><c> how</c><00:08:54.060><c> the</c><00:08:54.300><c> trace</c><00:08:54.540><c> looks</c><00:08:54.899><c> like</c>

00:08:55.009 --> 00:08:55.019 align:start position:0%
so okay this is how the trace looks like
 

00:08:55.019 --> 00:08:57.410 align:start position:0%
so okay this is how the trace looks like
it<00:08:55.680><c> keeps</c><00:08:55.980><c> track</c><00:08:56.100><c> of</c><00:08:56.339><c> how</c><00:08:56.760><c> the</c><00:08:56.940><c> registers</c>

00:08:57.410 --> 00:08:57.420 align:start position:0%
it keeps track of how the registers
 

00:08:57.420 --> 00:08:59.090 align:start position:0%
it keeps track of how the registers
change<00:08:57.720><c> for</c><00:08:57.959><c> the</c><00:08:58.200><c> execution</c><00:08:58.620><c> of</c><00:08:58.800><c> the</c><00:08:58.920><c> program</c>

00:08:59.090 --> 00:08:59.100 align:start position:0%
change for the execution of the program
 

00:08:59.100 --> 00:09:00.829 align:start position:0%
change for the execution of the program
and<00:08:59.760><c> it</c><00:08:59.880><c> also</c><00:09:00.120><c> goes</c><00:09:00.420><c> through</c><00:09:00.540><c> the</c><00:09:00.720><c> same</c>

00:09:00.829 --> 00:09:00.839 align:start position:0%
and it also goes through the same
 

00:09:00.839 --> 00:09:03.889 align:start position:0%
and it also goes through the same
relocation<00:09:01.320><c> process</c><00:09:01.740><c> as</c><00:09:01.980><c> memory</c><00:09:02.820><c> well</c><00:09:03.300><c> as</c><00:09:03.779><c> we</c>

00:09:03.889 --> 00:09:03.899 align:start position:0%
relocation process as memory well as we
 

00:09:03.899 --> 00:09:06.590 align:start position:0%
relocation process as memory well as we
can<00:09:04.019><c> see</c><00:09:04.399><c> the</c><00:09:05.399><c> size</c><00:09:05.580><c> of</c><00:09:05.820><c> this</c><00:09:06.000><c> Trace</c><00:09:06.300><c> will</c>

00:09:06.590 --> 00:09:06.600 align:start position:0%
can see the size of this Trace will
 

00:09:06.600 --> 00:09:08.269 align:start position:0%
can see the size of this Trace will
depend<00:09:06.839><c> on</c><00:09:07.019><c> the</c><00:09:07.200><c> amount</c><00:09:07.440><c> of</c><00:09:07.560><c> steps</c><00:09:07.980><c> that</c><00:09:08.100><c> a</c>

00:09:08.269 --> 00:09:08.279 align:start position:0%
depend on the amount of steps that a
 

00:09:08.279 --> 00:09:11.030 align:start position:0%
depend on the amount of steps that a
chirop<00:09:08.519><c> program</c><00:09:08.700><c> takes</c><00:09:09.120><c> so</c><00:09:10.080><c> if</c><00:09:10.440><c> a</c><00:09:10.620><c> chiral</c>

00:09:11.030 --> 00:09:11.040 align:start position:0%
chirop program takes so if a chiral
 

00:09:11.040 --> 00:09:13.130 align:start position:0%
chirop program takes so if a chiral
program<00:09:11.160><c> takes</c><00:09:11.640><c> a</c><00:09:11.820><c> lot</c><00:09:11.880><c> of</c><00:09:12.000><c> steps</c><00:09:12.360><c> this</c><00:09:12.779><c> Trace</c>

00:09:13.130 --> 00:09:13.140 align:start position:0%
program takes a lot of steps this Trace
 

00:09:13.140 --> 00:09:15.290 align:start position:0%
program takes a lot of steps this Trace
will<00:09:13.380><c> get</c><00:09:13.560><c> very</c><00:09:13.800><c> big</c><00:09:14.040><c> and</c><00:09:14.459><c> will</c><00:09:14.700><c> take</c><00:09:15.060><c> more</c>

00:09:15.290 --> 00:09:15.300 align:start position:0%
will get very big and will take more
 

00:09:15.300 --> 00:09:18.889 align:start position:0%
will get very big and will take more
time<00:09:15.540><c> to</c><00:09:15.720><c> generate</c><00:09:16.140><c> the</c><00:09:16.320><c> proof</c><00:09:16.880><c> so</c><00:09:17.899><c> sometimes</c>

00:09:18.889 --> 00:09:18.899 align:start position:0%
time to generate the proof so sometimes
 

00:09:18.899 --> 00:09:21.050 align:start position:0%
time to generate the proof so sometimes
there<00:09:19.140><c> are</c><00:09:19.380><c> some</c><00:09:19.560><c> computations</c><00:09:20.160><c> which</c><00:09:20.820><c> are</c>

00:09:21.050 --> 00:09:21.060 align:start position:0%
there are some computations which are
 

00:09:21.060 --> 00:09:23.870 align:start position:0%
there are some computations which are
expensive<00:09:21.959><c> take</c><00:09:22.380><c> a</c><00:09:22.560><c> lot</c><00:09:22.680><c> of</c><00:09:22.800><c> steps</c><00:09:23.220><c> but</c><00:09:23.700><c> maybe</c>

00:09:23.870 --> 00:09:23.880 align:start position:0%
expensive take a lot of steps but maybe
 

00:09:23.880 --> 00:09:25.730 align:start position:0%
expensive take a lot of steps but maybe
the<00:09:24.120><c> information</c><00:09:24.360><c> provided</c><00:09:25.080><c> by</c><00:09:25.320><c> each</c><00:09:25.500><c> of</c><00:09:25.620><c> the</c>

00:09:25.730 --> 00:09:25.740 align:start position:0%
the information provided by each of the
 

00:09:25.740 --> 00:09:27.889 align:start position:0%
the information provided by each of the
steps<00:09:25.980><c> is</c><00:09:26.279><c> not</c><00:09:26.399><c> that</c><00:09:26.580><c> relevant</c><00:09:27.000><c> for</c><00:09:27.660><c> example</c>

00:09:27.889 --> 00:09:27.899 align:start position:0%
steps is not that relevant for example
 

00:09:27.899 --> 00:09:29.990 align:start position:0%
steps is not that relevant for example
if<00:09:28.260><c> we</c><00:09:28.380><c> want</c><00:09:28.500><c> to</c><00:09:28.620><c> compute</c><00:09:28.980><c> a</c><00:09:29.160><c> Pederson</c><00:09:29.519><c> hash</c>

00:09:29.990 --> 00:09:30.000 align:start position:0%
if we want to compute a Pederson hash
 

00:09:30.000 --> 00:09:33.110 align:start position:0%
if we want to compute a Pederson hash
this<00:09:30.839><c> will</c><00:09:30.959><c> take</c><00:09:31.140><c> many</c><00:09:31.500><c> many</c><00:09:31.680><c> steps</c><00:09:32.160><c> so</c><00:09:32.940><c> in</c>

00:09:33.110 --> 00:09:33.120 align:start position:0%
this will take many many steps so in
 

00:09:33.120 --> 00:09:35.810 align:start position:0%
this will take many many steps so in
order<00:09:33.300><c> to</c><00:09:33.480><c> solve</c><00:09:33.839><c> this</c><00:09:34.019><c> what</c><00:09:34.680><c> we</c><00:09:35.100><c> have</c><00:09:35.279><c> is</c><00:09:35.519><c> oh</c>

00:09:35.810 --> 00:09:35.820 align:start position:0%
order to solve this what we have is oh
 

00:09:35.820 --> 00:09:39.410 align:start position:0%
order to solve this what we have is oh
sorry<00:09:36.600><c> we</c><00:09:37.260><c> have</c><00:09:37.440><c> built-ins</c><00:09:38.399><c> built-ins</c><00:09:39.180><c> are</c>

00:09:39.410 --> 00:09:39.420 align:start position:0%
sorry we have built-ins built-ins are
 

00:09:39.420 --> 00:09:40.970 align:start position:0%
sorry we have built-ins built-ins are
low-level<00:09:39.839><c> optimizations</c><00:09:40.500><c> that</c><00:09:40.860><c> are</c>

00:09:40.970 --> 00:09:40.980 align:start position:0%
low-level optimizations that are
 

00:09:40.980 --> 00:09:42.769 align:start position:0%
low-level optimizations that are
integrated<00:09:41.399><c> in</c><00:09:41.640><c> the</c><00:09:41.880><c> core</c><00:09:41.940><c> Loop</c><00:09:42.240><c> of</c><00:09:42.360><c> the</c><00:09:42.420><c> VM</c>

00:09:42.769 --> 00:09:42.779 align:start position:0%
integrated in the core Loop of the VM
 

00:09:42.779 --> 00:09:44.449 align:start position:0%
integrated in the core Loop of the VM
and<00:09:43.200><c> they</c><00:09:43.320><c> allow</c><00:09:43.560><c> otherwise</c><00:09:43.920><c> expensive</c>

00:09:44.449 --> 00:09:44.459 align:start position:0%
and they allow otherwise expensive
 

00:09:44.459 --> 00:09:45.769 align:start position:0%
and they allow otherwise expensive
computation<00:09:44.880><c> to</c><00:09:45.120><c> be</c><00:09:45.300><c> performed</c><00:09:45.660><c> more</c>

00:09:45.769 --> 00:09:45.779 align:start position:0%
computation to be performed more
 

00:09:45.779 --> 00:09:47.750 align:start position:0%
computation to be performed more
efficiently<00:09:46.260><c> and</c><00:09:46.980><c> while</c><00:09:47.160><c> each</c><00:09:47.459><c> of</c><00:09:47.640><c> these</c>

00:09:47.750 --> 00:09:47.760 align:start position:0%
efficiently and while each of these
 

00:09:47.760 --> 00:09:49.910 align:start position:0%
efficiently and while each of these
segments<00:09:48.180><c> each</c><00:09:48.600><c> of</c><00:09:48.839><c> the</c><00:09:48.959><c> built-ins</c><00:09:49.560><c> have</c><00:09:49.800><c> a</c>

00:09:49.910 --> 00:09:49.920 align:start position:0%
segments each of the built-ins have a
 

00:09:49.920 --> 00:09:51.350 align:start position:0%
segments each of the built-ins have a
segment<00:09:50.160><c> in</c><00:09:50.399><c> memory</c>

00:09:51.350 --> 00:09:51.360 align:start position:0%
segment in memory
 

00:09:51.360 --> 00:09:53.750 align:start position:0%
segment in memory
okay<00:09:51.660><c> but</c><00:09:52.019><c> where</c><00:09:52.380><c> do</c><00:09:52.560><c> they</c><00:09:52.680><c> come</c><00:09:52.860><c> into</c><00:09:53.040><c> play</c>

00:09:53.750 --> 00:09:53.760 align:start position:0%
okay but where do they come into play
 

00:09:53.760 --> 00:09:56.389 align:start position:0%
okay but where do they come into play
well<00:09:54.600><c> we</c><00:09:54.839><c> see</c><00:09:55.019><c> here</c><00:09:55.200><c> that</c><00:09:55.500><c> we</c><00:09:55.800><c> have</c><00:09:55.920><c> our</c><00:09:56.279><c> main</c>

00:09:56.389 --> 00:09:56.399 align:start position:0%
well we see here that we have our main
 

00:09:56.399 --> 00:09:58.490 align:start position:0%
well we see here that we have our main
execution<00:09:56.880><c> Loop</c><00:09:57.240><c> and</c><00:09:57.420><c> we</c><00:09:57.600><c> have</c><00:09:57.720><c> this</c><00:09:57.959><c> the</c><00:09:58.140><c> GS</c>

00:09:58.490 --> 00:09:58.500 align:start position:0%
execution Loop and we have this the GS
 

00:09:58.500 --> 00:10:01.430 align:start position:0%
execution Loop and we have this the GS
operands<00:09:59.100><c> added</c><00:09:59.760><c> and</c><00:10:00.600><c> what</c><00:10:00.959><c> this</c><00:10:01.080><c> means</c><00:10:01.320><c> is</c>

00:10:01.430 --> 00:10:01.440 align:start position:0%
operands added and what this means is
 

00:10:01.440 --> 00:10:03.350 align:start position:0%
operands added and what this means is
that<00:10:01.680><c> sometimes</c><00:10:02.160><c> we</c><00:10:02.399><c> might</c><00:10:02.580><c> want</c><00:10:02.760><c> to</c><00:10:02.880><c> compute</c>

00:10:03.350 --> 00:10:03.360 align:start position:0%
that sometimes we might want to compute
 

00:10:03.360 --> 00:10:05.389 align:start position:0%
that sometimes we might want to compute
an<00:10:03.420><c> operand</c><00:10:03.839><c> and</c><00:10:04.200><c> we</c><00:10:04.380><c> can't</c><00:10:04.500><c> really</c><00:10:04.980><c> compute</c>

00:10:05.389 --> 00:10:05.399 align:start position:0%
an operand and we can't really compute
 

00:10:05.399 --> 00:10:07.550 align:start position:0%
an operand and we can't really compute
it<00:10:05.459><c> directly</c><00:10:05.880><c> and</c><00:10:06.480><c> we'll</c><00:10:06.660><c> rely</c><00:10:07.080><c> on</c><00:10:07.260><c> some</c>

00:10:07.550 --> 00:10:07.560 align:start position:0%
it directly and we'll rely on some
 

00:10:07.560 --> 00:10:11.449 align:start position:0%
it directly and we'll rely on some
deduction<00:10:07.920><c> rules</c><00:10:08.399><c> example</c><00:10:09.300><c> here</c><00:10:09.660><c> we</c><00:10:10.019><c> have</c><00:10:10.459><c> the</c>

00:10:11.449 --> 00:10:11.459 align:start position:0%
deduction rules example here we have the
 

00:10:11.459 --> 00:10:13.430 align:start position:0%
deduction rules example here we have the
Paterson<00:10:11.820><c> built-ins</c><00:10:12.420><c> Auto</c><00:10:12.720><c> reaction</c><00:10:13.140><c> wall</c>

00:10:13.430 --> 00:10:13.440 align:start position:0%
Paterson built-ins Auto reaction wall
 

00:10:13.440 --> 00:10:15.710 align:start position:0%
Paterson built-ins Auto reaction wall
what<00:10:13.980><c> it</c><00:10:14.160><c> does</c><00:10:14.279><c> is</c><00:10:14.519><c> it</c><00:10:15.000><c> takes</c><00:10:15.180><c> the</c><00:10:15.480><c> two</c>

00:10:15.710 --> 00:10:15.720 align:start position:0%
what it does is it takes the two
 

00:10:15.720 --> 00:10:18.710 align:start position:0%
what it does is it takes the two
previous<00:10:16.320><c> values</c><00:10:16.980><c> in</c><00:10:17.399><c> memory</c><00:10:17.760><c> and</c><00:10:18.240><c> computes</c>

00:10:18.710 --> 00:10:18.720 align:start position:0%
previous values in memory and computes
 

00:10:18.720 --> 00:10:21.290 align:start position:0%
previous values in memory and computes
the<00:10:18.779><c> patterns</c><00:10:19.200><c> and</c><00:10:19.260><c> hash</c><00:10:19.440><c> of</c><00:10:19.620><c> them</c><00:10:20.000><c> this</c><00:10:21.000><c> rule</c>

00:10:21.290 --> 00:10:21.300 align:start position:0%
the patterns and hash of them this rule
 

00:10:21.300 --> 00:10:24.410 align:start position:0%
the patterns and hash of them this rule
comes<00:10:22.019><c> into</c><00:10:22.140><c> play</c><00:10:22.380><c> when</c><00:10:22.760><c> the</c><00:10:23.760><c> address</c><00:10:23.880><c> of</c><00:10:24.240><c> the</c>

00:10:24.410 --> 00:10:24.420 align:start position:0%
comes into play when the address of the
 

00:10:24.420 --> 00:10:26.690 align:start position:0%
comes into play when the address of the
operand<00:10:24.779><c> that</c><00:10:24.899><c> we</c><00:10:25.080><c> cannot</c><00:10:25.380><c> compute</c><00:10:25.860><c> belongs</c>

00:10:26.690 --> 00:10:26.700 align:start position:0%
operand that we cannot compute belongs
 

00:10:26.700 --> 00:10:28.430 align:start position:0%
operand that we cannot compute belongs
to<00:10:26.880><c> the</c><00:10:27.180><c> built-in</c><00:10:27.540><c> segment</c><00:10:27.839><c> and</c><00:10:28.260><c> that</c>

00:10:28.430 --> 00:10:28.440 align:start position:0%
to the built-in segment and that
 

00:10:28.440 --> 00:10:31.009 align:start position:0%
to the built-in segment and that
built-in<00:10:28.860><c> has</c><00:10:29.100><c> the</c><00:10:29.399><c> anal</c><00:10:29.880><c> to</c><00:10:30.000><c> the</c><00:10:30.120><c> action</c><00:10:30.300><c> rule</c>

00:10:31.009 --> 00:10:31.019 align:start position:0%
built-in has the anal to the action rule
 

00:10:31.019 --> 00:10:33.230 align:start position:0%
built-in has the anal to the action rule
so<00:10:31.560><c> what</c><00:10:31.740><c> does</c><00:10:31.920><c> what</c><00:10:32.279><c> this</c><00:10:32.459><c> allows</c><00:10:32.820><c> us</c><00:10:32.940><c> to</c><00:10:33.120><c> do</c>

00:10:33.230 --> 00:10:33.240 align:start position:0%
so what does what this allows us to do
 

00:10:33.240 --> 00:10:35.750 align:start position:0%
so what does what this allows us to do
is<00:10:33.480><c> for</c><00:10:33.779><c> example</c><00:10:34.019><c> here</c><00:10:34.380><c> we</c><00:10:35.040><c> want</c><00:10:35.160><c> to</c><00:10:35.279><c> compute</c>

00:10:35.750 --> 00:10:35.760 align:start position:0%
is for example here we want to compute
 

00:10:35.760 --> 00:10:38.630 align:start position:0%
is for example here we want to compute
the<00:10:35.880><c> hash</c><00:10:36.120><c> of</c><00:10:36.420><c> X</c><00:10:36.720><c> and</c><00:10:36.959><c> Y</c><00:10:37.140><c> so</c><00:10:38.040><c> what</c><00:10:38.220><c> we</c><00:10:38.339><c> do</c><00:10:38.519><c> is</c>

00:10:38.630 --> 00:10:38.640 align:start position:0%
the hash of X and Y so what we do is
 

00:10:38.640 --> 00:10:41.210 align:start position:0%
the hash of X and Y so what we do is
insert<00:10:39.180><c> X</c><00:10:39.480><c> and</c><00:10:39.660><c> y's</c><00:10:40.080><c> memory</c><00:10:40.440><c> and</c><00:10:40.740><c> then</c><00:10:40.800><c> we</c><00:10:41.040><c> ask</c>

00:10:41.210 --> 00:10:41.220 align:start position:0%
insert X and y's memory and then we ask
 

00:10:41.220 --> 00:10:43.490 align:start position:0%
insert X and y's memory and then we ask
for<00:10:41.399><c> the</c><00:10:41.640><c> next</c><00:10:41.760><c> memory</c><00:10:42.120><c> location</c><00:10:42.420><c> as</c><00:10:43.320><c> we</c>

00:10:43.490 --> 00:10:43.500 align:start position:0%
for the next memory location as we
 

00:10:43.500 --> 00:10:44.990 align:start position:0%
for the next memory location as we
haven't<00:10:43.680><c> inserted</c><00:10:44.220><c> anything</c><00:10:44.399><c> into</c><00:10:44.700><c> this</c>

00:10:44.990 --> 00:10:45.000 align:start position:0%
haven't inserted anything into this
 

00:10:45.000 --> 00:10:47.090 align:start position:0%
haven't inserted anything into this
memory<00:10:45.240><c> location</c><00:10:45.500><c> we</c><00:10:46.500><c> won't</c><00:10:46.680><c> be</c><00:10:46.800><c> able</c><00:10:46.980><c> to</c>

00:10:47.090 --> 00:10:47.100 align:start position:0%
memory location we won't be able to
 

00:10:47.100 --> 00:10:48.590 align:start position:0%
memory location we won't be able to
compute<00:10:47.459><c> the</c><00:10:47.579><c> operand</c><00:10:48.000><c> and</c><00:10:48.180><c> we</c><00:10:48.300><c> will</c><00:10:48.420><c> fall</c>

00:10:48.590 --> 00:10:48.600 align:start position:0%
compute the operand and we will fall
 

00:10:48.600 --> 00:10:50.449 align:start position:0%
compute the operand and we will fall
back<00:10:48.839><c> on</c><00:10:49.019><c> this</c><00:10:49.200><c> deduction</c><00:10:49.500><c> rule</c><00:10:49.980><c> that</c><00:10:50.100><c> will</c><00:10:50.279><c> be</c>

00:10:50.449 --> 00:10:50.459 align:start position:0%
back on this deduction rule that will be
 

00:10:50.459 --> 00:10:52.190 align:start position:0%
back on this deduction rule that will be
the<00:10:50.579><c> one</c><00:10:50.700><c> Computing</c><00:10:51.240><c> the</c><00:10:51.360><c> hash</c>

00:10:52.190 --> 00:10:52.200 align:start position:0%
the one Computing the hash
 

00:10:52.200 --> 00:10:55.490 align:start position:0%
the one Computing the hash
so<00:10:52.680><c> we</c><00:10:52.920><c> computed</c><00:10:53.399><c> a</c><00:10:53.640><c> person</c><00:10:53.760><c> hash</c><00:10:54.140><c> but</c><00:10:55.140><c> there</c>

00:10:55.490 --> 00:10:55.500 align:start position:0%
so we computed a person hash but there
 

00:10:55.500 --> 00:10:57.949 align:start position:0%
so we computed a person hash but there
is<00:10:55.680><c> no</c><00:10:55.860><c> sign</c><00:10:56.040><c> of</c><00:10:56.279><c> the</c><00:10:56.459><c> computation</c><00:10:57.000><c> in</c><00:10:57.839><c> the</c>

00:10:57.949 --> 00:10:57.959 align:start position:0%
is no sign of the computation in the
 

00:10:57.959 --> 00:11:00.769 align:start position:0%
is no sign of the computation in the
chiral<00:10:58.380><c> memory</c><00:10:58.680><c> or</c><00:10:59.160><c> the</c><00:10:59.339><c> steps</c><00:10:59.760><c> or</c><00:10:59.940><c> the</c><00:11:00.120><c> trace</c>

00:11:00.769 --> 00:11:00.779 align:start position:0%
chiral memory or the steps or the trace
 

00:11:00.779 --> 00:11:02.930 align:start position:0%
chiral memory or the steps or the trace
another<00:11:01.320><c> feature</c><00:11:01.740><c> that</c><00:11:01.920><c> Cairo</c><00:11:02.339><c> offers</c><00:11:02.640><c> are</c>

00:11:02.930 --> 00:11:02.940 align:start position:0%
another feature that Cairo offers are
 

00:11:02.940 --> 00:11:05.269 align:start position:0%
another feature that Cairo offers are
hints<00:11:03.360><c> these</c><00:11:03.959><c> are</c><00:11:04.140><c> blocks</c><00:11:04.560><c> of</c><00:11:04.620><c> python</c><00:11:05.100><c> code</c>

00:11:05.269 --> 00:11:05.279 align:start position:0%
hints these are blocks of python code
 

00:11:05.279 --> 00:11:07.850 align:start position:0%
hints these are blocks of python code
embedded<00:11:05.820><c> into</c><00:11:06.000><c> a</c><00:11:06.240><c> career</c><00:11:06.540><c> program</c><00:11:06.720><c> and</c><00:11:07.560><c> they</c>

00:11:07.850 --> 00:11:07.860 align:start position:0%
embedded into a career program and they
 

00:11:07.860 --> 00:11:11.750 align:start position:0%
embedded into a career program and they
allow<00:11:08.640><c> a</c><00:11:09.000><c> python</c><00:11:09.540><c> context</c><00:11:10.019><c> to</c><00:11:10.500><c> access</c><00:11:11.160><c> the</c><00:11:11.399><c> BM</c>

00:11:11.750 --> 00:11:11.760 align:start position:0%
allow a python context to access the BM
 

00:11:11.760 --> 00:11:14.569 align:start position:0%
allow a python context to access the BM
State<00:11:12.000><c> and</c><00:11:12.300><c> modifier</c><00:11:12.839><c> also</c><00:11:13.380><c> access</c><00:11:13.620><c> local</c>

00:11:14.569 --> 00:11:14.579 align:start position:0%
State and modifier also access local
 

00:11:14.579 --> 00:11:16.850 align:start position:0%
State and modifier also access local
carrier<00:11:15.060><c> variables</c><00:11:15.540><c> and</c><00:11:16.140><c> can</c><00:11:16.320><c> communicate</c>

00:11:16.850 --> 00:11:16.860 align:start position:0%
carrier variables and can communicate
 

00:11:16.860 --> 00:11:18.769 align:start position:0%
carrier variables and can communicate
between<00:11:17.040><c> each</c><00:11:17.399><c> other</c><00:11:17.519><c> for</c><00:11:17.880><c> execution</c><00:11:18.300><c> Scopes</c>

00:11:18.769 --> 00:11:18.779 align:start position:0%
between each other for execution Scopes
 

00:11:18.779 --> 00:11:21.110 align:start position:0%
between each other for execution Scopes
what<00:11:19.380><c> we</c><00:11:19.560><c> see</c><00:11:19.740><c> on</c><00:11:20.040><c> screen</c><00:11:20.220><c> is</c><00:11:20.820><c> the</c><00:11:20.940><c> unlock</c>

00:11:21.110 --> 00:11:21.120 align:start position:0%
what we see on screen is the unlock
 

00:11:21.120 --> 00:11:23.449 align:start position:0%
what we see on screen is the unlock
function<00:11:21.660><c> from</c><00:11:21.959><c> the</c><00:11:22.079><c> common</c><00:11:22.200><c> Library</c><00:11:22.560><c> this</c>

00:11:23.449 --> 00:11:23.459 align:start position:0%
function from the common Library this
 

00:11:23.459 --> 00:11:25.490 align:start position:0%
function from the common Library this
function<00:11:23.760><c> is</c><00:11:24.000><c> commonly</c><00:11:24.420><c> used</c><00:11:24.660><c> to</c><00:11:25.019><c> generate</c>

00:11:25.490 --> 00:11:25.500 align:start position:0%
function is commonly used to generate
 

00:11:25.500 --> 00:11:27.949 align:start position:0%
function is commonly used to generate
arrays<00:11:26.040><c> and</c><00:11:26.519><c> what</c><00:11:26.700><c> it</c><00:11:26.880><c> does</c><00:11:27.000><c> is</c><00:11:27.240><c> it</c><00:11:27.600><c> creates</c><00:11:27.839><c> a</c>

00:11:27.949 --> 00:11:27.959 align:start position:0%
arrays and what it does is it creates a
 

00:11:27.959 --> 00:11:29.630 align:start position:0%
arrays and what it does is it creates a
new<00:11:28.140><c> segment</c><00:11:28.440><c> and</c><00:11:28.740><c> it</c><00:11:28.860><c> inserts</c><00:11:29.279><c> it</c><00:11:29.399><c> into</c>

00:11:29.630 --> 00:11:29.640 align:start position:0%
new segment and it inserts it into
 

00:11:29.640 --> 00:11:32.210 align:start position:0%
new segment and it inserts it into
memory<00:11:30.060><c> so</c><00:11:30.240><c> we</c><00:11:30.480><c> can</c><00:11:30.540><c> use</c><00:11:30.660><c> it</c><00:11:30.899><c> from</c><00:11:31.079><c> Cairo</c><00:11:31.560><c> we</c>

00:11:32.210 --> 00:11:32.220 align:start position:0%
memory so we can use it from Cairo we
 

00:11:32.220 --> 00:11:34.670 align:start position:0%
memory so we can use it from Cairo we
mentioned<00:11:32.579><c> execution</c><00:11:33.120><c> skills</c><00:11:33.600><c> these</c><00:11:34.380><c> Scopes</c>

00:11:34.670 --> 00:11:34.680 align:start position:0%
mentioned execution skills these Scopes
 

00:11:34.680 --> 00:11:36.769 align:start position:0%
mentioned execution skills these Scopes
are<00:11:35.040><c> a</c><00:11:35.279><c> stack</c><00:11:35.459><c> of</c><00:11:35.640><c> dictionaries</c><00:11:36.120><c> that</c><00:11:36.600><c> can</c>

00:11:36.769 --> 00:11:36.779 align:start position:0%
are a stack of dictionaries that can
 

00:11:36.779 --> 00:11:38.810 align:start position:0%
are a stack of dictionaries that can
hold<00:11:37.019><c> variables</c><00:11:37.560><c> that</c><00:11:37.740><c> are</c><00:11:37.920><c> created</c><00:11:38.160><c> inside</c><00:11:38.519><c> a</c>

00:11:38.810 --> 00:11:38.820 align:start position:0%
hold variables that are created inside a
 

00:11:38.820 --> 00:11:41.269 align:start position:0%
hold variables that are created inside a
hands<00:11:39.180><c> these</c><00:11:40.019><c> variables</c><00:11:40.440><c> are</c><00:11:40.620><c> not</c><00:11:40.800><c> seen</c><00:11:41.040><c> by</c>

00:11:41.269 --> 00:11:41.279 align:start position:0%
hands these variables are not seen by
 

00:11:41.279 --> 00:11:44.030 align:start position:0%
hands these variables are not seen by
Carol<00:11:41.760><c> just</c><00:11:42.120><c> by</c><00:11:42.360><c> the</c><00:11:42.480><c> hands</c><00:11:42.839><c> and</c><00:11:43.500><c> this</c><00:11:43.680><c> can</c><00:11:43.860><c> be</c>

00:11:44.030 --> 00:11:44.040 align:start position:0%
Carol just by the hands and this can be
 

00:11:44.040 --> 00:11:47.150 align:start position:0%
Carol just by the hands and this can be
created<00:11:44.459><c> and</c><00:11:44.880><c> removed</c><00:11:45.360><c> inside</c><00:11:45.720><c> hints</c><00:11:46.560><c> and</c>

00:11:47.150 --> 00:11:47.160 align:start position:0%
created and removed inside hints and
 

00:11:47.160 --> 00:11:49.190 align:start position:0%
created and removed inside hints and
multiple<00:11:47.579><c> hints</c><00:11:48.000><c> can</c><00:11:48.180><c> access</c><00:11:48.360><c> the</c><00:11:48.660><c> same</c><00:11:48.779><c> scope</c>

00:11:49.190 --> 00:11:49.200 align:start position:0%
multiple hints can access the same scope
 

00:11:49.200 --> 00:11:51.710 align:start position:0%
multiple hints can access the same scope
for<00:11:49.860><c> example</c><00:11:50.100><c> this</c><00:11:50.579><c> code</c><00:11:50.760><c> is</c><00:11:50.880><c> a</c><00:11:51.000><c> bit</c><00:11:51.120><c> long</c><00:11:51.300><c> but</c>

00:11:51.710 --> 00:11:51.720 align:start position:0%
for example this code is a bit long but
 

00:11:51.720 --> 00:11:54.410 align:start position:0%
for example this code is a bit long but
we<00:11:52.620><c> could</c><00:11:52.860><c> just</c><00:11:53.100><c> focus</c><00:11:53.399><c> on</c><00:11:53.519><c> for</c><00:11:53.820><c> example</c><00:11:54.060><c> we</c>

00:11:54.410 --> 00:11:54.420 align:start position:0%
we could just focus on for example we
 

00:11:54.420 --> 00:11:57.230 align:start position:0%
we could just focus on for example we
first<00:11:54.720><c> enter</c><00:11:55.019><c> the</c><00:11:55.320><c> scope</c><00:11:55.560><c> with</c><00:11:56.399><c> an</c><00:11:56.640><c> N</c><00:11:56.820><c> variable</c>

00:11:57.230 --> 00:11:57.240 align:start position:0%
first enter the scope with an N variable
 

00:11:57.240 --> 00:12:00.470 align:start position:0%
first enter the scope with an N variable
then<00:11:58.079><c> we</c><00:11:58.320><c> use</c><00:11:58.560><c> that</c><00:11:58.800><c> n</c><00:11:59.040><c> variable</c><00:11:59.459><c> we</c><00:12:00.060><c> modify</c><00:12:00.420><c> it</c>

00:12:00.470 --> 00:12:00.480 align:start position:0%
then we use that n variable we modify it
 

00:12:00.480 --> 00:12:02.990 align:start position:0%
then we use that n variable we modify it
for<00:12:00.600><c> by</c><00:12:00.720><c> situations</c><00:12:01.680><c> and</c><00:12:02.160><c> then</c><00:12:02.220><c> we</c><00:12:02.459><c> exit</c><00:12:02.820><c> the</c>

00:12:02.990 --> 00:12:03.000 align:start position:0%
for by situations and then we exit the
 

00:12:03.000 --> 00:12:06.230 align:start position:0%
for by situations and then we exit the
scope<00:12:03.240><c> deleting</c><00:12:04.019><c> this</c><00:12:04.200><c> and</c><00:12:04.380><c> variable</c><00:12:04.680><c> well</c><00:12:05.640><c> so</c>

00:12:06.230 --> 00:12:06.240 align:start position:0%
scope deleting this and variable well so
 

00:12:06.240 --> 00:12:07.970 align:start position:0%
scope deleting this and variable well so
now<00:12:06.360><c> let's</c><00:12:06.540><c> talk</c><00:12:06.720><c> about</c><00:12:06.899><c> how</c><00:12:07.320><c> we</c><00:12:07.440><c> implemented</c>

00:12:07.970 --> 00:12:07.980 align:start position:0%
now let's talk about how we implemented
 

00:12:07.980 --> 00:12:09.889 align:start position:0%
now let's talk about how we implemented
hints<00:12:08.399><c> in</c><00:12:08.519><c> Cairo</c><00:12:08.940><c> RS</c>

00:12:09.889 --> 00:12:09.899 align:start position:0%
hints in Cairo RS
 

00:12:09.899 --> 00:12:12.530 align:start position:0%
hints in Cairo RS
that<00:12:10.380><c> is</c><00:12:10.500><c> our</c><00:12:10.680><c> implementation</c><00:12:11.279><c> of</c><00:12:11.519><c> the</c><00:12:11.640><c> VM</c>

00:12:12.530 --> 00:12:12.540 align:start position:0%
that is our implementation of the VM
 

00:12:12.540 --> 00:12:13.550 align:start position:0%
that is our implementation of the VM
well

00:12:13.550 --> 00:12:13.560 align:start position:0%
well
 

00:12:13.560 --> 00:12:15.889 align:start position:0%
well
first<00:12:13.920><c> why</c><00:12:14.220><c> we</c><00:12:14.399><c> chose</c><00:12:14.519><c> rust</c><00:12:14.940><c> we</c><00:12:15.360><c> chose</c><00:12:15.540><c> Frost</c>

00:12:15.889 --> 00:12:15.899 align:start position:0%
first why we chose rust we chose Frost
 

00:12:15.899 --> 00:12:17.930 align:start position:0%
first why we chose rust we chose Frost
because<00:12:16.140><c> it</c><00:12:16.500><c> offers</c><00:12:16.860><c> very</c><00:12:17.279><c> good</c><00:12:17.459><c> performance</c>

00:12:17.930 --> 00:12:17.940 align:start position:0%
because it offers very good performance
 

00:12:17.940 --> 00:12:20.509 align:start position:0%
because it offers very good performance
memory<00:12:18.839><c> safety</c><00:12:19.260><c> guarantees</c><00:12:19.740><c> and</c><00:12:20.040><c> it</c><00:12:20.160><c> also</c><00:12:20.399><c> has</c>

00:12:20.509 --> 00:12:20.519 align:start position:0%
memory safety guarantees and it also has
 

00:12:20.519 --> 00:12:22.670 align:start position:0%
memory safety guarantees and it also has
an<00:12:20.640><c> amazing</c><00:12:21.000><c> Community</c><00:12:21.240><c> well</c><00:12:21.779><c> our</c><00:12:22.500><c> first</c>

00:12:22.670 --> 00:12:22.680 align:start position:0%
an amazing Community well our first
 

00:12:22.680 --> 00:12:25.250 align:start position:0%
an amazing Community well our first
iteration<00:12:23.160><c> of</c><00:12:23.399><c> hints</c><00:12:23.760><c> entire</c><00:12:24.120><c> RS</c><00:12:24.540><c> was</c>

00:12:25.250 --> 00:12:25.260 align:start position:0%
iteration of hints entire RS was
 

00:12:25.260 --> 00:12:28.130 align:start position:0%
iteration of hints entire RS was
basically<00:12:25.740><c> to</c><00:12:26.100><c> implement</c><00:12:26.760><c> Ros</c><00:12:27.540><c> functions</c>

00:12:28.130 --> 00:12:28.140 align:start position:0%
basically to implement Ros functions
 

00:12:28.140 --> 00:12:30.170 align:start position:0%
basically to implement Ros functions
that<00:12:28.320><c> would</c><00:12:28.500><c> imitate</c><00:12:28.920><c> the</c><00:12:29.160><c> behavior</c><00:12:29.519><c> of</c><00:12:29.700><c> hands</c>

00:12:30.170 --> 00:12:30.180 align:start position:0%
that would imitate the behavior of hands
 

00:12:30.180 --> 00:12:33.050 align:start position:0%
that would imitate the behavior of hands
and<00:12:30.720><c> match</c><00:12:30.899><c> these</c><00:12:31.320><c> blocks</c><00:12:31.620><c> of</c><00:12:31.740><c> python</c><00:12:32.160><c> code</c><00:12:32.399><c> to</c>

00:12:33.050 --> 00:12:33.060 align:start position:0%
and match these blocks of python code to
 

00:12:33.060 --> 00:12:35.509 align:start position:0%
and match these blocks of python code to
our<00:12:33.360><c> sense</c><00:12:33.959><c> for</c><00:12:34.320><c> example</c><00:12:34.560><c> the</c><00:12:34.920><c> constants</c><00:12:35.279><c> we</c>

00:12:35.509 --> 00:12:35.519 align:start position:0%
our sense for example the constants we
 

00:12:35.519 --> 00:12:38.210 align:start position:0%
our sense for example the constants we
see<00:12:35.700><c> here</c><00:12:35.940><c> are</c><00:12:36.600><c> the</c><00:12:36.779><c> blocks</c><00:12:37.079><c> of</c><00:12:37.200><c> python</c><00:12:37.560><c> code</c>

00:12:38.210 --> 00:12:38.220 align:start position:0%
see here are the blocks of python code
 

00:12:38.220 --> 00:12:40.490 align:start position:0%
see here are the blocks of python code
and<00:12:39.000><c> this</c><00:12:39.300><c> is</c><00:12:39.420><c> again</c><00:12:39.600><c> the</c><00:12:39.899><c> example</c><00:12:40.200><c> of</c><00:12:40.320><c> the</c>

00:12:40.490 --> 00:12:40.500 align:start position:0%
and this is again the example of the
 

00:12:40.500 --> 00:12:42.350 align:start position:0%
and this is again the example of the
alac<00:12:40.860><c> function</c><00:12:41.220><c> this</c><00:12:41.820><c> is</c><00:12:41.880><c> the</c><00:12:42.000><c> block</c><00:12:42.120><c> of</c>

00:12:42.350 --> 00:12:42.360 align:start position:0%
alac function this is the block of
 

00:12:42.360 --> 00:12:44.329 align:start position:0%
alac function this is the block of
python<00:12:42.839><c> code</c><00:12:43.019><c> and</c><00:12:43.440><c> this</c><00:12:43.620><c> is</c><00:12:43.740><c> how</c><00:12:43.980><c> we</c><00:12:44.100><c> replace</c>

00:12:44.329 --> 00:12:44.339 align:start position:0%
python code and this is how we replace
 

00:12:44.339 --> 00:12:47.629 align:start position:0%
python code and this is how we replace
it<00:12:44.639><c> with</c><00:12:45.000><c> a</c><00:12:45.120><c> rust</c><00:12:45.420><c> native</c><00:12:45.720><c> function</c><00:12:46.079><c> well</c><00:12:46.639><c> this</c>

00:12:47.629 --> 00:12:47.639 align:start position:0%
it with a rust native function well this
 

00:12:47.639 --> 00:12:50.449 align:start position:0%
it with a rust native function well this
first<00:12:48.060><c> iteration</c><00:12:48.540><c> had</c><00:12:48.899><c> pros</c><00:12:49.320><c> and</c><00:12:49.380><c> cons</c><00:12:49.560><c> on</c><00:12:50.339><c> the</c>

00:12:50.449 --> 00:12:50.459 align:start position:0%
first iteration had pros and cons on the
 

00:12:50.459 --> 00:12:52.310 align:start position:0%
first iteration had pros and cons on the
cross<00:12:50.579><c> side</c><00:12:50.880><c> we</c><00:12:51.180><c> had</c><00:12:51.360><c> that</c><00:12:51.540><c> it</c><00:12:51.779><c> was</c><00:12:51.959><c> very</c><00:12:52.139><c> easy</c>

00:12:52.310 --> 00:12:52.320 align:start position:0%
cross side we had that it was very easy
 

00:12:52.320 --> 00:12:54.110 align:start position:0%
cross side we had that it was very easy
to<00:12:52.560><c> implement</c><00:12:52.800><c> as</c><00:12:53.160><c> we</c><00:12:53.339><c> didn't</c><00:12:53.459><c> need</c><00:12:53.760><c> any</c><00:12:53.940><c> new</c>

00:12:54.110 --> 00:12:54.120 align:start position:0%
to implement as we didn't need any new
 

00:12:54.120 --> 00:12:55.910 align:start position:0%
to implement as we didn't need any new
tools<00:12:54.540><c> and</c><00:12:55.019><c> it</c><00:12:55.139><c> also</c><00:12:55.380><c> offered</c><00:12:55.680><c> better</c>

00:12:55.910 --> 00:12:55.920 align:start position:0%
tools and it also offered better
 

00:12:55.920 --> 00:12:58.490 align:start position:0%
tools and it also offered better
performance<00:12:56.519><c> as</c><00:12:57.240><c> calling</c><00:12:57.660><c> functions</c><00:12:58.139><c> within</c>

00:12:58.490 --> 00:12:58.500 align:start position:0%
performance as calling functions within
 

00:12:58.500 --> 00:13:00.590 align:start position:0%
performance as calling functions within
the<00:12:58.680><c> BM</c><00:12:58.980><c> was</c><00:12:59.220><c> much</c><00:12:59.459><c> faster</c><00:12:59.820><c> than</c><00:13:00.120><c> compiling</c>

00:13:00.590 --> 00:13:00.600 align:start position:0%
the BM was much faster than compiling
 

00:13:00.600 --> 00:13:03.170 align:start position:0%
the BM was much faster than compiling
and<00:13:00.779><c> running</c><00:13:00.959><c> code</c><00:13:01.260><c> during</c><00:13:01.500><c> the</c><00:13:01.680><c> vm's</c><00:13:02.160><c> run</c><00:13:02.339><c> but</c>

00:13:03.170 --> 00:13:03.180 align:start position:0%
and running code during the vm's run but
 

00:13:03.180 --> 00:13:05.090 align:start position:0%
and running code during the vm's run but
on<00:13:03.420><c> the</c><00:13:03.540><c> con</c><00:13:03.660><c> side</c><00:13:03.959><c> is</c><00:13:04.200><c> that</c><00:13:04.440><c> we</c><00:13:04.680><c> needed</c><00:13:04.920><c> to</c>

00:13:05.090 --> 00:13:05.100 align:start position:0%
on the con side is that we needed to
 

00:13:05.100 --> 00:13:07.670 align:start position:0%
on the con side is that we needed to
watch<00:13:05.339><c> out</c><00:13:05.519><c> for</c><00:13:05.820><c> changes</c><00:13:06.240><c> we</c><00:13:06.959><c> first</c><00:13:07.200><c> applied</c>

00:13:07.670 --> 00:13:07.680 align:start position:0%
watch out for changes we first applied
 

00:13:07.680 --> 00:13:09.590 align:start position:0%
watch out for changes we first applied
this<00:13:07.800><c> to</c><00:13:08.040><c> the</c><00:13:08.160><c> common</c><00:13:08.279><c> Library</c><00:13:08.639><c> so</c><00:13:09.180><c> if</c><00:13:09.420><c> a</c>

00:13:09.590 --> 00:13:09.600 align:start position:0%
this to the common Library so if a
 

00:13:09.600 --> 00:13:11.690 align:start position:0%
this to the common Library so if a
common<00:13:09.720><c> Library</c><00:13:10.019><c> hand</c><00:13:10.320><c> were</c><00:13:10.680><c> to</c><00:13:10.860><c> change</c><00:13:11.100><c> we</c>

00:13:11.690 --> 00:13:11.700 align:start position:0%
common Library hand were to change we
 

00:13:11.700 --> 00:13:13.550 align:start position:0%
common Library hand were to change we
needed<00:13:11.940><c> to</c><00:13:12.060><c> change</c><00:13:12.240><c> our</c><00:13:12.540><c> implementation</c><00:13:13.200><c> in</c>

00:13:13.550 --> 00:13:13.560 align:start position:0%
needed to change our implementation in
 

00:13:13.560 --> 00:13:15.650 align:start position:0%
needed to change our implementation in
order<00:13:13.680><c> to</c><00:13:13.860><c> keep</c><00:13:14.040><c> supporting</c><00:13:14.579><c> it</c><00:13:14.700><c> and</c><00:13:15.240><c> it</c><00:13:15.420><c> also</c>

00:13:15.650 --> 00:13:15.660 align:start position:0%
order to keep supporting it and it also
 

00:13:15.660 --> 00:13:18.110 align:start position:0%
order to keep supporting it and it also
wasn't<00:13:15.839><c> really</c><00:13:16.200><c> extensible</c><00:13:17.100><c> as</c><00:13:17.639><c> if</c><00:13:17.820><c> we</c><00:13:17.940><c> wanted</c>

00:13:18.110 --> 00:13:18.120 align:start position:0%
wasn't really extensible as if we wanted
 

00:13:18.120 --> 00:13:20.030 align:start position:0%
wasn't really extensible as if we wanted
to<00:13:18.360><c> support</c><00:13:18.540><c> more</c><00:13:18.899><c> hints</c><00:13:19.320><c> we'd</c><00:13:19.620><c> had</c><00:13:19.740><c> to</c><00:13:19.920><c> code</c>

00:13:20.030 --> 00:13:20.040 align:start position:0%
to support more hints we'd had to code
 

00:13:20.040 --> 00:13:22.910 align:start position:0%
to support more hints we'd had to code
it<00:13:20.279><c> inside</c><00:13:20.519><c> our</c><00:13:20.820><c> BM</c><00:13:21.300><c> so</c><00:13:22.079><c> as</c><00:13:22.260><c> we</c><00:13:22.500><c> wanted</c><00:13:22.680><c> to</c>

00:13:22.910 --> 00:13:22.920 align:start position:0%
it inside our BM so as we wanted to
 

00:13:22.920 --> 00:13:24.710 align:start position:0%
it inside our BM so as we wanted to
support<00:13:23.040><c> user</c><00:13:23.519><c> defined</c><00:13:23.880><c> hints</c><00:13:24.240><c> and</c><00:13:24.360><c> we</c><00:13:24.480><c> also</c>

00:13:24.710 --> 00:13:24.720 align:start position:0%
support user defined hints and we also
 

00:13:24.720 --> 00:13:27.110 align:start position:0%
support user defined hints and we also
wanted<00:13:24.899><c> to</c><00:13:25.200><c> integrate</c><00:13:25.740><c> our</c><00:13:26.040><c> VM</c><00:13:26.459><c> with</c><00:13:27.000><c> the</c>

00:13:27.110 --> 00:13:27.120 align:start position:0%
wanted to integrate our VM with the
 

00:13:27.120 --> 00:13:29.509 align:start position:0%
wanted to integrate our VM with the
current<00:13:27.300><c> python</c><00:13:27.779><c> infrastructure</c><00:13:28.440><c> we</c><00:13:29.100><c> decided</c>

00:13:29.509 --> 00:13:29.519 align:start position:0%
current python infrastructure we decided
 

00:13:29.519 --> 00:13:31.610 align:start position:0%
current python infrastructure we decided
to<00:13:29.700><c> go</c><00:13:29.940><c> with</c><00:13:30.120><c> the</c><00:13:30.300><c> next</c><00:13:30.420><c> iteration</c><00:13:30.899><c> that</c>

00:13:31.610 --> 00:13:31.620 align:start position:0%
to go with the next iteration that
 

00:13:31.620 --> 00:13:34.129 align:start position:0%
to go with the next iteration that
consisted<00:13:32.100><c> of</c><00:13:32.279><c> integrating</c><00:13:32.820><c> python</c><00:13:33.360><c> with</c><00:13:33.540><c> RBM</c>

00:13:34.129 --> 00:13:34.139 align:start position:0%
consisted of integrating python with RBM
 

00:13:34.139 --> 00:13:36.410 align:start position:0%
consisted of integrating python with RBM
in<00:13:34.740><c> order</c><00:13:34.860><c> to</c><00:13:35.040><c> achieve</c><00:13:35.459><c> this</c><00:13:35.579><c> we</c><00:13:35.940><c> used</c><00:13:36.120><c> the</c>

00:13:36.410 --> 00:13:36.420 align:start position:0%
in order to achieve this we used the
 

00:13:36.420 --> 00:13:38.930 align:start position:0%
in order to achieve this we used the
create<00:13:36.600><c> Pi</c><00:13:37.019><c> u3</c><00:13:37.320><c> it</c><00:13:37.680><c> is</c><00:13:37.800><c> a</c><00:13:37.860><c> creative</c><00:13:38.160><c> provides</c>

00:13:38.930 --> 00:13:38.940 align:start position:0%
create Pi u3 it is a creative provides
 

00:13:38.940 --> 00:13:41.210 align:start position:0%
create Pi u3 it is a creative provides
rust<00:13:39.300><c> bindings</c><00:13:39.660><c> for</c><00:13:39.839><c> Python</c><00:13:40.320><c> and</c><00:13:40.620><c> it</c><00:13:40.800><c> allowed</c>

00:13:41.210 --> 00:13:41.220 align:start position:0%
rust bindings for Python and it allowed
 

00:13:41.220 --> 00:13:43.430 align:start position:0%
rust bindings for Python and it allowed
us<00:13:41.399><c> to</c><00:13:41.639><c> share</c><00:13:41.820><c> our</c><00:13:42.060><c> BM</c><00:13:42.420><c> state</c><00:13:42.660><c> with</c><00:13:42.899><c> the</c><00:13:43.079><c> python</c>

00:13:43.430 --> 00:13:43.440 align:start position:0%
us to share our BM state with the python
 

00:13:43.440 --> 00:13:45.889 align:start position:0%
us to share our BM state with the python
context<00:13:43.800><c> I</c><00:13:44.459><c> know</c><00:13:44.639><c> that</c><00:13:44.820><c> python</c><00:13:45.240><c> context</c><00:13:45.600><c> to</c>

00:13:45.889 --> 00:13:45.899 align:start position:0%
context I know that python context to
 

00:13:45.899 --> 00:13:49.190 align:start position:0%
context I know that python context to
modify<00:13:46.260><c> RBM</c><00:13:46.800><c> and</c><00:13:47.519><c> also</c><00:13:47.880><c> allow</c><00:13:48.540><c> us</c><00:13:48.660><c> to</c><00:13:48.779><c> define</c><00:13:48.899><c> a</c>

00:13:49.190 --> 00:13:49.200 align:start position:0%
modify RBM and also allow us to define a
 

00:13:49.200 --> 00:13:51.230 align:start position:0%
modify RBM and also allow us to define a
strict<00:13:49.500><c> interface</c><00:13:49.980><c> between</c><00:13:50.279><c> our</c><00:13:50.519><c> VM</c><00:13:50.940><c> and</c>

00:13:51.230 --> 00:13:51.240 align:start position:0%
strict interface between our VM and
 

00:13:51.240 --> 00:13:53.150 align:start position:0%
strict interface between our VM and
python<00:13:51.660><c> by</c><00:13:51.899><c> using</c><00:13:52.260><c> pi</c><00:13:52.500><c> classes</c><00:13:52.860><c> and</c><00:13:52.980><c> Pi</c>

00:13:53.150 --> 00:13:53.160 align:start position:0%
python by using pi classes and Pi
 

00:13:53.160 --> 00:13:55.910 align:start position:0%
python by using pi classes and Pi
methods<00:13:53.639><c> Pi</c><00:13:54.360><c> classes</c><00:13:54.720><c> are</c><00:13:55.019><c> brush</c><00:13:55.500><c> structs</c>

00:13:55.910 --> 00:13:55.920 align:start position:0%
methods Pi classes are brush structs
 

00:13:55.920 --> 00:13:57.949 align:start position:0%
methods Pi classes are brush structs
that<00:13:56.040><c> can</c><00:13:56.220><c> be</c><00:13:56.339><c> interpreted</c><00:13:57.000><c> as</c><00:13:57.420><c> python</c>

00:13:57.949 --> 00:13:57.959 align:start position:0%
that can be interpreted as python
 

00:13:57.959 --> 00:14:01.069 align:start position:0%
that can be interpreted as python
objects<00:13:58.380><c> and</c><00:13:58.980><c> Pi</c><00:13:59.220><c> methods</c><00:13:59.760><c> are</c><00:13:59.940><c> Russ</c><00:14:00.240><c> methods</c>

00:14:01.069 --> 00:14:01.079 align:start position:0%
objects and Pi methods are Russ methods
 

00:14:01.079 --> 00:14:03.110 align:start position:0%
objects and Pi methods are Russ methods
that<00:14:01.260><c> can</c><00:14:01.380><c> be</c><00:14:01.500><c> called</c><00:14:01.620><c> from</c><00:14:01.800><c> within</c><00:14:02.160><c> python</c>

00:14:03.110 --> 00:14:03.120 align:start position:0%
that can be called from within python
 

00:14:03.120 --> 00:14:05.930 align:start position:0%
that can be called from within python
so<00:14:03.720><c> let's</c><00:14:03.959><c> take</c><00:14:04.260><c> a</c><00:14:04.380><c> look</c><00:14:04.500><c> at</c><00:14:04.680><c> the</c><00:14:05.040><c> code</c><00:14:05.220><c> and</c>

00:14:05.930 --> 00:14:05.940 align:start position:0%
so let's take a look at the code and
 

00:14:05.940 --> 00:14:07.910 align:start position:0%
so let's take a look at the code and
well<00:14:06.300><c> this</c><00:14:06.540><c> is</c><00:14:06.600><c> how</c><00:14:06.839><c> we</c><00:14:07.019><c> allowed</c><00:14:07.380><c> hints</c><00:14:07.860><c> to</c>

00:14:07.910 --> 00:14:07.920 align:start position:0%
well this is how we allowed hints to
 

00:14:07.920 --> 00:14:10.550 align:start position:0%
well this is how we allowed hints to
modify<00:14:08.279><c> memory</c><00:14:08.700><c> we</c><00:14:09.180><c> created</c><00:14:09.480><c> this</c><00:14:09.839><c> Pi</c><00:14:10.200><c> memory</c>

00:14:10.550 --> 00:14:10.560 align:start position:0%
modify memory we created this Pi memory
 

00:14:10.560 --> 00:14:13.550 align:start position:0%
modify memory we created this Pi memory
object<00:14:11.060><c> and</c><00:14:12.060><c> when</c><00:14:12.360><c> we</c><00:14:12.540><c> want</c><00:14:12.660><c> to</c><00:14:12.779><c> get</c><00:14:13.019><c> an</c><00:14:13.200><c> item</c>

00:14:13.550 --> 00:14:13.560 align:start position:0%
object and when we want to get an item
 

00:14:13.560 --> 00:14:15.949 align:start position:0%
object and when we want to get an item
what<00:14:14.399><c> actually</c><00:14:14.579><c> happens</c><00:14:15.000><c> is</c><00:14:15.300><c> that</c><00:14:15.540><c> we</c><00:14:15.779><c> call</c>

00:14:15.949 --> 00:14:15.959 align:start position:0%
what actually happens is that we call
 

00:14:15.959 --> 00:14:18.410 align:start position:0%
what actually happens is that we call
our<00:14:16.200><c> VMS</c><00:14:16.740><c> memory</c><00:14:17.040><c> and</c><00:14:17.399><c> we</c><00:14:17.519><c> use</c><00:14:17.639><c> our</c><00:14:17.880><c> rust</c><00:14:18.240><c> get</c>

00:14:18.410 --> 00:14:18.420 align:start position:0%
our VMS memory and we use our rust get
 

00:14:18.420 --> 00:14:20.930 align:start position:0%
our VMS memory and we use our rust get
function<00:14:18.920><c> and</c><00:14:19.920><c> the</c><00:14:20.100><c> same</c><00:14:20.220><c> happens</c><00:14:20.459><c> when</c><00:14:20.760><c> we</c>

00:14:20.930 --> 00:14:20.940 align:start position:0%
function and the same happens when we
 

00:14:20.940 --> 00:14:22.850 align:start position:0%
function and the same happens when we
want<00:14:21.060><c> to</c><00:14:21.120><c> set</c><00:14:21.300><c> an</c><00:14:21.480><c> item</c>

00:14:22.850 --> 00:14:22.860 align:start position:0%
want to set an item
 

00:14:22.860 --> 00:14:25.850 align:start position:0%
want to set an item
uh<00:14:23.579><c> well</c><00:14:23.880><c> how</c><00:14:24.540><c> did</c><00:14:24.660><c> we</c><00:14:24.839><c> allow</c><00:14:25.139><c> it</c><00:14:25.260><c> to</c><00:14:25.440><c> modify</c>

00:14:25.850 --> 00:14:25.860 align:start position:0%
uh well how did we allow it to modify
 

00:14:25.860 --> 00:14:28.009 align:start position:0%
uh well how did we allow it to modify
chiral<00:14:26.339><c> local</c><00:14:26.519><c> variables</c><00:14:27.060><c> and</c><00:14:27.600><c> carry</c><00:14:27.899><c> local</c>

00:14:28.009 --> 00:14:28.019 align:start position:0%
chiral local variables and carry local
 

00:14:28.019 --> 00:14:30.170 align:start position:0%
chiral local variables and carry local
variables<00:14:28.620><c> can</c><00:14:28.860><c> be</c><00:14:28.980><c> accessed</c><00:14:29.399><c> inside</c><00:14:29.639><c> Hands</c>

00:14:30.170 --> 00:14:30.180 align:start position:0%
variables can be accessed inside Hands
 

00:14:30.180 --> 00:14:32.449 align:start position:0%
variables can be accessed inside Hands
by<00:14:30.420><c> writing</c><00:14:30.839><c> ideas</c><00:14:31.200><c> dot</c><00:14:31.920><c> the</c><00:14:32.040><c> name</c><00:14:32.220><c> of</c><00:14:32.339><c> the</c>

00:14:32.449 --> 00:14:32.459 align:start position:0%
by writing ideas dot the name of the
 

00:14:32.459 --> 00:14:35.150 align:start position:0%
by writing ideas dot the name of the
variable<00:14:32.760><c> so</c><00:14:33.420><c> what</c><00:14:33.600><c> we</c><00:14:33.779><c> did</c><00:14:33.959><c> was</c><00:14:34.260><c> override</c>

00:14:35.150 --> 00:14:35.160 align:start position:0%
variable so what we did was override
 

00:14:35.160 --> 00:14:36.829 align:start position:0%
variable so what we did was override
these<00:14:35.639><c> IDs</c>

00:14:36.829 --> 00:14:36.839 align:start position:0%
these IDs
 

00:14:36.839 --> 00:14:39.410 align:start position:0%
these IDs
objects<00:14:37.620><c> set</c><00:14:37.980><c> attributes</c><00:14:38.579><c> and</c><00:14:38.760><c> get</c><00:14:38.880><c> attribute</c>

00:14:39.410 --> 00:14:39.420 align:start position:0%
objects set attributes and get attribute
 

00:14:39.420 --> 00:14:41.629 align:start position:0%
objects set attributes and get attribute
methods<00:14:39.959><c> so</c><00:14:40.500><c> when</c><00:14:40.740><c> we</c><00:14:40.920><c> want</c><00:14:41.100><c> to</c><00:14:41.220><c> get</c><00:14:41.459><c> an</c>

00:14:41.629 --> 00:14:41.639 align:start position:0%
methods so when we want to get an
 

00:14:41.639 --> 00:14:44.090 align:start position:0%
methods so when we want to get an
attribute<00:14:42.120><c> we</c><00:14:42.839><c> are</c><00:14:43.139><c> actually</c><00:14:43.260><c> calculating</c>

00:14:44.090 --> 00:14:44.100 align:start position:0%
attribute we are actually calculating
 

00:14:44.100 --> 00:14:46.910 align:start position:0%
attribute we are actually calculating
the<00:14:44.459><c> value</c><00:14:44.639><c> of</c><00:14:45.060><c> that</c><00:14:45.180><c> attribute</c><00:14:45.920><c> inside</c>

00:14:46.910 --> 00:14:46.920 align:start position:0%
the value of that attribute inside
 

00:14:46.920 --> 00:14:49.730 align:start position:0%
the value of that attribute inside
during<00:14:47.339><c> the</c><00:14:47.579><c> hinge</c><00:14:48.300><c> run</c><00:14:48.420><c> and</c><00:14:49.019><c> we</c><00:14:49.199><c> want</c><00:14:49.440><c> to</c>

00:14:49.730 --> 00:14:49.740 align:start position:0%
during the hinge run and we want to
 

00:14:49.740 --> 00:14:52.850 align:start position:0%
during the hinge run and we want to
modify<00:14:50.459><c> a</c><00:14:50.699><c> local</c><00:14:50.880><c> variable</c><00:14:51.420><c> we</c><00:14:52.019><c> calculate</c><00:14:52.560><c> its</c>

00:14:52.850 --> 00:14:52.860 align:start position:0%
modify a local variable we calculate its
 

00:14:52.860 --> 00:14:54.769 align:start position:0%
modify a local variable we calculate its
address<00:14:52.980><c> and</c><00:14:53.459><c> insert</c><00:14:53.820><c> the</c><00:14:54.060><c> new</c><00:14:54.240><c> value</c><00:14:54.420><c> into</c>

00:14:54.769 --> 00:14:54.779 align:start position:0%
address and insert the new value into
 

00:14:54.779 --> 00:14:57.530 align:start position:0%
address and insert the new value into
memory<00:14:55.199><c> well</c><00:14:55.860><c> the</c><00:14:56.399><c> next</c><00:14:56.519><c> step</c><00:14:56.760><c> was</c><00:14:57.000><c> execution</c>

00:14:57.530 --> 00:14:57.540 align:start position:0%
memory well the next step was execution
 

00:14:57.540 --> 00:15:01.129 align:start position:0%
memory well the next step was execution
Scopes<00:14:58.160><c> in</c><00:14:59.160><c> order</c><00:14:59.339><c> to</c><00:14:59.519><c> implement</c><00:15:00.480><c> this</c><00:15:00.720><c> we</c>

00:15:01.129 --> 00:15:01.139 align:start position:0%
Scopes in order to implement this we
 

00:15:01.139 --> 00:15:04.069 align:start position:0%
Scopes in order to implement this we
took<00:15:01.560><c> advantage</c><00:15:02.160><c> of</c><00:15:02.639><c> the</c><00:15:02.940><c> local</c><00:15:03.240><c> python</c>

00:15:04.069 --> 00:15:04.079 align:start position:0%
took advantage of the local python
 

00:15:04.079 --> 00:15:06.650 align:start position:0%
took advantage of the local python
variables<00:15:04.560><c> so</c><00:15:04.920><c> what</c><00:15:05.100><c> we</c><00:15:05.279><c> did</c><00:15:05.399><c> was</c><00:15:05.699><c> take</c><00:15:06.360><c> our</c>

00:15:06.650 --> 00:15:06.660 align:start position:0%
variables so what we did was take our
 

00:15:06.660 --> 00:15:08.990 align:start position:0%
variables so what we did was take our
execution<00:15:07.139><c> scope</c><00:15:07.560><c> variables</c><00:15:08.040><c> convert</c><00:15:08.880><c> them</c>

00:15:08.990 --> 00:15:09.000 align:start position:0%
execution scope variables convert them
 

00:15:09.000 --> 00:15:10.910 align:start position:0%
execution scope variables convert them
to<00:15:09.180><c> python</c><00:15:09.600><c> objects</c><00:15:10.019><c> and</c><00:15:10.199><c> inject</c><00:15:10.500><c> them</c><00:15:10.680><c> into</c>

00:15:10.910 --> 00:15:10.920 align:start position:0%
to python objects and inject them into
 

00:15:10.920 --> 00:15:14.269 align:start position:0%
to python objects and inject them into
the<00:15:11.160><c> python</c><00:15:11.639><c> locals</c><00:15:12.120><c> and</c><00:15:12.720><c> when</c><00:15:12.959><c> the</c><00:15:13.260><c> hint</c><00:15:14.100><c> was</c>

00:15:14.269 --> 00:15:14.279 align:start position:0%
the python locals and when the hint was
 

00:15:14.279 --> 00:15:16.730 align:start position:0%
the python locals and when the hint was
done<00:15:14.459><c> running</c><00:15:14.699><c> we</c><00:15:15.120><c> extracted</c><00:15:15.660><c> the</c><00:15:16.139><c> python</c>

00:15:16.730 --> 00:15:16.740 align:start position:0%
done running we extracted the python
 

00:15:16.740 --> 00:15:18.829 align:start position:0%
done running we extracted the python
objects<00:15:17.279><c> from</c><00:15:17.519><c> the</c><00:15:17.699><c> locals</c><00:15:18.180><c> and</c><00:15:18.360><c> inserted</c>

00:15:18.829 --> 00:15:18.839 align:start position:0%
objects from the locals and inserted
 

00:15:18.839 --> 00:15:21.470 align:start position:0%
objects from the locals and inserted
them<00:15:19.019><c> into</c><00:15:19.500><c> our</c><00:15:19.800><c> execution</c><00:15:20.279><c> Scopes</c><00:15:20.699><c> this</c><00:15:21.360><c> is</c>

00:15:21.470 --> 00:15:21.480 align:start position:0%
them into our execution Scopes this is
 

00:15:21.480 --> 00:15:23.449 align:start position:0%
them into our execution Scopes this is
how<00:15:21.720><c> executing</c><00:15:22.380><c> a</c><00:15:22.500><c> hint</c><00:15:22.680><c> currently</c><00:15:23.160><c> looks</c>

00:15:23.449 --> 00:15:23.459 align:start position:0%
how executing a hint currently looks
 

00:15:23.459 --> 00:15:26.090 align:start position:0%
how executing a hint currently looks
like<00:15:23.579><c> we</c><00:15:24.240><c> first</c><00:15:24.540><c> take</c><00:15:25.139><c> this</c><00:15:25.380><c> to</c><00:15:25.620><c> our</c><00:15:25.920><c> local</c>

00:15:26.090 --> 00:15:26.100 align:start position:0%
like we first take this to our local
 

00:15:26.100 --> 00:15:27.949 align:start position:0%
like we first take this to our local
variables<00:15:26.639><c> and</c><00:15:26.820><c> inject</c><00:15:27.120><c> them</c><00:15:27.300><c> into</c><00:15:27.480><c> python</c>

00:15:27.949 --> 00:15:27.959 align:start position:0%
variables and inject them into python
 

00:15:27.959 --> 00:15:30.650 align:start position:0%
variables and inject them into python
locals<00:15:28.500><c> we</c><00:15:28.920><c> create</c><00:15:29.100><c> these</c><00:15:29.459><c> Pi</c><00:15:29.760><c> classes</c><00:15:30.240><c> that</c>

00:15:30.650 --> 00:15:30.660 align:start position:0%
locals we create these Pi classes that
 

00:15:30.660 --> 00:15:33.470 align:start position:0%
locals we create these Pi classes that
will<00:15:30.839><c> allow</c><00:15:31.320><c> hints</c><00:15:32.160><c> to</c><00:15:32.220><c> interact</c><00:15:32.699><c> with</c><00:15:32.880><c> our</c><00:15:33.060><c> VM</c>

00:15:33.470 --> 00:15:33.480 align:start position:0%
will allow hints to interact with our VM
 

00:15:33.480 --> 00:15:36.889 align:start position:0%
will allow hints to interact with our VM
and<00:15:34.199><c> insert</c><00:15:34.500><c> them</c><00:15:34.680><c> into</c><00:15:34.860><c> globals</c><00:15:35.519><c> and</c><00:15:36.120><c> then</c><00:15:36.300><c> we</c>

00:15:36.889 --> 00:15:36.899 align:start position:0%
and insert them into globals and then we
 

00:15:36.899 --> 00:15:39.829 align:start position:0%
and insert them into globals and then we
again<00:15:37.560><c> retrieve</c><00:15:38.519><c> these</c><00:15:38.760><c> values</c><00:15:39.120><c> from</c><00:15:39.360><c> python</c>

00:15:39.829 --> 00:15:39.839 align:start position:0%
again retrieve these values from python
 

00:15:39.839 --> 00:15:42.590 align:start position:0%
again retrieve these values from python
locals<00:15:40.380><c> and</c><00:15:40.620><c> update</c><00:15:40.920><c> our</c><00:15:41.160><c> execution</c><00:15:41.579><c> scopes</c>

00:15:42.590 --> 00:15:42.600 align:start position:0%
locals and update our execution scopes
 

00:15:42.600 --> 00:15:46.129 align:start position:0%
locals and update our execution scopes
but<00:15:43.079><c> well</c><00:15:43.279><c> how</c><00:15:44.279><c> does</c><00:15:44.459><c> this</c><00:15:44.760><c> all</c><00:15:44.940><c> look</c><00:15:45.180><c> like</c>

00:15:46.129 --> 00:15:46.139 align:start position:0%
but well how does this all look like
 

00:15:46.139 --> 00:15:49.009 align:start position:0%
but well how does this all look like
we<00:15:46.920><c> we</c><00:15:47.579><c> created</c><00:15:47.880><c> a</c><00:15:48.120><c> separate</c><00:15:48.420><c> grade</c><00:15:48.600><c> for</c><00:15:48.839><c> this</c>

00:15:49.009 --> 00:15:49.019 align:start position:0%
we we created a separate grade for this
 

00:15:49.019 --> 00:15:51.350 align:start position:0%
we we created a separate grade for this
called<00:15:49.320><c> Cairo</c><00:15:49.800><c> RS</c><00:15:50.040><c> Pi</c><00:15:50.399><c> in</c><00:15:51.000><c> which</c><00:15:51.120><c> we</c>

00:15:51.350 --> 00:15:51.360 align:start position:0%
called Cairo RS Pi in which we
 

00:15:51.360 --> 00:15:54.949 align:start position:0%
called Cairo RS Pi in which we
instantiate<00:15:51.899><c> the</c><00:15:52.079><c> VM</c><00:15:52.440><c> and</c><00:15:53.220><c> we</c><00:15:53.579><c> execute</c><00:15:54.360><c> the</c>

00:15:54.949 --> 00:15:54.959 align:start position:0%
instantiate the VM and we execute the
 

00:15:54.959 --> 00:15:57.490 align:start position:0%
instantiate the VM and we execute the
Cairo<00:15:55.560><c> methods</c><00:15:55.920><c> debians</c><00:15:56.639><c> methods</c><00:15:57.060><c> such</c><00:15:57.300><c> as</c>

00:15:57.490 --> 00:15:57.500 align:start position:0%
Cairo methods debians methods such as
 

00:15:57.500 --> 00:16:00.710 align:start position:0%
Cairo methods debians methods such as
initialization<00:15:58.500><c> running</c><00:15:59.040><c> instructions</c><00:15:59.820><c> and</c>

00:16:00.710 --> 00:16:00.720 align:start position:0%
initialization running instructions and
 

00:16:00.720 --> 00:16:03.829 align:start position:0%
initialization running instructions and
when<00:16:01.019><c> a</c><00:16:01.260><c> hint</c><00:16:01.440><c> cannot</c><00:16:01.800><c> be</c><00:16:01.920><c> run</c><00:16:02.100><c> by</c><00:16:02.339><c> our</c><00:16:02.519><c> VM</c><00:16:02.940><c> we</c>

00:16:03.829 --> 00:16:03.839 align:start position:0%
when a hint cannot be run by our VM we
 

00:16:03.839 --> 00:16:07.269 align:start position:0%
when a hint cannot be run by our VM we
fall<00:16:04.079><c> back</c><00:16:04.320><c> to</c><00:16:04.760><c> this</c><00:16:05.760><c> python</c><00:16:06.540><c> hint</c><00:16:06.779><c> execution</c>

00:16:07.269 --> 00:16:07.279 align:start position:0%
fall back to this python hint execution
 

00:16:07.279 --> 00:16:11.150 align:start position:0%
fall back to this python hint execution
so<00:16:08.279><c> with</c><00:16:09.000><c> this</c><00:16:09.899><c> approach</c><00:16:10.260><c> we</c><00:16:10.560><c> were</c><00:16:10.740><c> able</c><00:16:11.040><c> to</c>

00:16:11.150 --> 00:16:11.160 align:start position:0%
so with this approach we were able to
 

00:16:11.160 --> 00:16:13.430 align:start position:0%
so with this approach we were able to
maintain<00:16:11.880><c> the</c><00:16:12.180><c> rest</c><00:16:12.300><c> functions</c><00:16:12.899><c> that</c><00:16:13.260><c> we</c>

00:16:13.430 --> 00:16:13.440 align:start position:0%
maintain the rest functions that we
 

00:16:13.440 --> 00:16:16.310 align:start position:0%
maintain the rest functions that we
created<00:16:13.800><c> in</c><00:16:14.160><c> the</c><00:16:14.279><c> first</c><00:16:14.399><c> iteration</c><00:16:15.019><c> and</c><00:16:16.019><c> also</c>

00:16:16.310 --> 00:16:16.320 align:start position:0%
created in the first iteration and also
 

00:16:16.320 --> 00:16:18.889 align:start position:0%
created in the first iteration and also
add<00:16:16.680><c> this</c><00:16:16.860><c> python</c><00:16:17.220><c> integration</c><00:16:17.699><c> so</c><00:16:18.540><c> when</c><00:16:18.779><c> you</c>

00:16:18.889 --> 00:16:18.899 align:start position:0%
add this python integration so when you
 

00:16:18.899 --> 00:16:20.389 align:start position:0%
add this python integration so when you
use<00:16:19.079><c> the</c><00:16:19.199><c> common</c><00:16:19.380><c> Library</c><00:16:19.620><c> hints</c><00:16:20.160><c> you</c><00:16:20.339><c> can</c>

00:16:20.389 --> 00:16:20.399 align:start position:0%
use the common Library hints you can
 

00:16:20.399 --> 00:16:21.829 align:start position:0%
use the common Library hints you can
still<00:16:20.579><c> enjoy</c><00:16:20.880><c> the</c><00:16:21.060><c> boosting</c><00:16:21.420><c> performance</c>

00:16:21.829 --> 00:16:21.839 align:start position:0%
still enjoy the boosting performance
 

00:16:21.839 --> 00:16:24.590 align:start position:0%
still enjoy the boosting performance
from<00:16:22.380><c> the</c><00:16:22.680><c> plus</c><00:16:23.040><c> native</c><00:16:23.519><c> functions</c><00:16:24.000><c> okay</c>

00:16:24.590 --> 00:16:24.600 align:start position:0%
from the plus native functions okay
 

00:16:24.600 --> 00:16:28.970 align:start position:0%
from the plus native functions okay
awesome<00:16:24.839><c> thanks</c><00:16:25.260><c> okay</c>

00:16:28.970 --> 00:16:28.980 align:start position:0%
 
 

00:16:28.980 --> 00:16:29.949 align:start position:0%
 
um

00:16:29.949 --> 00:16:29.959 align:start position:0%
um
 

00:16:29.959 --> 00:16:33.889 align:start position:0%
um
well<00:16:30.959><c> in</c><00:16:31.440><c> the</c><00:16:31.860><c> name</c><00:16:32.040><c> of</c><00:16:32.220><c> our</c><00:16:32.760><c> talk</c><00:16:33.120><c> is</c><00:16:33.540><c> how</c><00:16:33.779><c> we</c>

00:16:33.889 --> 00:16:33.899 align:start position:0%
well in the name of our talk is how we
 

00:16:33.899 --> 00:16:35.810 align:start position:0%
well in the name of our talk is how we
improve<00:16:34.199><c> the</c><00:16:34.320><c> performance</c><00:16:34.740><c> of</c><00:16:35.459><c> private</c>

00:16:35.810 --> 00:16:35.820 align:start position:0%
improve the performance of private
 

00:16:35.820 --> 00:16:38.689 align:start position:0%
improve the performance of private
computation<00:16:36.240><c> so</c><00:16:36.660><c> showing</c><00:16:37.380><c> some</c><00:16:38.160><c> Benchmark</c>

00:16:38.689 --> 00:16:38.699 align:start position:0%
computation so showing some Benchmark
 

00:16:38.699 --> 00:16:42.650 align:start position:0%
computation so showing some Benchmark
with<00:16:39.420><c> some</c><00:16:39.720><c> must</c><00:16:40.279><c> and</c><00:16:41.279><c> here</c><00:16:41.519><c> we</c><00:16:41.699><c> can</c><00:16:41.880><c> see</c><00:16:42.120><c> how</c>

00:16:42.650 --> 00:16:42.660 align:start position:0%
with some must and here we can see how
 

00:16:42.660 --> 00:16:47.269 align:start position:0%
with some must and here we can see how
our<00:16:42.899><c> implementation</c><00:16:43.620><c> of</c><00:16:43.880><c> Cairo</c><00:16:44.880><c> Cairo</c><00:16:45.360><c> RS</c><00:16:45.600><c> is</c>

00:16:47.269 --> 00:16:47.279 align:start position:0%
our implementation of Cairo Cairo RS is
 

00:16:47.279 --> 00:16:52.790 align:start position:0%
our implementation of Cairo Cairo RS is
um about<00:16:47.839><c> uh</c><00:16:49.279><c> 100</c><00:16:50.279><c> 100</c><00:16:50.820><c> times</c><00:16:51.500><c> faster</c><00:16:52.500><c> than</c>

00:16:52.790 --> 00:16:52.800 align:start position:0%
um about uh 100 100 times faster than
 

00:16:52.800 --> 00:16:55.610 align:start position:0%
um about uh 100 100 times faster than
the<00:16:53.519><c> Caribbean</c><00:16:54.180><c> using</c><00:16:54.839><c> the</c><00:16:54.959><c> C</c><00:16:55.079><c> python</c>

00:16:55.610 --> 00:16:55.620 align:start position:0%
the Caribbean using the C python
 

00:16:55.620 --> 00:16:59.689 align:start position:0%
the Caribbean using the C python
interpreter<00:16:56.579><c> and</c><00:16:57.300><c> about</c><00:16:57.620><c> 20</c><00:16:58.620><c> times</c><00:16:58.980><c> faster</c>

00:16:59.689 --> 00:16:59.699 align:start position:0%
interpreter and about 20 times faster
 

00:16:59.699 --> 00:17:02.210 align:start position:0%
interpreter and about 20 times faster
than<00:17:00.360><c> the</c><00:17:00.600><c> Caribbean</c><00:17:01.139><c> using</c><00:17:01.560><c> the</c><00:17:01.740><c> Pi</c><00:17:01.980><c> Pi</c>

00:17:02.210 --> 00:17:02.220 align:start position:0%
than the Caribbean using the Pi Pi
 

00:17:02.220 --> 00:17:05.150 align:start position:0%
than the Caribbean using the Pi Pi
interpreter<00:17:02.880><c> and</c><00:17:03.660><c> the</c><00:17:03.959><c> coolest</c><00:17:04.319><c> thing</c><00:17:04.439><c> is</c>

00:17:05.150 --> 00:17:05.160 align:start position:0%
interpreter and the coolest thing is
 

00:17:05.160 --> 00:17:06.289 align:start position:0%
interpreter and the coolest thing is
that

00:17:06.289 --> 00:17:06.299 align:start position:0%
that
 

00:17:06.299 --> 00:17:09.949 align:start position:0%
that
the<00:17:06.900><c> our</c><00:17:07.140><c> implementation</c><00:17:07.860><c> is</c><00:17:08.400><c> 100</c><00:17:09.360><c> times</c>

00:17:09.949 --> 00:17:09.959 align:start position:0%
the our implementation is 100 times
 

00:17:09.959 --> 00:17:14.329 align:start position:0%
the our implementation is 100 times
faster<00:17:10.919><c> than</c><00:17:11.400><c> a</c><00:17:12.120><c> car</c><00:17:12.360><c> VM</c><00:17:12.720><c> using</c><00:17:13.020><c> CC</c><00:17:13.199><c> python</c><00:17:13.620><c> but</c>

00:17:14.329 --> 00:17:14.339 align:start position:0%
faster than a car VM using CC python but
 

00:17:14.339 --> 00:17:18.590 align:start position:0%
faster than a car VM using CC python but
also<00:17:14.760><c> consumes</c><00:17:15.360><c> half</c><00:17:15.780><c> of</c><00:17:15.959><c> the</c><00:17:16.140><c> memory</c><00:17:16.380><c> and</c><00:17:17.760><c> our</c>

00:17:18.590 --> 00:17:18.600 align:start position:0%
also consumes half of the memory and our
 

00:17:18.600 --> 00:17:22.370 align:start position:0%
also consumes half of the memory and our
implementation<00:17:19.439><c> is</c><00:17:20.120><c> 20</c><00:17:21.120><c> times</c><00:17:21.419><c> faster</c><00:17:21.959><c> than</c>

00:17:22.370 --> 00:17:22.380 align:start position:0%
implementation is 20 times faster than
 

00:17:22.380 --> 00:17:26.090 align:start position:0%
implementation is 20 times faster than
the<00:17:22.860><c> Pi</c><00:17:22.980><c> Pi</c><00:17:23.339><c> version</c><00:17:23.520><c> but</c><00:17:24.179><c> consumes</c><00:17:24.919><c> 12th</c><00:17:25.919><c> time</c>

00:17:26.090 --> 00:17:26.100 align:start position:0%
the Pi Pi version but consumes 12th time
 

00:17:26.100 --> 00:17:31.190 align:start position:0%
the Pi Pi version but consumes 12th time
less<00:17:27.059><c> memory</c><00:17:27.600><c> than</c><00:17:28.439><c> Pi</c><00:17:29.040><c> Pi</c><00:17:29.340><c> so</c><00:17:30.179><c> yeah</c><00:17:31.020><c> it's</c>

00:17:31.190 --> 00:17:31.200 align:start position:0%
less memory than Pi Pi so yeah it's
 

00:17:31.200 --> 00:17:34.669 align:start position:0%
less memory than Pi Pi so yeah it's
really<00:17:31.500><c> cool</c><00:17:31.760><c> and</c><00:17:32.760><c> yeah</c><00:17:33.299><c> okay</c><00:17:33.600><c> I</c><00:17:34.200><c> hope</c><00:17:34.380><c> that</c>

00:17:34.669 --> 00:17:34.679 align:start position:0%
really cool and yeah okay I hope that
 

00:17:34.679 --> 00:17:37.850 align:start position:0%
really cool and yeah okay I hope that
standard<00:17:35.340><c> development</c><00:17:35.880><c> developers</c><00:17:36.860><c> Embrace</c>

00:17:37.850 --> 00:17:37.860 align:start position:0%
standard development developers Embrace
 

00:17:37.860 --> 00:17:42.350 align:start position:0%
standard development developers Embrace
a<00:17:38.820><c> Kairos</c><00:17:39.660><c> and</c><00:17:40.559><c> that</c><00:17:40.919><c> helps</c><00:17:41.340><c> building</c><00:17:41.940><c> and</c>

00:17:42.350 --> 00:17:42.360 align:start position:0%
a Kairos and that helps building and
 

00:17:42.360 --> 00:17:45.289 align:start position:0%
a Kairos and that helps building and
accelerating<00:17:42.900><c> the</c><00:17:43.380><c> ecosystem</c><00:17:43.860><c> so</c><00:17:44.400><c> yeah</c>

00:17:45.289 --> 00:17:45.299 align:start position:0%
accelerating the ecosystem so yeah
 

00:17:45.299 --> 00:17:48.110 align:start position:0%
accelerating the ecosystem so yeah
that's<00:17:45.840><c> it</c><00:17:46.160><c> thanks</c><00:17:47.160><c> for</c><00:17:47.580><c> being</c><00:17:47.880><c> here</c>

00:17:48.110 --> 00:17:48.120 align:start position:0%
that's it thanks for being here
 

00:17:48.120 --> 00:17:50.870 align:start position:0%
that's it thanks for being here
questions<00:17:48.780><c> we</c><00:17:49.740><c> still</c><00:17:49.919><c> have</c><00:17:50.160><c> time</c><00:17:50.400><c> for</c><00:17:50.700><c> some</c>

00:17:50.870 --> 00:17:50.880 align:start position:0%
questions we still have time for some
 

00:17:50.880 --> 00:17:54.529 align:start position:0%
questions we still have time for some
questions<00:17:51.299><c> so</c><00:17:52.200><c> we</c><00:17:53.039><c> have</c><00:17:53.160><c> our</c><00:17:53.280><c> Volunteers</c><00:17:54.000><c> in</c>

00:17:54.529 --> 00:17:54.539 align:start position:0%
questions so we have our Volunteers in
 

00:17:54.539 --> 00:17:55.430 align:start position:0%
questions so we have our Volunteers in
the<00:17:54.660><c> room</c>

00:17:55.430 --> 00:17:55.440 align:start position:0%
the room
 

00:17:55.440 --> 00:17:57.110 align:start position:0%
the room
just<00:17:55.980><c> raise</c><00:17:56.160><c> your</c><00:17:56.400><c> hand</c><00:17:56.520><c> if</c><00:17:56.700><c> you</c><00:17:56.880><c> have</c><00:17:56.880><c> any</c>

00:17:57.110 --> 00:17:57.120 align:start position:0%
just raise your hand if you have any
 

00:17:57.120 --> 00:17:59.210 align:start position:0%
just raise your hand if you have any
questions<00:17:57.679><c> compliments</c><00:17:58.679><c> for</c><00:17:58.919><c> the</c><00:17:59.100><c> great</c>

00:17:59.210 --> 00:17:59.220 align:start position:0%
questions compliments for the great
 

00:17:59.220 --> 00:18:02.330 align:start position:0%
questions compliments for the great
presentation

00:18:02.330 --> 00:18:02.340 align:start position:0%
 
 

00:18:02.340 --> 00:18:03.770 align:start position:0%
 
um<00:18:02.400><c> hello</c>

00:18:03.770 --> 00:18:03.780 align:start position:0%
um hello
 

00:18:03.780 --> 00:18:05.270 align:start position:0%
um hello
hello

00:18:05.270 --> 00:18:05.280 align:start position:0%
hello
 

00:18:05.280 --> 00:18:06.890 align:start position:0%
hello
um<00:18:05.400><c> well</c><00:18:05.520><c> I've</c><00:18:05.760><c> seen</c><00:18:05.940><c> you</c><00:18:06.120><c> before</c>

00:18:06.890 --> 00:18:06.900 align:start position:0%
um well I've seen you before
 

00:18:06.900 --> 00:18:10.250 align:start position:0%
um well I've seen you before
um<00:18:07.160><c> my</c><00:18:08.160><c> question</c><00:18:08.220><c> is</c><00:18:08.520><c> how</c><00:18:09.059><c> stable</c><00:18:09.360><c> is</c><00:18:09.600><c> this</c><00:18:09.780><c> is</c>

00:18:10.250 --> 00:18:10.260 align:start position:0%
um my question is how stable is this is
 

00:18:10.260 --> 00:18:13.970 align:start position:0%
um my question is how stable is this is
this<00:18:10.440><c> available</c><00:18:10.980><c> to</c><00:18:11.340><c> use</c><00:18:11.520><c> right</c><00:18:11.880><c> now</c><00:18:12.120><c> uh</c><00:18:12.780><c> or</c>

00:18:13.970 --> 00:18:13.980 align:start position:0%
this available to use right now uh or
 

00:18:13.980 --> 00:18:16.430 align:start position:0%
this available to use right now uh or
if<00:18:14.340><c> it's</c><00:18:14.580><c> available</c><00:18:14.820><c> if</c><00:18:15.539><c> tuition</c><00:18:15.900><c> right</c><00:18:16.260><c> now</c>

00:18:16.430 --> 00:18:16.440 align:start position:0%
if it's available if tuition right now
 

00:18:16.440 --> 00:18:19.570 align:start position:0%
if it's available if tuition right now
yeah<00:18:16.679><c> yes</c><00:18:17.039><c> if</c><00:18:17.400><c> we</c><00:18:17.580><c> are</c><00:18:17.700><c> still</c><00:18:18.240><c> a</c>

00:18:19.570 --> 00:18:19.580 align:start position:0%
yeah yes if we are still a
 

00:18:19.580 --> 00:18:21.950 align:start position:0%
yeah yes if we are still a
developing<00:18:20.580><c> the</c><00:18:20.820><c> integration</c><00:18:21.240><c> with</c><00:18:21.480><c> python</c>

00:18:21.950 --> 00:18:21.960 align:start position:0%
developing the integration with python
 

00:18:21.960 --> 00:18:25.370 align:start position:0%
developing the integration with python
but<00:18:22.440><c> yes</c><00:18:22.679><c> Kairos</c><00:18:23.220><c> is</c><00:18:23.820><c> a</c><00:18:24.360><c> is</c><00:18:24.660><c> open</c><00:18:24.840><c> source</c><00:18:25.260><c> and</c>

00:18:25.370 --> 00:18:25.380 align:start position:0%
but yes Kairos is a is open source and
 

00:18:25.380 --> 00:18:28.549 align:start position:0%
but yes Kairos is a is open source and
you<00:18:25.500><c> can</c><00:18:25.620><c> use</c><00:18:25.740><c> it</c><00:18:26.240><c> but</c><00:18:27.240><c> we</c><00:18:27.539><c> are</c><00:18:27.660><c> finishing</c><00:18:28.200><c> I</c>

00:18:28.549 --> 00:18:28.559 align:start position:0%
you can use it but we are finishing I
 

00:18:28.559 --> 00:18:31.909 align:start position:0%
you can use it but we are finishing I
think<00:18:28.740><c> in</c><00:18:29.039><c> maybe</c><00:18:29.640><c> two</c><00:18:30.120><c> weeks</c><00:18:30.500><c> and</c><00:18:31.500><c> they</c>

00:18:31.909 --> 00:18:31.919 align:start position:0%
think in maybe two weeks and they
 

00:18:31.919 --> 00:18:34.430 align:start position:0%
think in maybe two weeks and they
implement<00:18:32.220><c> the</c><00:18:32.580><c> integration</c><00:18:32.940><c> with</c><00:18:33.240><c> python</c><00:18:33.720><c> so</c>

00:18:34.430 --> 00:18:34.440 align:start position:0%
implement the integration with python so
 

00:18:34.440 --> 00:18:36.650 align:start position:0%
implement the integration with python so
after<00:18:34.740><c> that</c><00:18:35.039><c> we</c><00:18:35.340><c> are</c><00:18:35.520><c> going</c><00:18:35.640><c> to</c><00:18:35.820><c> start</c><00:18:36.120><c> a</c>

00:18:36.650 --> 00:18:36.660 align:start position:0%
after that we are going to start a
 

00:18:36.660 --> 00:18:40.549 align:start position:0%
after that we are going to start a
testing<00:18:37.260><c> it</c><00:18:37.440><c> and</c><00:18:37.919><c> making</c><00:18:38.640><c> a</c><00:18:38.880><c> faster</c><00:18:39.260><c> so</c><00:18:40.260><c> we</c><00:18:40.440><c> can</c>

00:18:40.549 --> 00:18:40.559 align:start position:0%
testing it and making a faster so we can
 

00:18:40.559 --> 00:18:43.789 align:start position:0%
testing it and making a faster so we can
be<00:18:40.740><c> sure</c><00:18:40.919><c> that</c><00:18:41.100><c> everything</c><00:18:41.220><c> is</c><00:18:41.640><c> okay</c><00:18:41.820><c> and</c><00:18:42.539><c> then</c>

00:18:43.789 --> 00:18:43.799 align:start position:0%
be sure that everything is okay and then
 

00:18:43.799 --> 00:18:46.669 align:start position:0%
be sure that everything is okay and then
where<00:18:44.400><c> it</c><00:18:45.000><c> comes</c><00:18:45.299><c> to</c><00:18:45.480><c> be</c><00:18:45.660><c> start</c><00:18:45.960><c> using</c><00:18:46.320><c> it</c><00:18:46.500><c> in</c>

00:18:46.669 --> 00:18:46.679 align:start position:0%
where it comes to be start using it in
 

00:18:46.679 --> 00:18:51.470 align:start position:0%
where it comes to be start using it in
production<00:18:46.980><c> so</c><00:18:47.340><c> we</c><00:18:48.059><c> are</c><00:18:48.240><c> really</c><00:18:48.419><c> excited</c>

00:18:51.470 --> 00:18:51.480 align:start position:0%
 
 

00:18:51.480 --> 00:18:53.450 align:start position:0%
 
we<00:18:51.840><c> let</c><00:18:52.080><c> them</c><00:18:52.260><c> speechless</c><00:18:52.740><c> about</c><00:18:53.160><c> the</c>

00:18:53.450 --> 00:18:53.460 align:start position:0%
we let them speechless about the
 

00:18:53.460 --> 00:18:56.029 align:start position:0%
we let them speechless about the
representation<00:18:54.140><c> well</c><00:18:55.140><c> maybe</c><00:18:55.440><c> big</c><00:18:55.740><c> round</c><00:18:55.860><c> of</c>

00:18:56.029 --> 00:18:56.039 align:start position:0%
representation well maybe big round of
 

00:18:56.039 --> 00:18:57.289 align:start position:0%
representation well maybe big round of
applause<00:18:56.340><c> thank</c><00:18:56.640><c> you</c><00:18:56.760><c> so</c><00:18:56.880><c> much</c><00:18:57.000><c> for</c><00:18:57.179><c> the</c>

00:18:57.289 --> 00:18:57.299 align:start position:0%
applause thank you so much for the
 

00:18:57.299 --> 00:18:59.900 align:start position:0%
applause thank you so much for the
weekend<00:18:57.419><c> Herman</c>

